一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - 關于C語言一維數組算法問題詳解

關于C語言一維數組算法問題詳解

2022-02-23 14:17_Daisy_ C/C++

數組是以順序格式排列的均勻數據的集合,在C語言中學習數組的概念非常重要,因為它是基本的數據結構,這篇文章主要給大家介紹了關于C語言一維數組算法問題的相關資料,需要的朋友可以參考下

問題1:將數組中的數逆序存放

本題要求編寫程序,將給定的n個整數存入數組中,將數組中的這n個數逆序存放, 再按順序輸出數組中的元素。

算法描述:1.向數組a中輸入元素;

2.定義一個新數組new,將數組a中的元素倒序存放;

3.將數組b正序輸出,注意結尾無空格的格式問題。

代碼實現 :

#include <stdio.h>
int main()
{
  int n;
  scanf("%d",&n);
  int i,arr[n];
  for(i = 0;i < n;i++)
  {
      scanf("%d",&arr[i]);
  }
  
  int new[n],j;					//定義一個數組new用來存入數組a的逆順序
  for(int j = 0;j < n;j++)
  {
      new[j] = arr[n-1-i];		//倒序存入
  }
  for(int k = 0;k < n - 1;k++)	//數組中最后一個元素不一起輸入,保持結尾無空格
  {
      printf("%d ",new[k]);		
  }
  	printf("%d",new[n-1]);		//輸出最后一個元素
  return 0;
}

運行結果:

關于C語言一維數組算法問題詳解
?

 

問題2:求數組中最大值及其下標

本題要求編寫程序,找出給定的n個數中的最大值及其對應的最小下標(下標從0開始)。 輸入格式: 輸入在第一行中給出一個正整數n(1<n≤10)。第二行輸入n個整數,用空格分開。 輸出格式: 在一行中輸出最大值及最大值的最小下標,中間用一個空格分開。

算法描述:1.向數組中存放元素;

2.把數組中第一個元素先定義一個變量保存住;

3.遍歷數組,如果比保存第一個元素的變量大,那就賦值給那個變量,直到變量值變為最大;

4.定義一個變量用來記錄最大值的下標。

代碼實現:

#include <stdio.h>
int main()
{
  int n;
  scanf("%d",&n);
  int arr[n],i;
  for(i = 0;i < n;i++)
  {
      scanf("%d",&arr[i]);
  }
  
  int max = arr[0];               //定義一個變量保存數組第一個元素
  for(int j = 1;j < n;j++)
  {
      if(max < arr[j])            //如果小于就一直給m,直到找到最大值停
      {
          max = arr[j];       
      }
   }
  for(int num = 0;num < n;num++)  //記錄最大值下標操作
  {
      if(arr[num] == max)
      {
          printf("最大值為:%d\n其下標為:%d",max,num);
          break;
      }
  }
  return 0;
}

運行結果:

關于C語言一維數組算法問題詳解

 

問題3:找出不是兩個數組的共有元素

本題要求給定兩個整型數組,本題要求找出不是兩者共有的元素。

算法描述:1.分別定義兩數組并輸入值;

2.用數組a中元素對比數組b中元素,非共有值放入c中(此處可以用一個 標志變量flag,標志 是否有共有值);

3.用數組b中元素對比數組a中元素,重復“2”操作;

4.最后先輸出數組c中第一個元素,然后判斷元素是否與之前錄入元素

重復。

5.最后打印出來數組c中的元素,也就是非共有值,此處注意格式問題。

代碼實現:

#include <stdio.h>
int main()
{
  int n;                      
  scanf("%d",&n);
  int arr1[n],i;                      //定義第一個數組
  for(i = 0;i < n;i++)
  {
      scanf("%d",&arr1[i]);
  }
  
  int m;
  scanf("%d",&m);
  int arr2[m],j;                      //定義第二個數組
  for(j = 0;j < m;j++)
  {
      scanf("%d",&arr2[j]);
  }
  
  int k,rem[20] = {};                 //數組rem是用來記錄非公有值的
  for(i = 0;i < n;i++)
  {
      int flag = 0;                   //定義標志變量用來標志是否有非共有值
      for(j = 0;j < m;j++)        
      {
          if(arr1[i] == arr2[j])  //用數組1中元素對比數組2中元素,非共有值放入數組rem中
          {
              flag = 1;
          }
      }
      if(flag == 0)
      {
          rem[k] = arr1[i];
          k++;
      }
  }
  
  for(i = 0;i < m;i++)        //用數組2中元素對比數組1中元素,非共有值放入數組rem中
  {
      int flag = 0;
      for(j = 0;j < n;j++)
      {
          if(arr2[i] == arr1[j])
          {
              flag = 1;
          }
      }
      if(flag == 0)
      {
          rem[k] = arr2[i];
          k++;
      }
  }
  
  printf("非共有元素:%d",rem[0]);      //輸出rem中第一個元素
  for(i = 1;i < k;i++)
  {
      for(j = 0;j < i;j++)
      {
          if(rem[i] == rem[j])
          {
              break;
          }
      }
      if(j >= i)
      {
          printf(" %d",rem[i]);   //因為提前輸出第一個元素,所以后面要打一個空格再打元素,                                                                                         
                                  //結尾無空格的格式問題
      }
  }
  return 0;
}

