日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第14、15週PTA題目的處理

發布時間:2025/7/25 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第14、15週PTA題目的處理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目1 選擇法排序

1.實驗代碼

#include <stdio.h> #include <stdlib.h> int main() {int n,index,exchange,i,j;scanf("%d\n",&n);int num[n];for(index=0;index<n;index++)scanf("%d ",&num[index]);for(i=0;i<n-1;i++){for(j=i+1;j<n;j++){if(num[j]>num[i]){exchange=num[j];num[j]=num[i];num[i]=exchange;}elsecontinue;}}for(index=0;index<n;index++){if(index==0)printf("%d",num[index]);elseprintf(" %d",num[index]);}system("pause");return 0; }

2.設計思路

(1)算法

第一步:輸入整數的個數n,定義數組num[n]

第二步:按照順序輸入整數存入num[n]

第三步:外循環變量i=0,內循環變量j=i+1

第四步:若num[i]<num[j],則交換num[i]和num[j]

第五步:j++,若j>=n,則i++,若i>=n-1,則下一步,否則跳到上一步

第六步:輸出num[n]中的數,第二個數開始前面跟上空格

(2)流程圖

3.本題調試過程碰到問題及解決辦法

(注:圖片在保存後成了問號,沒有副本)

問題:在做交換時,內外循環都用了一個循環變量,導致進行完第一次內循環外循環就停止了

解決辦法:在內外循環中使用兩個不同的循環變量

題目2 輸出數組元素

1.實驗代碼

#include <stdio.h> #include <stdlib.h> int main() {int n,index,difference;scanf("%d\n",&n);int num[n];for(index=0;index<n;index++)scanf("%d ",&num[index]);for(index=1;index<n;index++){difference=num[index]-num[index-1];printf("%d",difference);if(index+1==n)printf("\n");else if(index%3!=0)printf(" ");elseprintf("\n");}system("pause");return 0; }

2.設計思路

(1)算法

第一步:輸入整數元素個數n

第二步:按照順序輸入整數存入num[n]中

第三步:循環變量index=1,若index<n,則後項減前項的差difference=num[index]-num[index-1],輸出difference,否則結束

第四步:若index+1=n,則輸出回車,否則判斷index mod 3不等於0,若是則輸出空格,否則輸出回車

第五步:index++,跳到第三步

(2)流程圖

3.本題調試過程碰到問題及解決辦法

(注:圖片在保存後成了問號,沒有副本)

問題:輸出元素時最後一個不是三的倍數會輸出空格,第一個數也會輸出空格

解決辦法:判斷輸出的這個數是不是最後一個數,如果是的話就輸出回車,不是的話就判斷輸出的元素是不是3的倍數

題目3 數組元素循環右移問題

1.實驗代碼?

#include <stdio.h> #include <stdlib.h> int main() {int N,M,index,exchange;scanf("%d %d\n",&N,&M);int num[N],item[N];for(index=0;index<N;index++)scanf("%d ",&num[index]);for(index=0;index<N;index++){if(index+M>=N)item[(index+M)%N]=num[index];elseitem[index+M]=num[index];}for(index=0;index<N;index++){if(index==0)printf("%d",item[index]);elseprintf(" %d",item[index]);}system("pause");return 0; }?

2.設計思路

(1)算法

第一步:輸入兩個正整數元素個數N,右移位數M

第二步:按照順序輸入各個整數存入num[N]中

第三步:循環變量i=0

第四步:若i>=N,跳到第七步

第五步:若i+M>=N,則項item[(i+M) mod N]=num[i],否則item[i+M]=num[i]

第六步:i++,跳到第四步

第七步:輸出item[index],第二個數前輸出一個空格

(2)流程圖

3.本題調試過程碰到問題及解決辦法

問題:沒有考慮M比N大的情況

解決辦法:當前值的下標與M和的餘數剛好是輸出值的下標,不管M是不是N的倍數都是一樣的

?Git地址:https://git.coding.net/MemoriesBook/123.git

個人總結

本週學習了一維數組和二維數組,了解了二維數組的框架結構,如同行和列的數字的排列,下標還是和一維數組一樣的0到n-1,二維數組可以存放矩陣一類的數字,還可以進行矩陣的運算以及各種變換,其中有點難懂的是選擇法排序和冒泡法排序容易搞混,現在還不是很理解選擇法排序的意思,暫時先記住格式,寫在書上。

董欣的博客地址:http://www.cnblogs.com/dx2017/p/7967269.html

董雅潔的博客地址:http://www.cnblogs.com/exo123/p/7954060.html

馮子旋的博客地址:http://www.cnblogs.com/fengzx/p/7955263.html

代碼行數時間博客字數時間涉及的知識點
20011.20104數組
10011.21104.5數組
10011.223002if語句、循環結構
20011.23503數組
10011.24501.5數組
20011.251002.5
30011.261003無?
30011.2702.5二維數組?
10011.2803.5二維數組?
20011.29605二維數組?
10011.30601二維數組?
30012.1902二維數組?
30012.21001.5二維數組?

?

轉載于:https://www.cnblogs.com/lixiaojing/p/7878001.html

總結

以上是生活随笔為你收集整理的第14、15週PTA題目的處理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。