C语言程序设计题集.docx
- 文档编号:29986604
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:31
- 大小:228.35KB
C语言程序设计题集.docx
《C语言程序设计题集.docx》由会员分享,可在线阅读,更多相关《C语言程序设计题集.docx(31页珍藏版)》请在冰豆网上搜索。
C语言程序设计题集
《c语言程序设计题集》
(一)关于顺序结构、选择结构、循环结构的程序
【程序1】
编写程序,将10000秒转换成以“XX时XX分XX秒”格式输出。
#includevstdio.h>
intmain()
{inth,m,s,a;
a=10000;
h=10000/3600;
m=(10000-h*3600)/60;
s=10000-h*3600-m*60;
printf("%d时,%d分,%£|秒",h,m,s);
return0;
}
【程序2】
输入1个字母,如果它是小写字母,则首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:
输入g,则输出FGH输入a,则输出ZAB输入M则输出LMN输入乙则输出YZA
#include
{charc1,c2,c3;
scanf("%c",&c1);
if(c1>=97&&c1<=122)
c1=c1-32;
c2=c1-1;
c3=c1+1;
if(c1==65)
c2=90;
if(c1==90)
c3=65;
printf("%c%c%c",c2,c1,c3);
return0;
}
【程序3】
输入简单表达式实现一次加、减、乘、除四则运算。
例如输入1+5或3*6,计算结果。
#includevstdio.h>
intmain()
{floata,b,x;
charc;
scanf("%f%c%f",&a,&c,&b);
switch(c)
{case'+':
x=a+b;break;
case'-':
x=a-b;break;
case'*':
x=a*b;break;
case'/':
if(b==0)printf("ivisoriszero\n");
elsex=a/b;break;
}
printf("%f",x);
return0;
}
【程序4】
输入十个整数,求其中的最大数、最小数及平均数。
#includevstdio.h>
intmain()
{inta,i,max,min;
floatave;
scanf("%d",&a);
max=min=a;
ave=a;
for(i=1;i<=9;i++)
{scanf("%d",&a);
ave=ave+a;
if(a>max)
max=a;
elseif(a min=a; } ave=ave/10.0; printf("max=%d\nmin=%d\nave=%f\n",max,min,ave); return0; } 【程序5】 题目: 编写程序,求解一元二次方程ax2+bx+c=0的根,要求考虑a=0,及方程有实数根与复数根的情况。 #includevstdio.h> #includevmath.h>intmain() doublea,b,c,disc,x1,x2,p,q; scanf("%lf%lf%lf",&a,&b,&c); if(a==0) {x1=x2=-c/b; printf("realroots: \nx1=%7.2f\nx2=%7.2f\n",x1,x2); else disc=b*b-4*a*c; if(disc<0) printf("Thisequationhasn'trealroots\n"); else {p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf("realroots: \nx1=%7.2f\nx2=%7.2f\n",x1,x2); return0; } 【程序6】 题目: 输入任意学生的百分制成绩,要求输出成绩等级‘A'‘B'、‘C'‘D'、‘E'90分以 上为‘A,80-89分为‘B',70-79F分为‘C,60-69分为‘D,60分以下为‘E。 #include intx; scanf("%d",&x); printf("Yourscore: "); if(x>=90&&x<=100)printf('A'); elseif(x>=80&&x<=89)printf('B'); elseif(x>=70&&x<=79)elseif(x>=60&&x<=69)printf('D'); elseprintf('E'); return0; } 【程序7】 题目: 输入一行字符,分别统计其中的英文字符,空格,数字字符和其他字符的个数是多少? #include intn1=0,n2=0,n3=0,n4=0,i; printf("输入一串字符\n"); gets(c); for(i=0;c[i]! ='\0';i++) if(c[i]>='a'&&c[i]<='z') n1++; elseif(c[i]>='0'&&c[i]<='9') n2++; elseif(c[i]=='') n3++; elsen4++; printf("英文字符数=%d数字字符数=%d空格数=%d其他字符数=%d",n1,n2,n3,n4); return0; 【程序8】 题目: 输入某年某月某日,判断这一天是这一年的第几天? 程序分析: 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天;如果是闰年且输入月份大于3时需考虑多加一天。 #includevstdio.h> intmain() {inta,b,c; printf("输入某年某月某日\n"); scanf("%d%d%d",&a,&b,&c); switch(b-1) { case11: c=c+30; case10: c=c+31; case9: c=c+30; case8: c=c+31; case7: c=c+31; case6: c=c+30; case5: c=c+31; case4: c=c+30; case3: c=c+31; case2: ; case1: c=c+31; } if(a%4==0&&a%100! =0||a%400==0) c=c+29; elsec=c+28; printf("是%£|年的第%cR",a,c); return0; } 【程序9】 题目: 古典问题有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个 月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 请写出前30个数。 程序分析: 兔子的规律为Fibonacci序列 1,1,2,3,5,8,13,21.... 找出其规律,即可解决问题。 #include intmain() { intf1=1,f2=1,f3; inti; printf("%d\n%d\n",f1,f2); for(i=1;i<=30;i++) { f3=f1+f2; printf("%ld\n",f3); f1=f2; f2=f3; } return0; } 【程序10】 题目: 判断101-200之间有多少个素数,并输出所有素数。 程序分析: 判断素数的方法: 用一个数分别去除2到此数的平方根整值,如果能被整除, 则表明此数不是素数,反之是素数。 #includevstdio.h> #include intmain() { intn,r,i,a=0,w; for(n=101;*=200;n++) { for(i=2,w=0;iv=sqrt(n);i++) { if(n%i==0) w=1; } if(w==0) {printf("%d\n",n); a=a+1; }} printf("%d",a); return0; } 【程序11】 “水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和 153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三 题目: 打印出所有的等于该数本身。 例如: 次方。 循环控制100-999个数,每个数分解出个位,十位,百位。 程序分析: 利用for #includevstdio.h> intmain() {inti,a,b,c; for(i=100;i<=999;i++) {a=i/100; b=i%100/10; c=i%100%10; if(a*a*a+b*b*b+c*c*c==i) printf("%d\n",i); } return0; } 【程序12】 题目: 输入两整数,求他们的最大公约数和最小公倍数。 程序分析: 最小公倍数等于两整数之乘积除以最大公约数#includevstdio.h> intmain() {intn,m,r,temp,p; printf("输入两个整数\n"); scanf("%d%d",&n,&m); if(nvm) {temp=n; n=m; m=temp; } p=n*m; while(m! =0) { r=n%m; n=m;m=r; printf("它们的最大公约数为: %d",n); printf("它们的最小公倍数为: %d",p/n); return0; } 【程序13】 题目: 求1+2! +3! +...+20! 的和 #includevstdio.h> intmain() {floats=0,t=1; intn; for(n=1;*=20;n++) {t=t*n; s=s+t; } printf("1! +2! +....+20! =%.0lf\n",s); return0; } 【程序14】 题目: 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。 程序分析: 用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第 二个字母。 #include intmain() {charch; ch=getchar(); switch(ch) {case'm': printf("todayisMonday.");break; case't': ch=getchar(); if(ch=='u')printf("todayisTuesday."); elseif(ch=='h')printf("todayisThursday.");break; case'w': printf("todayisWednesday.");break; casefprintf("todayisFriday.");break; case's': ch=getchar();if(ch=='a')printf("todayisSaturday."); elseif(ch=='u')printf("todayisSunday.");break; default: printf("error");} return0; 【程序15】 题目: 八进制转换为十进制(或十六进制转换成十进制)。 8进制 #includevstdio.h> intmain() {inti,s,a; charc[20]; printf("输入一个8进制数: "); gets(c);s=0; for(i=0;c[i]! ='\0';i++) {a=c[i]-48;/*将字符转换成对应数字*/ s=s*8+a; } printf(”十进制数: %d\n",s); return0; } 16进制 #include intmain() {inti,s,a,w=0; charc[20]; printf("输入一个16进制数: "); gets(c); s=0; for(i=0;c[i]! ='\0';i++) {if(c[i]>='0'&&c[i]<='9')a=c[i]-48; elseif(c[i]>='A'&&c[i]<='E')a=c[i]-55; else{w=1;break;}; s=s*16+a; } if(w==0)printf("十进制数: %d\n",s); elseprintf("error\n"); return0; } 【程序16】 题目: 企业发放的奖金根据利润提成。 利润低于或等于10万元时,奖金可提10%利润高于 10万元,低于20万元时,低于10万元的部分按10%g成, \l7\l7\l7\l7 1234 咼于10万元的部分,可提成7.5%; 20万到40万之间时,高于20万元的部分,可提成5% 40万到60万之间时高于40万元的部分,可提成3% 60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100 万元的部分按1%g成, 从键盘输入当月利润,求应发放奖金总数? #includevstdio.h> intmain() {doublea,b; printf("当月利润\n"); scanf("%lf",&a); if(a<=100000) b=0.1*a; elseif(a>200000&&a<=400000)b=100000*0.1+100000*0.075+(a-200000)*0.05; elseif(a>400000&&a<=600000)b=100000*0.175+200000*0.05+(b-400000)*0.03; elseif(a>600000&&a<=1000000)b=100000*0.275+200000*0.03+(b-600000)*0.015; elseif(a>1000000) b=100000*0.1+(a-100000)*0.075; elseif(a>100000&&a<=200000) b=100000*0.281+400000*0.015+(b-1000000)*0.01; printf("奖金为%.5lf元",b); return0; } 【程序17】 输出1000以内的完数(一个数恰好等于其因子之和)。 #include intmain() {inti,a,j; for(i=1;i<=1000;i++) {a=0; for(j=1;j<=i/2;j++) if(i%j==0)a=a+j; if(a==i)printf("%5d",i); } return0; } (二)关于数组及函数的程序: 【程序18】 题目: 将一个数组中的元素逆序输出。 #include intmain() {inta[10],i; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=9;i>=0;i--) printf("%5d",a[i]); return0; } 【程序19】 题目: 写一个函数,将一个3*3的整型矩阵转置。 #include intmain() {voidzz(intx[3][3]); inta[3][3],i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); zz(a); return0; } voidzz(intx[3][3]){inti,j,y[3][3];for(i=0;iv3;i++)for(j=0;j<3;j++)y[i][j]=x[j][i];for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%5d",y[i][j]);printf("\n");} } 题目: 输入6行6列的矩阵a,然后 1)输出矩阵a 2).将对角线(指矩阵的左上角到右下角的对角线)之外的上三角的每个元素加1,下三 角中的每个元素减1,形成新的矩阵并输出。 3).找出新矩阵a中绝对值最大的元素及其所在的行、列位置并输出。 #include intmain() { inta[6][6],i,j,max,row,colum; for(i=0;iv6;i++) 输入*/ for(j=0;j<6;j++) scanf("%d",&a[i][j]);/* for(i=0;i<6;i++) { for(j=0;j<6;j++) printf("%5d",a[i][j]); printf("\n"); }/*输出*/ max=a[0][0]; for(i=0;i<6;i++) for(j=0;j<6;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j;}/*求最大值,行,列*/ printf("max=%d,row=%d,colum=%d\n",max,row,colum); return0; } 【程序21】 输出杨辉三角形。 15101051 #includevstdio.h> #defineN10 intmain() {inti,j,a[N][N]; for(i=0;i {a[i][i]=1; a[i][0]=1; } for(i=2;i for(j=1;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i {for(j=0;j<=i;j++) printf("%6d",a[i][j]); printf("\n"); } printf("\n"); return0; } 【程序22】 已有一个排好序的数组{136,7,9},要求输入一个数后,按原来的规律将它插入数组中。 #includevstdio.h> intmain() {inta[6]={1,3,6,7,9};inti,j,x,t; printf("insertdata: "); scanf("%d",&x); for(i=0;i<5;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)