第十一周編程總結
第十一周編程總結
題目1:11-1 打印九九口訣表 (15 分)
下面是一個完整的下三角九九口訣表:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
本題要求對任意給定的一位正整數N,輸出從1*1到N*N的部分口訣表。
1).實驗代碼
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
for(int i = 1;i <=n ;i++){
for(int j = 1;j <= i;j++){
if(i * j >= 10){
printf("%d*%d=%d ", j, i, j * i); //2格
}
else{
printf("%d*%d=%d ", j, i, j * i);//3格
}
}
printf("\n");
}
return 0;
}
2).設計思路
第一步 考慮到使用嵌套語句循環,輸入一個整數
第二步 定義i從1開始循環到n停止
第三步 定義一個j從1開始循環到i停止
第四步 格式化輸出,當i和j的成績大於10的時候要空2格,否則空3格
3)本題調試中遇到的問題及解決方案
在輸出乘法表的時候出現空格問題,不知道如何去打印
4).運行結果截圖
題目2:11-2 換硬幣 (20 分)
將一筆零錢換成5分、2分和1分的硬幣,要求每種硬幣至少有一枚,有幾種不同的換法?
1).實驗代碼
#include<stdio.h>
int main()
{
int x,count=0;
scanf("%d",&x);
for ( int k = x / 5; k > 0; k-- )
for ( int i = x / 2; i > 0; i-- )
for ( int j = x; j > 0; j-- )
if(k*5+i*2+j==x){
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n", k, i, j, k + j + i);
count++;
}
printf("count = %d",count);
return 0;
}
2).設計思路
第一步 輸入零錢x
第二步 使用嵌套循環定義一個k從x/5開始循環,定義一個i從i/2開始循環,定義一個j從x開始循環,不斷累減
第三步 當滿足k*5+i*2+j==x條件時進行輸出,此時就是對應的硬幣數
4).運行結果截圖
題目3:11-3 找完數 (20 分)
所謂完數就是該數恰好等於除自身外的因子之和。例如:6=1+2+3,其中1、2、3為6的因子。本題要求編寫程序,找出任意兩正整數m和n之間的所有完數。
1).實驗代碼
#include<stdio.h>
int main(){
int n,m,i,j,sum,num=0;
scanf("%d %d",&m,&n);
for(i=m;i<=n;i++){
if(i==1) continue;
sum=1;
for(j=2;j<i;j++)
if(i%j==0) sum+=j;
if(sum==i){
printf("%d = 1",i);
for(j=2;j<i;j++)
if(i%j==0)
printf(" + %d",j);
printf("\n");
num++;
}
}
if(num==0) printf("None\n");
return 0;
}
2).設計思路
第一步 輸入2個數m、n
第二步 i從m開始循環到n結束,定義的j從2開始循環到i停止不斷累加
第三步 用sum來累加能整出的數
第四步 如果sum==i說明完數只有1
3)本題調試中遇到的問題及解決方案
嵌套循環次數使用的次數過多,自己都有點暈
4).運行結果截圖
第十一周編程總結