国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

C語言——一維數組算法問題

lifesimple / 3160人閱讀

摘要:算法描述向數組中輸入元素定義一個新數組將數組中的元素倒序存放將數組正序輸出,注意結尾無空格的格式問題。最后打印出來數組中的元素,也就是非共有值,此處注意格式問題。

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

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

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

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

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

代碼實現 :?

#include 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;}

運行結果:


?

?

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

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

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

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

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

?????????????????????直到變量值變為最大;

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

代碼實現:

#include 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;}

運行結果:

?

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

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

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

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

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

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

? ? ? ? ? ? ? ? ? ? 重復。

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

代碼實現:

#include 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;}

運行結果:

?

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

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

輸入格式: 輸入在一行中給出序列中整數個數N(0

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

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

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

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

代碼實現:

#include 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;}

運行結果:

?

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

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

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

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

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

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

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

代碼實現 :

#include 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;}

運行結果:

?

?

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

一個數組A中存有N(>0)個整數,在不允許使用另外數組的前提下,將每個整數循環向右移M(≥0)個位置,即將A中的數據由(A0A1?*AN?1)變換為(AN?M?AN?1A0A1?AN?M?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 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;}

運行結果:

?

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/123364.html

相關文章

  • C語言 指針+二維數組詳解 (應付期末、考研的最強筆記,建議收藏)

    摘要:需要注意的是用矩陣形式如行列表示二維數組,是邏輯上的概念,能形象地表示出行列關系。再次強調二維數組名如是指向行的。一維數組名如是指向列元素的。 哈嘍!這里是一只派大鑫,不是派大星。本著基礎不牢,地動山搖的學習態度,從基礎的C語言語法講到算法再到更高級的語法及框架的學習。更好地讓同樣熱愛編...

    FrozenMap 評論0 收藏0
  • C語言第三期(1萬字函數-數組-操作符詳解)

    摘要:形式參數當函數調用完成之后就自動銷毀了。函數調用傳值調用函數的形參和實參分別占有不同內存塊,對形參的修改不會影響實參。函數的聲明一般出現在函數的使用之前。它其實就數組訪問的操作符。 ...

    Jeff 評論0 收藏0
  • C陷阱與缺陷》第三章

    摘要:而對于二維數組,因為內存連續性的原因,內存并不會真真的開辟一個二維空間,而是連續依次存入二維數組的每個數據。之所以有二維數組的說法是為了分析問題方便。二維數組的實質是一維數組,只是其元素類型是一維數組類型。 ...

    tyheist 評論0 收藏0
  • 0基礎C語言保姆教學——第五節 數組

    摘要:關注我,訂閱專欄基礎語言保姆教學,就可以持續讀到我的文章啦本文為萬字長文,滿滿干貨。那么,上面的代碼所運行的結果就是一維數組的使用使用即可以訪問并可以修改,即可讀可寫。 大家好~~~我是開心學編程,學到無極限的@jxwd? 寫在前面: 各位小伙伴還在為C語言的學習而苦惱嘛? 還在為...

    RobinQu 評論0 收藏0
  • 2021.11.25 關于c語言數組

    摘要:結論一維數組在內存中是連續存放的二維數組關于二維數組的創建二維數組中的表示行數,表示列數注意二維數組的不完全初始化剩下的元素也都默認為。示例如下關于二維數組的打印我們通過二維數組的下標來進行打印,而二維數組的行和列下標都是從開始的。 ?目錄 一維數組 關于一維數組的創建 關于數組的打印 關...

    不知名網友 評論0 收藏0

發表評論

0條評論

lifesimple

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<