第十一週程式設計總結--助教
阿新 • • 發佈:2018-11-24
題目1 列印九九口訣表
(1)實驗程式碼
#include<stdio.h>
int main ()
{
int i, j, n;
scanf("%d", &n);
for(i = 1;i<=n;i++)
{
for(j = 1;j<=i;j++)
{
if(i *j>=10)
printf("%d*%d=%d ", j, i, i*j);
else
printf("%d*%d=%d ", j, i, i*j);
}
printf("\n");
}
return 0;
}
(2)設計思路
第一步:定義需要輸入的變數為n,輸入n的值
第二步:運用for迴圈,第一個for代表著需要的行數
第三步:第二個for輸出計算式,而 if 語句的作用在於格式問題(大於十的時候數字會多一位)
第四步:打印表格
(3)本題除錯過程碰到問題及解決辦法
問題就是格式問題,其他沒什麼
(4)執行結果截圖
題目2 換硬幣
(1)實驗程式碼
#include<stdio.h>
int main ()
{
int n, fen5, fen2, fen1, total;
int count = 0;
scanf("%d", &n);
for(fen5 = 19;fen5 >=1;fen5--)
{
for(fen2 = 49;fen2 >=1;fen2--)
{
for(fen1 = 99;fen1 >=1;fen1--)
if(fen1+fen2*2+fen5*5==n)
{
total = fen5 + fen2 + fen1;
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n", fen5, fen2, fen1, total);
count++;
}
}
}
printf("count = %d", count);
return 0;
}
(2)設計思路
第一步:定義每個硬幣需要的變數,輸入所給的零錢數額
第二步:用三個for迴圈,每次遞減一,再用一個if語句判斷是否等於所給的數額
第三步:打印出每個硬幣的數額,每迴圈一次count加一
第四步:輸出換硬幣的方法種數
(3)本題除錯過程碰到問題及解決辦法
第一個是5分硬幣是從大往小的開始輸出的,沒注意,改正迴圈條件後正確
(4)執行結果截圖
題目3 找完數
(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)設計思路
第一步:定義變數
第二步:輸入m到n的範圍
第三步:用for迴圈找完數,如果m為1需要跳過
第四步:輸出式子
(3)本題除錯過程碰到問題及解決辦法
跟整除光棍類似,問題就是一開始沒注意m=1時的情況
(4)執行結果截圖
(1)實驗程式碼
#include<stdio.h>
int main ()
{
int i, j, n;
scanf("%d", &n);
for(i = 1;i<=n;i++)
{
for(j = 1;j<=i;j++)
{
if(i *j>=10)
printf("%d*%d=%d ", j, i, i*j);
else
printf("%d*%d=%d ", j, i, i*j);
}
printf("\n");
}
return 0;
}
(2)設計思路
第一步:定義需要輸入的變數為n,輸入n的值
第二步:運用for迴圈,第一個for代表著需要的行數
第三步:第二個for輸出計算式,而 if 語句的作用在於格式問題(大於十的時候數字會多一位)
第四步:打印表格
(3)本題除錯過程碰到問題及解決辦法
問題就是格式問題,其他沒什麼
(4)執行結果截圖
題目2 換硬幣
(1)實驗程式碼
#include<stdio.h>
int main ()
{
int n, fen5, fen2, fen1, total;
int count = 0;
scanf("%d", &n);
for(fen5 = 19;fen5 >=1;fen5--)
{
for(fen2 = 49;fen2 >=1;fen2--)
{
for(fen1 = 99;fen1 >=1;fen1--)
if(fen1+fen2*2+fen5*5==n)
{
total = fen5 + fen2 + fen1;
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n", fen5, fen2, fen1, total);
count++;
}
}
}
printf("count = %d", count);
return 0;
}
(2)設計思路
第一步:定義每個硬幣需要的變數,輸入所給的零錢數額
第二步:用三個for迴圈,每次遞減一,再用一個if語句判斷是否等於所給的數額
第三步:打印出每個硬幣的數額,每迴圈一次count加一
第四步:輸出換硬幣的方法種數
(3)本題除錯過程碰到問題及解決辦法
第一個是5分硬幣是從大往小的開始輸出的,沒注意,改正迴圈條件後正確
(4)執行結果截圖
題目3 找完數
(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)設計思路
第一步:定義變數
第二步:輸入m到n的範圍
第三步:用for迴圈找完數,如果m為1需要跳過
第四步:輸出式子
(3)本題除錯過程碰到問題及解決辦法
跟整除光棍類似,問題就是一開始沒注意m=1時的情況
(4)執行結果截圖