成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

C語言——一維數(shù)組算法問題

lifesimple / 3176人閱讀

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

問題1:將數(shù)組中的數(shù)逆序存放

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

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

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

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

代碼實(shí)現(xiàn) :?

#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;					//定義一個數(shù)組new用來存入數(shù)組a的逆順序    for(int j = 0;j < n;j++)    {        new[j] = arr[n-1-i];		//倒序存入    }    for(int k = 0;k < n - 1;k++)	//數(shù)組中最后一個元素不一起輸入,保持結(jié)尾無空格    {        printf("%d ",new[k]);		    }    	printf("%d",new[n-1]);		//輸出最后一個元素    return 0;}

運(yùn)行結(jié)果:


?

?

問題2:求數(shù)組中最大值及其下標(biāo)

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

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

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

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

?????????????????????直到變量值變?yōu)樽畲螅?/h3>

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

代碼實(shí)現(xiàn):

#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];               //定義一個變量保存數(shù)組第一個元素 ? ?for(int j = 1;j < n;j++) ?  { ? ? ? ?if(max < arr[j])            //如果小于就一直給m,直到找到最大值停 ? ? ?  { ? ? ? ? ? ?max = arr[j];        ? ? ?  } ? ? } ? ?for(int num = 0;num < n;num++)  //記錄最大值下標(biāo)操作 ?  { ? ? ? ?if(arr[num] == max) ? ? ?  { ? ? ? ? ? ?printf("最大值為:%d/n其下標(biāo)為:%d",max,num); ? ? ? ? ? ?break; ? ? ?  } ?  } ? ?return 0;}

運(yùn)行結(jié)果:

?

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

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

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

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

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

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

? ? ? ? ? ? ? ? ? ? 重復(fù)。

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

代碼實(shí)現(xiàn):

#include int main(){    int n;                          scanf("%d",&n);    int arr1[n],i;                      //定義第一個數(shù)組    for(i = 0;i < n;i++)    {        scanf("%d",&arr1[i]);    }        int m;    scanf("%d",&m);    int arr2[m],j;                      //定義第二個數(shù)組    for(j = 0;j < m;j++)    {        scanf("%d",&arr2[j]);    }        int k,rem[20] = {};                 //數(shù)組rem是用來記錄非公有值的    for(i = 0;i < n;i++)    {        int flag = 0;                   //定義標(biāo)志變量用來標(biāo)志是否有非共有值        for(j = 0;j < m;j++)                {            if(arr1[i] == arr2[j])  //用數(shù)組1中元素對比數(shù)組2中元素,非共有值放入數(shù)組rem中            {                flag = 1;            }        }        if(flag == 0)        {            rem[k] = arr1[i];            k++;        }    }        for(i = 0;i < m;i++)        //用數(shù)組2中元素對比數(shù)組1中元素,非共有值放入數(shù)組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]);   //因?yàn)樘崆拜敵龅谝粋€元素,所以后面要打一個空格再打元素,                                                                                                                             //結(jié)尾無空格的格式問題        }    }    return 0;}

運(yùn)行結(jié)果:

?

問題4:找出出現(xiàn)次數(shù)最多的數(shù)

本題要求統(tǒng)計一個整型序列中出現(xiàn)次數(shù)最多的整數(shù)及其出現(xiàn)次數(shù)。

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

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

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

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

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

代碼實(shí)現(xiàn):

#include int main(){ ? ?int n,arr[1000],cnt[1000] = {0};        //cnt為計數(shù)器數(shù)組,需要初始化 ? ?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])            //一直遍歷直到找重復(fù)最多的 ? ? ?  { ? ? ? ? ? ?max = cnt[i];           //找到后賦值給max ? ? ? ? ? ?k = i;              //i就是重復(fù)最多的數(shù)的下標(biāo) ? ? ?  } ?  } ? ? ? ?printf("出現(xiàn)次數(shù)最多的數(shù)字為:%d/n其出現(xiàn)次數(shù)為:%d",arr[k],max);   ? ? ? ?return 0;}

運(yùn)行結(jié)果:

?

問題5:數(shù)組中插入數(shù)字并排序

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

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

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

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

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

?????????????????5.最后遍歷輸出數(shù)組元素 。

代碼實(shí)現(xiàn) :

