C語言基礎第五次作業
阿新 • • 發佈:2018-12-20
7-1,判斷素數
1.實驗程式碼:
#include<stdio.h> #include<math.h> int main() { int i, N, m, q; scanf("%d", &N); for(q=1; q<=N; q++){ scanf("%d", &m); for(i=2; i<=sqrt(m); i++) if(m % i == 0) break; if(i>sqrt(m) && m !=1) printf("Yes\n"); else printf("No\n"); } return 0; }
2.設計思路:
(1)文字描述:
第一步:定義變數i,i,n,m,q
第二步:用q控制連續 輸入N個值,用i來判斷輸入值m是否為素數
第三步:輸出yes或no 結束程式
(2)流程圖:
3.本題除錯過程遇到的問題及解決辦法
遇到的問題:兩個“=”號之間有空格,另外本題用i到m/2來的數判斷m是否是素數會執行超時
解決辦法:去掉兩個等於號之間的空格; 改用到根號m來判斷則能解決這一問題
7-3 交換最大值最小值
1.實驗程式碼
#include <stdio.h> main() {int N,i,x,d,min,max,q; int a[10]; scanf("%d",&N); for(i=0;i<N;i++) { scanf("%d",&a[i]); } min=max=a[0]; for(i=0;i<N;i++) { if(a[i]<=min) { min=a[i]; q=i; } } x=a[0]; a[0]=min; a[q]=x; for(i=0;i<N;i++) { if(a[i]>=max) { max=a[i]; q=i; } } d=max; a[q]=a[N-1]; a[N-1]=d; for(i=0;i<N;i++) printf("%d ",a[i]); return 0; }
2.設計思路
(1)文字描述:
第一步:定義變數n,i,x,d,min,max,q,定義陣列a[10]
第二步:用i來控制尋找N個數的中的最大值最小值的下標,min和max分別作為最小值最大值的載體,用q作為中間變數來承載最大值最小值下標的轉換
第三步:找最小值,找最大值,然後進行分別與第一個數和最後一個數的替換
第四步:一次按順序輸出N個數 結束程式
總而言之整體思路就是先找出最小值和最大值再分別與第一個數和最後一個數交換
(2)流程圖:
3.遇到的問題及解決辦法
問題:在對最小值和最大值的載體min和max進行賦初值時習慣性賦值為0忽略了本題應從輸入的數中選數賦值,相互比較才能找出最小值和最大值
解決辦法:將min和max的初值均賦值為陣列的第一個數
二,總結學習進度條
1.本週我們主要學習了陣列,瞭解了什麼是陣列以及學習了一維陣列,二維陣列的使用,對數字陣列掌握得還可以,但對字元陣列以及字串有點迷迷糊糊 還無法做到運用
3.