C语言上机练习题.docx
- 文档编号:26223657
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:28
- 大小:21.73KB
C语言上机练习题.docx
《C语言上机练习题.docx》由会员分享,可在线阅读,更多相关《C语言上机练习题.docx(28页珍藏版)》请在冰豆网上搜索。
C语言上机练习题
1.输入一个不超过五位的正整数,输出其逆数。
例如输入12345,输出应为54321。
#include"stdio.h"
main()
{
longn;
intww,qw,bw,sw,gw;printf("Pleaseinput:
\n");scanf("%ld",&n);while(n<=0||n>99999)
{
printf("\nThenumberistoolittleortoolarge.Retryplease!
\n");
scanf("%ld",&n);
}if(n>=10000&&n<=99999)
{
ww=n/10000;
qw=n/1000%10;
bw=n/100%10;
sw=n/10%10;
gw=n%10;
printf("Theoldnumberis:
%ld\n",n);
printf("Thenewnumberis:
%d%d%d%d%d\n",gw,sw,bw,qw,ww);
}
elseif(n>=1000&&n<=9999)
{
qw=n/1000;bw=n/100%10;sw=n/10%10;gw=n%10;
printf("Theold
numberis:
%ld\n",n);
printf("Thenew
numberis:
%d%d%d%d\n",gw,sw,bw,qw);
}
elseif(n>=100&&n<=999)
{bw=n/100;sw=n/10%10;gw=n%10;printf("Theoldnumberis:
%ld\n",n);
printf("Thenewnumberis:
%d%d%d\n",gw,sw,bw);
}
elseif(n>=10&&n<=99)
{
sw=n/10;
gw=n%10;
printf("Theoldnumberis:
%ld\n",n);
printf("Thenewnumberis:
%d%d\n",gw,sw);
}
elseprintf("Theoldnumberequalsthenewnumber:
%ld",n);
}
2.计算1+2+3…+n的值,n是从键盘输入的自然数。
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
main()
{
intn,i;
longsum=0;
printf("1+2+3++n\n");
printf("Pleaseinputn:
\n");scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=i;
}
printf("sum=%ld",sum);
}
3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。
、
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
#defineN20
main()
{
inta[N],i,sum=0,count=0;
printf("Pleaseinput
numbers:
\n");
for(i=0;i {scanf("%d",&a[i]); if(a[i]>0) {sum+=a[i]; count++; } }printf("count=%d,sum=%d",count,sum); } 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中各元素的值。 /*Note: YourchoiceisCIDE*/ #include"stdio.h" #defineN5 main() {inta[N],b[N],i; printf("Pleaseinputnumbers: \n"); for(i=0;i {scanf("%d",&a[i]); b[N-i-1]=a[i]; } printf("\nTheoldnumbersare: \n"); for(i=0;i printf("\nThenewnumbersare: \n"); for(i=0;i } 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。 /*Note: YourchoiceisCIDE*/ #include"stdio.h" main() {inti,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=%d\n",i,j,k,n); } 6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的 平方根s,n从键盘输入。 例如若n为1000时,函数值应为: s=153.909064。 /*Note: YourchoiceisCIDE*/ #include"stdio.h" #include"math.h" main() {intn,s,i; floatsum=0;printf("Pleaseinputn: \n"); scanf("%d",&n);while(n<=0) {printf("\nErrorinput.Retryplease: \n"); scanf("%d",&n); } for(i=1;i if(i%3==0&&i%7==0) sum+=i; printf("Thenumber is: %4.2f",sqrt(sum)); } 7.一辆卡车违反交通规则,撞人后逃跑。 现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。 甲说: 牌照的前两位数字是相同的;乙说: 牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说: 四位的车号刚好是一个整数的平方。 请根据以上线索找出车号。 /*Note: YourchoiceisCIDE*/ #include"stdio.h" #include"math.h"main() { inti,qw,bw,sw,gw; for(i=1122;i<=9988;i++) {if(sqrt(i)! =(int)sqrt(i))continue; qw=i/1000;bw=i/100%10;sw=i/10%10; gw=i%10;if(qw==bw&&sw==gw) { printf("\nThenumberis: %d\n",i); break; } } 8.输入1~10之间的一个数字,输出它对应的英文单词。 /*Note: YourchoiceisCIDE*/#include"stdio.h"main() { intn; printf("Pleaseinputn: \n");scanf("%d",&n); while(n<1||n>10) { printf("Error input! Retryplease: \n");scanf("%d",&n); } switch(n) { case 1: printf("One! ");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整除的三位自然数共有多少个,分别是哪些? /*Note: YourchoiceisCIDE*/#include"stdio.h"main() { inti,count=0; for(i=106;i<596;i=i+10) { if(i%3==0&&i%5! =0) { printf("%-4d",i); count++; } } printf("count=%-4d",count); } 10.用自然语言描述程序逻辑如下,试写程序。 1设置环境; 2定义变量i、j、s,以及用于放置结果的变量sum并令sum初 值为0; ③ i=1; ④ 如果i<100, 则转⑤,否 则转⑧; ⑤ 令s=0,求前i 个自然数之 和,并放于变量s之中; 6sum=sum+s; 7i增加1,转④; 8输出和sum,结束。 /*Note: YourchoiceisCIDE */ #include"stdio.h" main() { inti,j; longs=0,sum=0; printf("1+1+2+1+2+3+1+2+3+4 +1+2+3+..+n\n"); i=1; while(i<=3) { s+=i; sum+=s; i++; } printf("sum=%ld",sum); } 11.用自然语言描述的程序逻辑为: 1设置环境; 2定义变量i、flag和 password,并令flag=0,i=0; 3用户回答口令,将其赋于 password变量; 4口令正确? 如果是,则 flag=1,转⑥。 否则转⑤; 5回答三次口令了吗? 如果没有,计数器加1后(i++),转③,否则转⑥; 6根据flag之值输出相应信息。 /*Note: YourchoiceisCIDE */ #include"stdio.h" #include"string.h" #defineN6 main() { inti=0,flag=0; charpassword[N]; printf("Thepassword is: 123456\n"); while(i<3) { gets(password); if(strlen(password)! =6) {printf("Thestringlengthiswrong! Retryplease! \n"); i++; continue; } if(strcmp("123456",password)==0) {flag=1;break;}else{printf("Wronginput! Retryplease! \n"); i++;} } if(flag==1) printf("Rightpassword! \n"); elseprintf("Wrong password! \n"); } 12.用自然语言描述的程序逻辑如下: ①设置环境; ②定义变量digit、x、y分别表示原始数、原始数的个位数和逆数; 3输入原始正整数x; 4从x中分解出个位数字digit; 5合并个位digit至逆数y中; 6原始数x缩小10倍: x=x/10; 7如果x非零,则转④; 7输出逆数y,结束 /*Note: YourchoiceisCIDE */ #include"stdio.h" main() { longdigit,x,y;/*个位数、原始数、逆数*/ printf("Pleaseinputtheoldnumber: \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: YourchoiceisCIDE*/ #include"stdio.h" main() { floata,b,c,flag;/*flag=0不能,flag=1等边,flag=2等腰,flag=3任意*/ printf("Pleaseinput angles: \n"); scanf("%f,%f,%f",&a,&b,&c); if(a+b<=c||a+c<=b||b+c<=a) flag=0; elseif(a==b&&b==c) flag=1; else if(a==b||b==c||c==a) flag=2; elseflag=3; if(flag==0)printf("\nCannot! \n"); if(flag==1)printf("\nDeng Bian.\n"); if(flag==2)printf("\nDeng Yao.\n"); if(flag==3)printf("\nPutong.\n"); } 14.输入10个数,分别统计其中正数、负数、零的个数。 #include"stdio.h"#defineN10main(){inta[N]; inti,count1=0,count2=0,count3=0;/*count1记录正数个数,count2记录负数个数,count3记录0的个数*/ printf("Pleaseinputnumbers: \n"); for(i=0;i {scanf("%d",&a[i]);if(a[i]>0) count1++; if(a[i]<0) count2++; if(a[i]==0) count3++; }printf("count1=%-4d,count2=%-4d,count3=%-4d",count1,count2,count3); } 15.先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。 (设N为100) /*Note: YourchoiceisCIDE*/ #include"stdio.h" #defineN100 #include #include inta[N],i; printf("Pleaseinputnumbers: \n"); randomize(); for(i=0;i {a[i]=random(900)+100; printf("%-4d",a[i]); } n"); printf("\n3,5,7: \n"); for(i=0;i if(a[i]%3==0&&a[i]%5==0&&a[i]%7==0) printf("%-4d",a[i]); } 16.用for编程找出100~200中的完全平方数。 #include"stdio.h" #include"math.h" main() { inti; for(i=100;i<=200;i++) if(sqrt(i)==i%100)printf("%-4d",i); } 17.从终端输入三个正实数,判断这三个数能否构成直角三角形。 #include"stdio.h" main() { floata,b,c,flag;/*flag=0不能,flag=1能*/ printf("Pleaseinputangles: \n"); scanf("%f,%f,%f",&a,&b,&c); while(a<=0||b<=0||c<=0) {printf("Wronginput! Retryplease: \n"); scanf("%d,%d,%d",&a,&b,&c); }if(a+b<=c||b+c<=a||a+c<=b) flag=0; elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b) flag=1; elseflag=0; if(flag==1) printf("\nCan! "); elseprintf("\nCannot! "); } 18.输入一行字符,统计其中有多少个字母(包括大写字母和小写字母)。 /*Note: YourchoiceisCIDE*/#include"stdio.h"#defineN10#include"stdlib.h"#include"ctype.h"#include"string.h"main() { charc[N]; inti,count=0;gets(c); i=0;while(i! =strlen(c)) { if(isupper(c[i])||islower(c [i])) count++;i++; } printf("count=%-4d",count);getch(); } 19.输入一个字串,判断它是否是对称串。 女口”abcdcba”是对称串,”123456789”不是。 /*Note: YourchoiceisCIDE*/#include"stdio.h"#include"string.h"#include"ctype.h"#include"stdlib.h"#defineN10main() {chara[N],b[N],i; printf("Pleaseinputthestring: \n"); gets(a);if(strlen(a)>N) {printf("Wronginput! Retryplease! \n"); gets(a); } strcpy(b,a);strrev(a); if(strcmp(a,b)==0) printf("\nYes! \n"); elseprintf("\nNo! \n"); } 20.随机产生N个大写字母输出,然后统计其中共有多少个元音字符。 (设N为200) /*Note: YourchoiceisCIDE*/#include"stdio.h" #include #include { intc[N],i,count=0;randomize();for(i=0;i {c[i]=random(27)+65;printf("%c",c[i]);if(c[i]=='A'||c[i]=='E'||c[i ]=='I'||c[i]=='O'||c[i]=='U')count++; } printf("\n \n"); printf("\ncount=%-4d",count); }找出三位自然数中的所有素数,要求判断x素数用自定义函数data(x)实现。 #include"stdio.h" intdata(intx);main(){ inti,flag=0;/*1是,0否*/for(i=101;i<=999;i++){ flag=data(i); if(flag==1) printf("%-4d",i); } } intdata(intx) { inti; for(i=2;i if(i==x/2) return1; elsereturn0; } 21.输出n行由“#”组成的矩形,每行“#”的个数为m个,其中n、m由终端(键盘)输入。 要求输出m个“#”功能由函数satr(m)函数实现。 #include"stdio.h" voidsatr(intm); main() {inti,n,m; printf("Pleaseinput 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"); } } voidsatr(intm) {inti; for(i=1;i<=m;i++) printf("#"); } 2 22.若ax+bx+c=0有实根,则求之。 #include"stdio.h"#include"math.h" main() { inta,b,c; floatderta,x1,x2; printf("Pleaseinputa,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(derta<0) printf("NO! \n"); if(derta==0) {printf("One! \n");x1=-b/(2*a);x2=x1; printf("x=%-4.2f",x1); } if(derta>0) {printf("Two! \n"); x1=(-b+sqrt(derta))/(2*a); x2=(-b-sqrt(derta))/(2*a);printf("x1=%-4.2f,x2=%-4.2f ",x1,x2); } } 23.从键盘输入两个字串,判断它们是否相同。 #include"stdio.h" #include"string.h" #defineN20 main() { charc1[N],c2[N]; printf("Pleaseinputtwostringbelow: \n"); gets(c1); gets(c2); printf(" -\n"); printf("Theansweris: ");if(strcmp(c1,c2)==0)pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 练习题