C语言作业题整理.docx
- 文档编号:11171402
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:42
- 大小:25.34KB
C语言作业题整理.docx
《C语言作业题整理.docx》由会员分享,可在线阅读,更多相关《C语言作业题整理.docx(42页珍藏版)》请在冰豆网上搜索。
C语言作业题整理
1.第一次
1.1.编写一程序,通过键盘输入一华氏温度,将其转换为摄氏温度后输出。
公式为c=5/9(f-32)
#include"stdio.h"
main()
{
floatf=0,h=0;
printf("请输入华氏温度:
");
scanf("%f",&f);
printf("转化为摄氏温度为:
");
h=(float)5/9*(f-32);
printf("%.2f\n",h);
}
1.2.通过键盘输入一小写字母,将其转换为大写字母输出,并输出该大写字母的后一位字母和前一位字母(如果输入该大写字母为A,则其前一位字母为Z;如果输入该大写字母为Z,则其后一位字母为A)。
#include"stdio.h"
main()
{
charch1,ch2,ch3,ch;
printf("请输入一个小写字母:
\n");
while(scanf("%c",&ch),ch<97||ch>122)
{
printf("您输入的符号不是小写字母,请重新输入一个小写字母:
\n");
}
printf("其对应的大写字母和前后的大写字母分别为:
\n");
if(ch=='a'){ch2=ch-32;ch1=ch2+25;ch3=ch2+1;}
elseif(ch=='z'){ch2=ch-32;ch1=ch2-1;ch3=ch2-25;}
else{ch2=ch-32;ch1=ch2-1;ch3=ch2+1;}
printf("%c,%c,%c\n",ch1,ch2,ch3);
}
1.3.通过键盘输入一个两位的整数,试编写程序将其个位与十位分别以字符的方式输出。
输出形式为:
“theinputnumberis你输入的整数,thetensis十位数字,theunitsis个位数字。
”如果输入的整数不正确,则输出“wronginput”
#include"stdio.h"
main()
{
inta,b1,b2;
printf("请输入一个两位正整数:
\n");
scanf("%d",&a);
if(a<10||a>=100)
{
printf("输入不符合要求");
}
else
{
b1=a%10;
b2=a/10;
printf("十位数是:
%c\n个位数是:
%c\n",b2+'0',b1+'0');
}
}
1.4.给定方程ax^2+bx+c=0,试编写程序根据键盘输入实数a、b、c,能输出其根,要求:
1.5.如果该方程有两个不同的根,则输出形式为"theAnswerofax^2+bx+c=0isx1=根1,x2=根2"
1.6.如果该方程有两个相同的根,则输出形式为"theAnswerofax^2+bx+c=0isx1=X2=根"
1.7.如果该方程无解,则输出形式为"theAnswerofax^2+bx+c=0isnone",其中a、b、c均为键盘输入,输出结果保留两位小数。
#include"stdio.h"
#include"math.h"
main(){
floata,b,c,disc,x1,x2;
scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;
if(disc==0){
x1=x2=-b/(2*a);
printf("theAnswerofax^2+bx+cisx1=x2=%.2f\n",x1);
}
elseif(disc>0){
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("theAnswerofax^2+bx+cisx1=%.2f,x2=%.2f\n",x1,x2);
}
else{printf("theAnswerofax^2+bx+c=0isnone\n");}
}
2.第二次
2.1.求1/3+3/5+5/7+…前20项之和。
(本题要求分别以goto,for,do...while,while四种循环语句实现)
#include
intmain()
{
inti;
floats=0;
for(i=1;i<=20;i++){
s+=(float)(2*i-1)/(2*i+1);
}
printf("s=%f\n",s);
return0;
}
#include
intmain()
{
intp,r,n,m;
printf("n,m:
");
scanf("%d,%d",&n,&m);
if(p=n*m)
while(m!
=0)
{r=n%m;
n=m;
m=r;}
printf("最大公约数是%d\n",n);
printf("最小公倍数是%d\n",p/n);
return0;
}
#include
voidmain()
{
ints,i,j;
inta;
printf("请输入一个数:
\n");
scanf("%d",&a);
for(i=1;i<=a;i++)
{
s=0;
for(j=1;j
{
if(i%j==0)s=s+j;
}
if(i==s)
{
printf("完全数%d=",i);
for(j=1;j
if(i%j==0)
printf("%d+",j);
printf("\b\n");
}
}
}
2.2.输入两个正整数,求其最小公倍数。
#include
intmain()
{
intn;
printf("请输入你的学号:
\n");
scanf("%d",&n);
if(n%2==0)
{
inti,j,k=3,s=1;
for(i=1;i<8;i++)
{
for(j=0;j for(j=0;j printf("\n"); if(i<4) {k--;s=s+2;} else {k++;s=s-2;} } } else { intm,a,b; printf("请输入任意一个正整数: \n"); scanf("%d",&m); for(a=1;a<=m;a++) {for(b=1;b<=m;b++) printf("*"); printf("\n"); } } return0; } 2.3.如果一个正整数的所有因子之和等于该正整数,则称这个正整数为完全数。 编写程序读入n,输出不超过n的全部完全数。 如6=1+2+3 2.4.28=1+2+4+7+14 #include voidmain() { ints,i,j; inta; printf("请输入一个数: \n"); scanf("%d",&a); for(i=1;i<=a;i++) { s=0; for(j=1;j { if(i%j==0)s=s+j; } if(i==s) { printf("完全数%d=",i); for(j=1;j if(i%j==0) printf("%d+",j); printf("\b\n"); } } } 2.5.将学号对2取模(即取余),值为0的同学完成编写程序利用星号打印出菱形图案;否则完成编写程序利用星号打印出正方形图案。 #include intmain() { intn; printf("请输入你的学号: \n"); scanf("%d",&n); if(n%2==0) { inti,j,k=3,s=1; for(i=1;i<8;i++) { for(j=0;j for(j=0;j printf("\n"); if(i<4) {k--;s=s+2;} else {k++;s=s-2;} } } else { intm,a,b; printf("请输入任意一个正整数: \n"); scanf("%d",&m); for(a=1;a<=m;a++) {for(b=1;b<=m;b++) printf("*"); printf("\n"); } } return0; } 3.第三次 3.1.已知y=2x^3-3x^4+6x^5-4x+50,从x=0到x=2,每隔0.2计算,并输入正整数n,将y的值进行排序后由小到大输出前n项和后n项(如输入5,则输出前5项和后5项,即最小的5个y值及最大的5个y值)。 #include main() { inti,j,k,h,l,n; floatx,t,y[11]; i=0; for(x=0;x<2.1;x=x+0.2) { y[i]=2*x*x*x-3*x*x*x*x+6*x*x*x*x*x-4*x+50;i=i+1; } printf("请输入一个1--11以内正整数\n"); scanf("%d",&n); if(0 { for(l=0;l { for(j=1;j {if(y[j-1]>y[j]) {t=y[j-1];y[j-1]=y[j];y[j]=t;} } } printf("最小的%d个y值是\n\n",n); for(k=0;k printf("%f\n\n",y[k]); printf("最大的%d个y值是\n\n",n); for(h=11-n;h<11;h++) printf("%f\n\n",y[h]); } elseprintf("您输入的数字超出规定范围\n"); } 3.2.输入一个班10个学生的成绩,统计各分数段[0,60),[60,70),[70,80),[80,90),[90-100]的人数。 #include main() { inti,a=0,b=0,c=0,d=0,e=0; floatg[10]; printf("请输入10个学生的成绩,输入完成请按回车键\n"); for(i=0;i<10;i++) scanf("%f",&g[i]); for(i=0;i<10;i++) { if(0<=g[i]&&g[i]<60)a++; elseif(60<=g[i]&&g[i]<70)b++; elseif(70<=g[i]&&g[i]<80)c++; elseif(80<=g[i]&&g[i]<90)d++; elseif(90<=g[i]&&g[i]<=100)e++; elseprintf("输入的成绩有问题\n"); } printf("0-60分人数为%d\n",a); printf("60-70分人数为%d\n",b); printf("70-80分人数为%d\n",c); printf("80-90分人数为%d\n",d); printf("90-100分人数为%d\n",e); } 3.3.求任意输入的5个数中的最大值、最小值和平均值,并求出有多少个数超过平均值。 #include main() { inti,j,k,l,num=0; floatave,t,g[5]; printf("请输入5个数,输入完成请按回车键\n"); for(i=0;i<5;i++) scanf("%f",&g[i]); for(j=0;j<5;j++) { for(k=1;k<5;k++) { if(g[k-1]>g[k]) {t=g[k-1];g[k-1]=g[k];g[k]=t;} } } ave=(g[0]+g[1]+g[2]+g[3]+g[4])/5.0; for(l=0;l<5;l++) {if(g[l]>ave)num++;} printf("5个数中最大值是%f\n",g[4]); printf("5个数中最小值是%f\n",g[0]); printf("5个数的平均值是%f\n",ave); printf("有%d个数超过平均值\n",num); } 4.第四次 4.1.一个学习小组有5个人,每个人有三门课的考试成绩。 求小组分科的平均成绩和各同学平均成绩;同时将各位同学的平均成绩按照从高到低的顺序排名后输出其姓名、平均成绩以及排序号。 张 王 李 赵 周 4.2.ath 80 61 59 85 76 C 75 65 63 87 77 4.3.Eng 92 71 70 90 85 #include"stdio.h" #include"string.h" #include"math.h" main() { charnames[5][5]={{"张"},{"王"},{"李"},{"赵"},{"周"}}; charitems[3][5]; charname[5]; intgrade[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}}; floatavg1[3],avg2[5],temp; inti,j; intsum; strcpy(names[0],"张"); strcpy(names[1],"王"); strcpy(names[2],"李"); strcpy(names[3],"赵"); strcpy(names[4],"周"); /*for(i=0;i<5;i++) gets(names[i]); */ strcpy(items[0],"Math"); strcpy(items[1],"C"); strcpy(items[2],"Eng");/**/ printf("----以下为分科的平均成绩----\n"); for(i=0;i<3;i++){//分科的平均成绩 sum=0; for(j=0;j<5;j++) sum+=grade[j][i]; avg1[i]=(float)sum/5; printf("%s的平均成绩为: %.2f\n",items[i],avg1[i]); } printf("\n\n"); printf("----以下为各同学平均成绩----\n"); for(i=0;i<5;i++){//各同学平均成绩 sum=0; for(j=0;j<3;j++) sum+=grade[i][j]; avg2[i]=(float)sum/3; printf("%s的平均成绩为: %.2f\n",names[i],avg2[i]); } for(i=0;i<4;i++){//各同学平均成绩排序 for(j=i+1;j<5;j++){ if(avg2[i] temp=avg2[i]; avg2[i]=avg2[j]; avg2[j]=temp; strcpy(name,names[i]); strcpy(names[i],names[j]); strcpy(names[j],name); } } } printf("\n\n"); printf("----以下为各位同学平均成绩从高到低的排名----\n"); printf("%s","序号"); printf("%s","姓名"); printf("%s\n","平均成绩"); for(i=0;i<5;i++){ printf("%d",i+1); printf("%s",names[i]); printf("%.2f\n",avg2[i]); } 4.4.用所学过的知识,编写一个竞赛评分程序。 (设有3位选手,5位评委)。 输入包括选手的姓名以及5位评委的分数(为0-100的正整数),评分规则为每位选手的成绩为去掉最高分和最低分后再取平均。 要求用二维数组来设计程序。 输出的格式为排序姓名平均分最高分最低分,要求由高到低对平均分排序,平均分保留2位小数。 如下所示: 4.5.Noname avg max min 4.6.1 c 82.33 99 66 4.7.2 b 80.12 92 70 4.8.3 a 80.11 98 60 #include"stdio.h" #include"string.h" #include"math.h" main() { charname[3][10]; inti,j,max[3],min[3]; intgrade[3][5]; intsum[3]; floatavg[3],float_temp; charstr_temp[10]; intint_temp; intflag=1; printf("pleaseinputinformationofthe3players: \n"); for(i=0;i<3;i++) scanf("%s%d%d%d%d%d",name[i],&grade[i][0],&grade[i][1],&grade[i][2],&grade[i][3],&grade[i][4]); for(i=0;i<3;i++){ for(j=0;j<5;j++){ if(grade[i][j]>100||grade[i][j]<0){ printf("error! "); flag=0; } } } if(flag){ for(i=0;i<3;i++){ max[i]=grade[i][0]; min[i]=grade[i][0]; for(j=1;j<5;j++){ if(max[i] max[i]=grade[i][j]; if(min[i]>grade[i][j]) min[i]=grade[i][j]; } } for(i=0;i<3;i++){ sum[i]=0; for(j=0;j<5;j++) sum[i]+=grade[i][j]; sum[i]-=(max[i]+min[i]); avg[i]=sum[i]/3.0; } for(i=0;i<2;i++){ for(j=i+1;j<3;j++){ if(avg[i] float_temp=avg[i]; avg[i]=avg[j]; avg[j]=float_temp; strcpy(str_temp,name[i]); strcpy(name[i],name[j]); strcpy(name[j],str_temp); int_temp=max[i]; max[i]=max[j]; max[j]=int_temp; int_temp=min[i]; min[i]=min[j]; min[j]=int_temp; } } } printf("%8s%8s%8s%8s%8s\n","排序","姓名","平均分","最高分","最低分"); for(i=0;i<3;i++){ printf("%8d",i+1); printf("%8s",name[i]); printf("%8.2f",avg[i]); printf("%8d",max[i]); printf("%8d\n",min[i]); } } } 4.9.学号对2取余,为0的完成A题,为1的完成B题 4.10.A: 从键盘上输入一个字符串(不能长于30),要求按照字符','分隔将其拆分成数组,并按照字符','出现的顺序倒序输出每个数组的第一个元素。 4.11.示例如输入字符串"able,deal,123,face,1e",则每个数组的第一个元素分别为'a','d','1','f','1',倒序则输出字符串"1f1da" #include"stdio.h" #include"string.h" #include"math.h" main() { inti,k,p,j=0; charstr1[30]; charitems[10][30]; intcount=0; printf("inputastring: \n"); gets(str1); /*i=0; while(str1[i]! ='\0'){ if(str1[i]==',') count++; i++; }*/ k=0; p=0; for(j=0;j if(str1[j]! =','){ items[k][p]=str1[j]; p++; } else{ items[k][p]='\0'; k++; p=0; count++; } } items[k][p]='\0'; for(i=count;i>=0;i--) printf("%c",items[i][0]); printf("\n"); } B: 从键盘上输入两个字符串(长度不大于20)和整数n(0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 作业题 整理