運行結果:

關于C語言一維數組算法問題詳解

 

問題4:找出出現次數最多的數

本題要求統計一個整型序列中出現次數最多的整數及其出現次數。

輸入格式: 輸入在一行中給出序列中整數個數N(0<N≤1000),以及N個整數。數字間以空格分隔。

輸出格式: 在一行中輸出出現次數最多的整數及其出現次數,數字間以空格分隔。題目保證這樣的數字是唯一的

算法描述:1.定義兩個數組,一個用來存放元素,另一個用來當計數器,此數組注意需 要初始化;

2.在這個數組中找到重復的,然后把計數器數組賦值+1;

3.一直遍歷找到重復最多的,找到后把計數器數組元素賦值給變量max(也 就是出現次 數),計數器數組下標就是出現次數最多數的下標。

代碼實現:

#include <stdio.h>
int main()
{
  int n,arr[1000],cnt[1000] = {0};        //cnt為計數器數組,需要初始化
  int i,j,k,max = 0;
  scanf("%d",&n);
  for(i = 0;i < n;i++)
  {
      scanf("%d",&arr[i]);
  }
  
  for(i = 0;i < n;i++)
  {
      for(j = 0;j < n;j++)
      {
          if(arr[i] == arr[j])        //找到一樣的
          {
              cnt[i] = cnt[i] + 1;    //cnt[i]++
          }
      }
  }
  
  for(i = 0;i < n;i++)
  {
      if(max < cnt[i])            //一直遍歷直到找重復最多的
      {
          max = cnt[i];           //找到后賦值給max
          k = i;              //i就是重復最多的數的下標
      }
  }
  
  printf("出現次數最多的數字為:%d\n其出現次數為:%d",arr[k],max);  
  
  return 0;
}

運行結果:

關于C語言一維數組算法問題詳解

 

問題5:數組中插入數字并排序

本題要求給出n個元素的數組,從小到大排列,再輸入一個num,插入到數組中, 使得新數組依舊是從小到大的順序(用一個數組完成)。

算法描述:1.定義一個數組并存放元素,單獨記錄好倒數第二個元素;

2.輸入要插入的數字,注意可以考慮特殊情況,如果插入的數大于原本倒數 第二個數,就可以 直接插入賦值為最后一個元素;

3.再來考慮一般情況,遍歷數組,如果原本的數大于要插入的數,先保存住 原來的數字,然 后把插入的數放入到原來的數的位置;

4.插入之后,原本的數就到了后一位,需要把后一位的位置保存住,把原本 的數放到后一 位,再把位置賦上原本數的值;

5.最后遍歷輸出數組元素 。

代碼實現 :

#include <stdio.h>
int main()
{
  int n,i,j;
  scanf("%d",&n);
  int arr[n],t1,t2,num,end;
  for(i = 0;i < n;i++)
  {
      scanf("%d",&arr[i]);
  }
  scanf("%d",&num);           //輸入要插入的數字
  end = arr[n-1];             //保存倒數第二個元素
  
  if(num > end)               //考慮特殊情況,如果插入的數大于倒數第二個 
  {
      arr[n] = num;           //直接插入賦值
  }
  else
  {
      for(i = 0;i < n;i++)
      {
          if(arr[i] > num)    //如果原本的數大于插入的數
          {
              t1 = arr[i];    //先保存原來的數
              arr[i] = num;   //把插入的數放到原來數的位置
              for(j = i + 1;j <= n;j++)       //處理原來的數
              {
                  t2 = arr[j];            //原來的數到了后一位保存住
                  arr[j] = t1;            //把原來的數賦值給現在要存的這個位置上
                  t1 = t2;
              }
              break;
          }
      }
  }
  for(i = 0;i <= n;i++)               //注意這里i<=n,因為多插入了一個數字
  {
      printf("%d ",arr[i]);
  }
  return 0;
}