#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);           //輸入要插入的數(shù)字 ? ?end = arr[n-1];             //保存倒數(shù)第二個元素 ? ? ? ?if(num > end)               //考慮特殊情況,如果插入的數(shù)大于倒數(shù)第二個  ?  { ? ? ? ?arr[n] = num;           //直接插入賦值 ?  } ? ?else ?  { ? ? ? ?for(i = 0;i < n;i++) ? ? ?  { ? ? ? ? ? ?if(arr[i] > num)    //如果原本的數(shù)大于插入的數(shù) ? ? ? ? ?  { ? ? ? ? ? ? ? ?t1 = arr[i];    //先保存原來的數(shù) ? ? ? ? ? ? ? ?arr[i] = num;   //把插入的數(shù)放到原來數(shù)的位置 ? ? ? ? ? ? ? ?for(j = i + 1;j <= n;j++)       //處理原來的數(shù) ? ? ? ? ? ? ?  { ? ? ? ? ? ? ? ? ? ?t2 = arr[j];            //原來的數(shù)到了后一位保存住 ? ? ? ? ? ? ? ? ? ?arr[j] = t1;            //把原來的數(shù)賦值給現(xiàn)在要存的這個位置上 ? ? ? ? ? ? ? ? ? ?t1 = t2; ? ? ? ? ? ? ?  } ? ? ? ? ? ? ? ?break; ? ? ? ? ?  } ? ? ?  } ?  } ? ?for(i = 0;i <= n;i++)               //注意這里i<=n,因?yàn)槎嗖迦肓艘粋€數(shù)字 ?  { ? ? ? ?printf("%d ",arr[i]); ?  } ? ?return 0;}

運(yùn)行結(jié)果:

?

?

問題6:數(shù)組循環(huán)右移問題

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

輸入格式:

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

輸出格式:

在一行中輸出循環(huán)右移M位以后的整數(shù)序列,之間用空格分隔,序列結(jié)尾不能有多余空格

輸入樣例:

6 2 1 2 3 4 5 6

結(jié)尾無空行

輸出樣例:

5 6 1 2 3 4

結(jié)尾無空行

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

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

??????????????????3.優(yōu)先考慮特殊情況:如果移動的值為0,那直接打??;

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

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

代碼實(shí)現(xiàn):

#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;              //取余算出到底移動多少,進(jì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個數(shù)放前面 ?  { ? ? ? ?printf("%d ",arr[i]); ?  } ? ?for(i = 0;i < n - move - 1;i++) //把剩下除了最后一個數(shù),打印出來 ?  { ? ? ? ?printf("%d ",arr[i]); ?  } ? ?printf("%d",arr[n-1-move]);         //最后一個沒空格 ? ? ? ?return 0;}

運(yùn)行結(jié)果:

?

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/123364.html

相關(guān)文章

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

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

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

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

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

    摘要:而對于二維數(shù)組,因?yàn)閮?nèi)存連續(xù)性的原因,內(nèi)存并不會真真的開辟一個二維空間,而是連續(xù)依次存入二維數(shù)組的每個數(shù)據(jù)。之所以有二維數(shù)組的說法是為了分析問題方便。二維數(shù)組的實(shí)質(zhì)是一維數(shù)組,只是其元素類型是一維數(shù)組類型。 ...

    tyheist 評論0 收藏0
  • 0基礎(chǔ)C語言保姆教學(xué)——第五節(jié) 數(shù)組

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

    RobinQu 評論0 收藏0
  • 2021.11.25 關(guān)于c語言數(shù)組

    摘要:結(jié)論一維數(shù)組在內(nèi)存中是連續(xù)存放的二維數(shù)組關(guān)于二維數(shù)組的創(chuàng)建二維數(shù)組中的表示行數(shù),表示列數(shù)注意二維數(shù)組的不完全初始化剩下的元素也都默認(rèn)為。示例如下關(guān)于二維數(shù)組的打印我們通過二維數(shù)組的下標(biāo)來進(jìn)行打印,而二維數(shù)組的行和列下標(biāo)都是從開始的。 ?目錄 一維數(shù)組 關(guān)于一維數(shù)組的創(chuàng)建 關(guān)于數(shù)組的打印 關(guān)...

    不知名網(wǎng)友 評論0 收藏0

發(fā)表評論

0條評論

lifesimple

|高級講師

TA的文章

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