1、C语言上机练习题1. 输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。#include stdio.hmain() long n; int ww,qw,bw,sw,gw; printf(Please input:n); scanf(%ld,&n); while(n99999) printf(nThe number is too little or too large.Retry please!n); scanf(%ld,&n); if(n=10000&n=1000&n=100&n=10&n=99) sw=n/10; gw=n%10; printf(The old
2、 number is:%ldn,n); printf(The new number is:%d%dn,gw,sw); else printf(The old number equals the new number:%ld,n);2. 计算1+2+3+n的值,n是从键盘输入的自然数。/* Note:Your choice is C IDE */#include stdio.hmain() int n,i; long sum=0; printf(1+2+3+.+nn); printf(Please input n:n); scanf(%d,&n); for(i=1;i=n;i+) sum+=i;
3、 printf(sum=%ld,sum); 3. 从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。、/* Note:Your choice is C IDE */#include stdio.h#define N 20main() int aN,i,sum=0,count=0; printf(Please input numbers :n); for(i=0;i0) sum+=ai; count+; printf(count=%d,sum=%d,count,sum);4. 从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中各元素的值。/
4、* Note:Your choice is C IDE */#include stdio.h#define N 5main() int aN,bN,i; printf(Please input numbers:n); for(i=0;iN;i+) scanf(%d,&ai); bN-i-1=ai; printf(nThe old numbers are:n); for(i=0;iN;i+) printf(%-4d,ai); printf(nThe new numbers are:n); for(i=0;iN;i+) printf(%-4d,bi); 5. 要将五张100元的大钞票,换成等值的5
5、0元,20元,10元,5元一张的小钞票,每种面值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。/* Note:Your choice is C IDE */#include stdio.hmain() int i,j,k,n; for(i=1;i=10;i+) for(j=1;j=25;j+) for(k=1;k=50;k+) for(n=1;n=100;n+) if(i*50+j*20+k*10+n*5=500) printf(num50=%d,num20=%d,num10=%d,num5=%dn,i,j,k,n);6. 求n以内(不包括n)同时能被3和7整除的所有自然数之和
6、的平方根s,n从键盘输入。例如若n为1000时,函数值应为:s=153.909064。/* Note:Your choice is C IDE */#include stdio.h#include math.hmain() int n,s,i; float sum=0; printf(Please input n:n); scanf(%d,&n); while(n=0) printf(nError input.Retry please:n); scanf(%d,&n); for(i=1;in;i+) if(i%3=0&i%7=0) sum+=i; printf(The number is:%4
7、.2f,sqrt(sum);7. 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。/* Note:Your choice is C IDE */#include stdio.h#include math.hmain() int i,qw,bw,sw,gw; for(i=1122;i=9988;i+) if(sqrt(i)!=(int)sqrt(i) continue; qw=i/1000; bw=
8、i/100%10; sw=i/10%10; gw=i%10; if(qw=bw&sw=gw) printf(nThe number is:%dn,i); break; 8. 输入110之间的一个数字,输出它对应的英文单词。/* Note:Your choice is C IDE */#include stdio.hmain() int n; printf(Please input n:n); scanf(%d,&n); while(n10) printf(Error input!Retry please:n); scanf(%d,&n); switch(n) case 1:printf(One
9、!);break; case 2:printf(Two!);break; case 3:printf(Three!);break; case 4:printf(Four!);break; case 5:printf(Five!);break; case 6:printf(Six!);break; case 7:printf(Seven!);break; case 8:printf(Eight!);break; case 9:printf(Nine!);break; case 10:printf(Ten!);break; 9. 个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪
10、些?/* Note:Your choice is C IDE */#include stdio.hmain() int i,count=0; for(i=106;i596;i=i+10) if(i%3=0&i%5!=0) printf(%-4d,i); count+; printf(count=%-4d,count);10. 用自然语言描述程序逻辑如下,试写程序。 设置环境; 定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; i=1; 如果i100,则转,否则转; 令s=0,求前i个自然数之和,并放于变量s之中; sum=sum+s; i增加1,转;8 输出和sum,结束
11、。/* Note:Your choice is C IDE */#include stdio.hmain() int i,j; long s=0,sum=0; printf(1+1+2+1+2+3+1+2+3+4+.1+2+3+.+nn); i=1; while(i=3) s+=i; sum+=s; i+; printf(sum=%ld,sum);11. 用自然语言描述的程序逻辑为: 设置环境; 定义变量i、flag和password,并令flag=0,i=0; 用户回答口令,将其赋于password变量; 口令正确?如果是,则flag=1,转。否则转; 回答三次口令了吗?如果没有,计数器加1
12、后(i+),转,否则转;6 根据flag之值输出相应信息。/* Note:Your choice is C IDE */#include stdio.h#include string.h#define N 6main() int i=0,flag=0; char passwordN; printf(The password is:123456n); while(i3) gets(password); if(strlen(password)!=6) printf(The string length is wrong!Retry please!n); i+; continue; if(strcmp
13、(123456,password)=0) flag=1;break; else printf(Wrong input!Retry please!n); i+; if(flag=1) printf(Right password!n); else printf(Wrong password!n);12. 用自然语言描述的程序逻辑如下: 设置环境; 定义变量digit、x、y分别表示原始数、原始数的个位数和逆数; 输入原始正整数x; 从x中分解出个位数字digit; 合并个位digit至逆数y中; 原始数x缩小10倍:x=x/10; 如果x非零,则转;7 输出逆数y,结束/* Note:Your c
14、hoice is C IDE */#include stdio.hmain() long digit,x,y;/*个位数、原始数、逆数*/ printf(Please input the old number:n); scanf(%ld,&x); digit=x%10; y=digit; while(x!=0) x=x/10; digit=x%10; y=y*10+digit; printf(x=%ld,y=%ld,x,y/10);13. 输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构成)。/* Note:Your choice is C IDE */#incl
15、ude stdio.hmain() float a,b,c,flag;/*flag=0不能,flag=1等边,flag=2等腰,flag=3任意*/ printf(Please input angles:n); scanf(%f,%f,%f,&a,&b,&c); if(a+b=c|a+c=b|b+c=a) flag=0; else if(a=b&b=c) flag=1; else if(a=b|b=c|c=a) flag=2; else flag=3; if(flag=0) printf(nCan not!n); if(flag=1) printf(nDeng Bian.n); if(flag
16、=2) printf(nDeng Yao.n); if(flag=3) printf(nPu tong.n);14. 输入10个数,分别统计其中正数、负数、零的个数。#include stdio.h#define N 10main() int aN; int i,count1=0,count2=0,count3=0;/*count1记录正数个数,count2记录负数个数,count3记录0的个数*/ printf(Please input numbers:n); for(i=0;i0) count1+; if(ai0) count2+; if(ai=0) count3+; printf(cou
17、nt1=%-4d,count2=%-4d,count3=%-4d,count1,count2,count3);15. 先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100)/* Note:Your choice is C IDE */#include stdio.h#define N 100#include #include main() int aN,i; printf(Please input numbers:n); randomize(); for(i=0;iN;i+) ai=random(900)+100; printf(%-4d,ai); printf
18、(n-n); printf(n3,5,7:n); for(i=0;iN;i+) if(ai%3=0&ai%5=0&ai%7=0) printf(%-4d,ai);16. 用for编程找出100200中的完全平方数。#include stdio.h#include math.hmain() int i; for(i=100;i=200;i+) if(sqrt(i)=i%100) printf(%-4d,i);17. 从终端输入三个正实数,判断这三个数能否构成直角三角形。#include stdio.hmain() float a,b,c,flag;/*flag=0不能,flag=1能*/ pri
19、ntf(Please input angles:n); scanf(%f,%f,%f,&a,&b,&c); while(a=0|b=0|c=0) printf(Wrong input!Retry please:n); scanf(%d,%d,%d,&a,&b,&c); if(a+b=c|b+c=a|a+cN) printf(Wrong input!Retry please!n); gets(a); strcpy(b,a); strrev(a); if(strcmp(a,b)=0) printf(nYes!n); else printf(nNo!n);20. 随机产生N个大写字母输出,然后统计其
20、中共有多少个元音字符。(设N为200)/* Note:Your choice is C IDE */#include stdio.h#include #include #define N 200main()int cN,i,count=0;randomize(); for(i=0;iN;i+)ci=random(27)+65;printf( %c,ci);if(ci=A|ci=E|ci=I|ci=O|ci=U)count+; printf(n-n); printf(ncount=%-4d,count);找出三位自然数中的所有素数,要求判断x素数用自定义函数data(x)实现。#include
21、stdio.hint data(int x);main()int i,flag=0;/*1是,0否*/ for(i=101;i=999;i+) flag=data(i); if(flag=1) printf(%-4d,i); int data(int x)int i;for(i=2;ix/2;i+)if(x%i=0)return 0;if(i=x/2)return 1;else return 0;21. 输出n行由“#”组成的矩形,每行“#”的个数为m个,其中n、m由终端(键盘)输入。要求输出m个“#”功能由函数satr(m)函数实现。#include stdio.hvoid satr(int
22、 m);main() int i,n,m; printf(Please input n&m:n); printf(n=); scanf(%d,&n); printf(m=); scanf(%d,&m); printf(n-n); for(i=1;i=n;i+) satr(m); printf(n); void satr(int m) int i; for(i=1;i=m;i+) printf(#); 22. 若ax2+bx+c=0有实根,则求之。#include stdio.h#include math.hmain() int a,b,c; float derta,x1,x2; printf(Please input a,b,c:n); printf(a=); scanf(%d,&a); printf(b=); scanf(%d,&b); printf(c=); scanf(%d,&c); derta=b*b-4*a*c; if(derta0) printf(NO!n); if(derta=0) printf(One!n
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1