【C语言】基础练习题
文章目录
1 求复合条件整数集
给定不大于5的正整数n,考虑由n开始的连续5个数字,输出所有由他们组成的无重复数字的3位数
输入样例:
5
输出样例:
567 568 569 576 578 579
586 587 589 596 597 598
657 658 659 675 678 679
685 687 689 695 697 698
756 758 759 765 768 769
785 786 789 795 796 798
856 857 859 865 867 869
875 876 879 895 896 897
956 957 958 965 967 968
975 976 978 985 986 987
参考代码:
#include <stdio.h> main() { int j,k; int n = 5; int inc = 0; int i = n; // j = k = n; 注意j,k变量定义的位置 while (i < n+5 ) { j = n; while (j < n+5 ) { k = n; while (k < n+5 ) { if ( i != j && i != k && j != k ){ printf("%d%d%d",i,j,k); inc++; if ( inc == 6 ) { printf("\n"); inc = 0; } else{ printf("\t"); //注意区分空格和\t效果 } } k++; } j++; } i++; } return 0; }
2 水仙花数
水仙花数是指一个N位正整数(N>=3),他的每个位上的数字的N次幂之和等于它本身。例如:153 = 13 + 53 + 33。请计算所有N位水仙花数。
输入样例:
3
输出样例:
153
370
371
407
参考代码:
#include <stdio.h> main() { int n = 3; int i; int first =1; for ( i=1;i<n;i++ ) { first *=10; } i = first; for ( i=first;i<first*10;i++){ int sum = 0; int p; int j; int t = i; for ( j=1;j<=n;j++ ) { p = t%10; int k; int pn = p; if (p !=0 ){ for ( k=1;k<n;k++ ) { pn *= p; } sum += pn; } t = t/10; } if ( i == sum ) printf("%d\n",i); } return 0; }
3 打印九九口诀表
本题要求对任意给定的正整数N,输出由1*1到N*N的部分口诀表。
输入样例:
5
输出样例:
输出下三角N*N部分口诀表,要求左对齐。
参考代码:
#include <stdio.h> main() { int n = 5,j = 1,i; while ( j<=n ){ i = 1; while ( i<=j ){ printf("%d*%d=%d\t",i,j,i*j); i++; } printf("\n"); j++; } return 0; }
4 统计素数的个数并求和
统计给定整数M和N区间内素数的个数并对他们求和。
输入样例:
1 10
输出样例:
4 17
参考代码
#include <stdio.h> main() { int m = 1,n = 10; int count = 0; int sum = 0; int i; if ( m ==1 ){ //1不是素数 m = 2; } for ( i=m;i<=n;i++ ){ int isPrime = 1; int j; for ( j=2;j<=i/2;j++ ){ if ( i%j == 0 ){ isPrime = 0; break; } } if ( isPrime == 1 ){ sum += i; count++; } } printf("%d %d\n",count,sum); return 0; }
5 猜数字游戏
系统随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要编写程序自动对其进行比较,并提示大了(too big),或者小了(too small),相等表示猜到了。如果猜到,则结束程序。程序还需要统计猜的次数,1次猜中提示“perfect!”,3次以内猜中提示“good!”,次数大于3小于N(N>3)提示“not bad”;超过Nci没有猜到提示“Game Over”,并结束程序。如果输入负数也会提示“Game Over”结束程序。
输入格式:
输入的第一行给出不超过100的正整数,分别表示用户第一个猜测的数字、以及猜测的最大次数N。随后每行给出一个数字直到游戏结束。(为方便调试程序可以打印出系统随机生成的数值)
输出格式:
在每行中输出每次猜测的结果直到游戏结束。
输入输出样例
参考代码
#include <stdio.h> #include <stdlib.h> #include <time.h> main() { int randnum; srand(time(0)); randnum = rand()%100; /*100以内的随机数*/ //printf("产生的随机数是(这里作弊了)%d\n",randnum); int guess,n; int count = 0; int finish = 0; do { if ( count == 0 ){ scanf("%d %d",&guess,&n); //注意加&符号 } else { scanf("%d",&guess); } count 3ff7 ++; //负数的判断放在最前面要不第一个参数是负数时无法判断 if ( guess < 0 ){ break; } else if ( guess > randnum ){ printf("too big!\n"); } else if ( guess < randnum ){ printf("too small!\n"); } else { if ( count == 1 ){ printf("perfect job!!!\n"); } else if ( count <= 3 ){ printf("good job!!\n"); } else { printf("not bad!\n"); } finish = 1; } if ( count == n ){ if ( finish != 1 ){ break; } } } while ( finish != 1 ); printf("Game Over!!!\n"); return 0; }
6 求数列的前N想和
计算2/1+3/2+5/3+8/8+…的前N项之和,注:由第2项起,每一项的分子是前一项的分子与分母之和,分母是前一项的分子。
输入样例:
20
输出样例:
32.66
参考代码:
#include <stdio.h> main() { int n; scanf("%d",&n); double sub,mom,sum,t,i; sub = 2; mom = 1; for ( i=1;i<=n;i++ ){ sum += sub/mom; t = sub; sub = sub + mom; mom = t; } printf("%0.2f\n",sum); return 0; }
7 约分最简分式
关键:求分子分母的最大公约数
输入样例:
4/8
输出样例:
1/2
参考代码:
#include <stdio.h> main() { int sub,mom,a,b,t; scanf("%d/%d",&sub,&mom); a = sub; b = mom; //辗转相除法求最大公约数 while ( b > 0 ){ t = a%b; a = b; b = t; } printf("%d/%d\n",sub/a,mom/a); return 0; }
8 念数字(switch练习)
数字和拼音对应关系
-:fu
0:ling
1:yi
2:er
3:san
4:si
5:wu
6:liu
7:qi
8:ba
9:jiu
输入样例:
-5201314
输出样例:
参考代码:
#include <stdio.h> main() { int n; printf("请输入数字:"); scanf("%d",&n); printf("输入的数字:%d",n); if ( n < 0 ){ printf("fu "); n = -n; } //此方式不支持0开头的数字 int m = 1; int t = n; while ( t > 9 ){ t /= 10; m *= 10; } do{ int p = n/m; switch (p){ case 0: printf("ling");break; case 1: printf("yi");break; case 2: printf("er");break; case 3: printf("san");break; case 4: printf("si");break; case 5: printf("wu");break; case 6: printf("liu");break; case 7: printf("qi");break; case 8: printf("ba");break; case 9: printf("jiu");break; } if ( m >9 ) printf(" "); n %= m; m /= 10; } while ( m > 0 ); printf("\n"); return 0; }
- c语言练习题——基础2
- c语言练习题——基础3
- c语言练习题——基础4
- c语言练习题——基础1
- c语言 几个基础练习题
- C语言基础教学——简单练习题(第五课)
- 2016年计算机二级《C语言》基础练习题及答案
- c语言学习之基础知识点介绍(十一):字符串的介绍、使用
- 黑马程序员 c语言的基础
- 【暑期基础】Y HDU 2024 C语言合法标识符
- C语言菜鸟基础教程之单精度浮点数与双精度浮点数
- 【零基础学习iOS开发】【02-C语言】10-函数
- c#的基础练习题
- 黑马程序员————C语言——基础语法1
- UOJ #228(基础数据结构练习题-区间开根+区间加+区间求和)
- java基础3--面向对象(上)(综合练习题)
- 【线段树+均摊思想】UOJ #228 基础数据结构练习题
- javaScript基础练习题-下拉框制作(JQuery)
- C语言基础及例程
- C语言-----练习题