運行結果:

關于C語言一維數組算法問題詳解

關于C語言一維數組算法問題詳解

 

問題6:數組循環右移問題

一個數組A中存有N(>0)個整數,在不允許使用另外數組的前提下,將每個整數循環向右移M(≥0)個位置,即將A中的數據由(A0A1?*AN−1)變換為(ANM?AN−1A0A1?ANM−1)(最后M個數循環移至最前面的M*個位置)。如果需要考慮程序移動數據的次數盡量少,要如何設計移動的方法?

輸入格式:

每個輸入包含一個測試用例,第1行輸入N(1≤N≤100)和M(≥0);第2行輸入N個整數,之間用空格分隔。

輸出格式:

在一行中輸出循環右移M位以后的整數序列,之間用空格分隔,序列結尾不能有多余空格

輸入樣例:

6 2 1 2 3 4 5 6

結尾無空行

輸出樣例:

5 6 1 2 3 4

結尾無空行

算法描述:1.定義數組并存入元素,輸入要移動的值;

2.注意先處理一下移動的值,讓他和數組中元素的總個數取個余;

3.優先考慮特殊情況:如果移動的值為0,那直接打印;

4.移動k個,先把最后k個值放到前面,做特殊處理,方便剩余的元素打印;

5.然后再注意格式問題,打印出除最后一個以外的數字+空格,最后在打印 最后一個數。

代碼實現:

#include <stdio.h>
int main()
{
  int n,move;
  scanf("%d %d",&n,&move);
  int arr[n],i;
  for(i = 0;i < n;i++)
  {
      scanf("%d",&arr[i]);
  }
  
  move %= n;              //取余算出到底移動多少,進行簡化
  
  if(move == 0)               //特殊情況特殊處理
  {
      for(i = 0;i < n - 1;i++)
      {
          printf("%d",arr[i]);        //注意格式問題
      }
      printf("%d",arr[n-1]);
      
      return 0;
  }
  
  for(i = n - move;i < n;i++)     //移動move,把最后move個數放前面
  {
      printf("%d ",arr[i]);
  }
  for(i = 0;i < n - move - 1;i++) //把剩下除了最后一個數,打印出來
  {
      printf("%d ",arr[i]);
  }
  printf("%d",arr[n-1-move]);         //最后一個沒空格
  
  return 0;
}

運行結果:

關于C語言一維數組算法問題詳解

 

總結

到此這篇關于關于C語言一維數組算法問題的文章就介紹到這了,更多相關C語言一維數組算法內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_60576482/article/details/121320182

延伸 · 閱讀

精彩推薦
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
主站蜘蛛池模板: 9久re在线观看视频精品 | 欧美成人免费草草影院视频 | 久久无码人妻AV精品一区 | 99精品观看 | 亚洲香蕉综合在人在线视看 | 免费看美女被靠到爽的视频 | 2019午夜福合集高清完整版 | 美女黑人做受xxxxxⅹ | 按摩师他揉我奶好爽捏我奶 | 亚洲高清视频在线 | 亚洲 日韩 国产 中文视频 | 日本黄a三级三级三级 | 99re7在线精品免费视频 | 三叶草私人研究所 | 网友自拍偷拍 | 亚洲bt区 | 四虎永久免费地址在线网站 | 韩国三级理韩国三级理人伦 | 欧美a欧美1级 | 日本乱子 | 二次元美女互摸隐私互扒 | 亚洲色图亚洲色图 | 男人女人日皮 | 亚洲h片 | 欧美人妖另类性hd | 午夜免费无码福利视频麻豆 | 狠狠撸在线播放 | 亚洲精品人成网在线播放影院 | 双性np玩烂了np欲之国的太子 | 嫩草研究 | 欧美gayxxxx| 波多野结衣在线观看中文字幕 | 日本福利片国产午夜久久 | 99免费看| 人皮高跟鞋在线观看 | 明星h文集合短篇小说 | 亚洲国产成人久久精品影视 | 情侣奴伺候女王第2部分小说 | 国产精品青青在线观看香蕉 | 日本加勒比在线精品视频 | 强迫高h|