C语言上机练习题.docx
- 文档编号:16418376
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:32
- 大小:21.75KB
C语言上机练习题.docx
《C语言上机练习题.docx》由会员分享,可在线阅读,更多相关《C语言上机练习题.docx(32页珍藏版)》请在冰点文库上搜索。
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("Theoldnumberis:
%ld\n",n);
printf("Thenewnumberis:
%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("Pleaseinputnumbers:
\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("%-4d",a[i]); printf("\nThenewnumbersare: \n"); for(i=0;i printf("%-4d",b[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("Thenumberis: %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("Errorinput! Retryplease: \n"); scanf("%d",&n); } switch(n) { case1: printf("One! ");break; case2: printf("Two! ");break; case3: printf("Three! ");break; case4: printf("Four! ");break; case5: printf("Five! ");break; case6: printf("Six! ");break; case7: printf("Seven! ");break; case8: printf("Eight! ");break; case9: printf("Nine! ");break; case10: 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.用自然语言描述程序逻辑如下,试写程序。 ①设置环境; ②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③i=1; ④如果i≤100,则转⑤,否则转⑧; ⑤令s=0,求前i个自然数之和,并放于变量s之中; ⑥sum=sum+s; ⑦i增加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.用自然语言描述的程序逻辑为: ①设置环境; ②定义变量i、flag和password,并令flag=0,i=0; ③用户回答口令,将其赋于password变量; ④口令正确? 如果是,则flag=1,转⑥。 否则转⑤; ⑤回答三次口令了吗? 如果没有,计数器加1后(i++),转③,否则转⑥; 6根据flag之值输出相应信息。 /*Note: YourchoiceisCIDE*/ #include"stdio.h" #include"string.h" #defineN6 main() { inti=0,flag=0; charpassword[N]; printf("Thepasswordis: 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("Wrongpassword! \n"); } 12.用自然语言描述的程序逻辑如下: ①设置环境; ②定义变量digit、x、y分别表示原始数、原始数的个位数和逆数; ③输入原始正整数x; ④从x中分解出个位数字digit; ⑤合并个位digit至逆数y中; ⑥原始数x缩小10倍: x=x/10; ⑦如果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("Pleaseinputangles: \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; elseif(a==b||b==c||c==a) flag=2; elseflag=3; if(flag==0)printf("\nCannot! \n"); if(flag==1)printf("\nDengBian.\n"); if(flag==2)printf("\nDengYao.\n"); if(flag==3)printf("\nPutong.\n"); } 14.输入10个数,分别统计其中正数、负数、零的个数。 #include"stdio.h" #defineN10 main() {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 main() { inta[N],i; printf("Pleaseinputnumbers: \n"); randomize(); for(i=0;i {a[i]=random(900)+100; printf("%-4d",a[i]); } printf("\n--------------------\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" #defineN10 main() {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 #defineN200 main() { 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(x%i==0) return0; if(i==x/2) return1; elsereturn0; } 21.输出n行由“#”组成的矩形,每行“#”的个数为m个,其中n、m由终端(键盘)输入。 要求输出m个“#”功能由函数satr(m)函数实现。 #include"stdio.h" voidsatr(intm); main() {inti,n,m; printf("Pleaseinputn&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("#"); } 22.若ax2+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")
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 练习题