中国大学MOOC-翁恺-C语言-PAT习题及解答-第四周

Harmony ·
更新时间:2024-11-10
· 757 次阅读

#include

04-0. 求符合给定条件的整数集(15)

给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成
的无重复数字的3位数。

输入格式:输入在一行中给出A。
输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以
空格分隔,但行末不能有多余空格。

输入样例:2
输出样例:
234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543

main() { int n,i,j,k,x=0; printf("input>>> "); scanf("%d",&n); for(i=n; i<n+4; ++i) for(j=n; j<n+4; ++j) for(k=n; k<n+4; ++k){ if(i!=j && j!=k &&i!=k){ x++; if(x % 6 == 0){ printf("%d%d%d\n",i,j,k); }else{ printf("%d%d%d ",i,j,k); } } } return 0; } 04-1. 水仙花数(20)

水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它
本身。例如:153 = 1^3 + 5^3+ 3^3。本题要求编写程序,计算所有N位水仙花数。

输入格式:输入在一行中给出一个正整数N(3<=N<=7)。
输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:3
输出样例:
153
370
371
407

int main() { int n; printf("input>>>"); scanf("%d", n); int i; int first = 1; for(i=1; i<n; i++){ first *= 10; } // printf("first:%d",first); for(i=first; i<first*10; i++){ int tmp = i; int res = 0; int j; for(j=0; j<n; j++){ int r = tmp % 10; tmp /= 10; res += r*r*r; } if(res == i){ printf("%d\n", i); } } return 0; } 04-2. 打印九九口诀表(15)

本题要求对任意给定的1位正整数N,输出从11到NN的部分口诀表。

输入格式:输入在一行中给出一个正整数N(1<=N<=9)。
输出格式:输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:4
输出样例:
11=1
1
2=2 22=4
1
3=3 23=6 33=9
14=4 24=8 34=12 44=16

main() { int i,j,n; printf("input>>> "); scanf("%d",&n); for(i=1; i<=n; i++) for(j=1; j<=i; j++){ printf("%d * %d = %d", j, i, j*i); if(i == j){ printf("\n"); }else{ if(i*j<10) printf(" "); else printf(" "); } } return 0; } 04-3. 统计素数并求和(20)

本题要求统计给定整数M和N区间内素数的个数并对它们求和。

输入格式:输入在一行中给出2个正整数M和N(1<=M<=N<=500)。
输出格式:在一行中顺序输出M和N区间内素数的个数以及它们的和,以空格分隔。

输入样例:10 31
输出样例:7 143

int main() { int a,b,i,n; int num=0,total=0; printf("input>>> "); scanf("%d %d",&a,&b); if(a == 1){ a = 2; // 1为非负数 } for(n=a; n<=b; n++){ int tag = 0; for(i=2; i<n; i++){ if(n % i == 0){ tag = 1; continue; } } if(tag == 0){ num++; total += n; printf("素数:%d ",n); } } printf("\n%d %d", num, total); return 0; } 04-4. 猜数字游戏(15)

猜数字游戏是令系统随机产生一个100以内的正整数,用户输入一个数对其进行
猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了
(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,
则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;
如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)
次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没
有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入
了一个负数,也输出“Game Over”,并结束程序。

输入格式:输入第一行中给出2个不超过100的正整数,分别是系统产生的随机
数、以及猜测的最大次数N。随后每行给出一个用户的输入,直到出现负
数为止。
输出格式:在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game
Over”则结束。

输入样例:
58 4
70
50
56
58
60
-2
输出样例:
Too big
Too small
Too small
Good Guess!

int main() { int init, n; printf("input>>> "); scanf("%d %d", &init, &n); printf("\n**** 游戏开始 ****\n"); int r,m=1; while(r>=0 && m init) printf("Too big\n"); else if(r = 0) printf("Too small\n"); else if(r == init && m == 1){ printf("Bingo!\n"); break; } else if(r == init && m 3){ printf("Good Guess!\n"); break; } m++; } if(m > n || r < 0) printf("Game over"); return 0; }
作者:hao难懂



pat C语言

需要 登录 后方可回复, 如果你还没有账号请 注册新账号