C语言历次上机作业总汇.docx
《C语言历次上机作业总汇.docx》由会员分享,可在线阅读,更多相关《C语言历次上机作业总汇.docx(93页珍藏版)》请在冰豆网上搜索。
![C语言历次上机作业总汇.docx](https://file1.bdocx.com/fileroot1/2023-2/4/d7203ae0-7bdb-44b6-ba47-dd3b3ff7cde8/d7203ae0-7bdb-44b6-ba47-dd3b3ff7cde81.gif)
C语言历次上机作业总汇
第一次上机作业
题目五:
求两个数的中的较大值:
(尝试运行并抄写在课本P9),并保存为test5.c
#include
intmain()
{
inta,b,max;
scanf("%d%d",&a,&b);
if(a>b)
max=a;
else
max=b;
printf("最大值是:
%d\n",max);
return0;
}
第二次上机作业
题目二:
请编程实现输出如下图形,保存为test2.c(也可为星形,或正方形,图形不限)
#include
voidmain()
{
printf("*\n");
printf("***\n");
printf("*****\n");
printf("*******\n");
printf("*****\n");
printf("***\n");
printf("*\n");
}
题目四(选作题):
编写一个程序,输入a,b,c三个值,输出其中最大者,保存为test4.c
#include
voidmain()
{
inta,b,c,max;
scanf("%d%d%d",&a,&b,&c);
if(a>=b&&a>=c)
max=a;
elseif(b>=a&&b>=c)
max=b;
else
max=c;
printf("maxis%d\n",max);
}
第三次上机作业
题目一:
编写以下程序,保存为test1.c
已知一个学生的C语言成绩为92.5,大学物理成绩为85,概率论成绩为79.5,编程求他的总分和平均成绩,并输出总分和平均成绩。
#include
voidmain()
{
floata=92.5,b=85,c=79.5;
intsum;
floataver;
sum=a+b+c;
aver=(a+b+c)/3;
printf("%d,%.2f\n",sum,aver);
}
题目二:
编写程序实现如下功能,保存为test2.c
输入一个三位整数,找出每位上的数字,并反序输出这个数。
如,输入456,则输出654的结果。
#include
voidmain()
{
intm,a,b,c,n;
printf("请输入一个三位数");
scanf("%d",&m);
a=m/100;
b=m/10%10;
c=m%10;
n=c*100+b*10+a;
printf("这个新的三位数为%d\n",n);
}
题目三:
编写程序实现如下功能,保存为test3.c
己知小数x=10.1,y=20.2,求z的值,其中z=x*x+y*y
#include
voidmain()
{
floatx=10.1,y=20.2,z;
z=x*x+y*y;
printf("%.2f\n",z);
}
题目四:
编写程序实现如下功能,保存为test4.c
要将China译成密码.密码规律是:
用原来的字母后面第4个字母代替原来的字母.例如.字母A后面的第4个字母是E用E代替A.因此,CHINA应译为Glmre.请编一程序.用赋初值的方法使C1.C2.C3.C4.C5这五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、c3、c4、c5分别变为‘G’、‘l’、‘m’、‘r’、‘e’,并输出.
#include
voidmain()
{
charc[]="China";
inti;
for(i=0;c[i]!
='\0';i++)
c[i]=c[i]+4;
printf("%s\n",c);
}
第四次上机作业
题目二:
由用户从键盘输入圆的半径,编程序求出圆的周长L和面积S。
要求用scanf函数输入数据,输出时要求有文字说明,取小数点后2位数字,保存为test2.c。
#include
voidmain()
{
intr;
floatL,S;
printf("请输入一个半径r");
scanf("%d",&r);
L=2*3.14*r;
S=3.14*r*r;
printf("周长是%.2f\n面积是%.2f\n",L,S);
}
题目四:
用scanf语句输入一个学生的成绩,判断是否通过考试。
判断标准是大于等于60为通过考试,保存为test4.c。
#include
voidmain()
{
intscore;
scanf("%d",&score);
if(score>=60&&score<=100)
printf("PASS\n");
elseif(score>0&&score<60)
printf("NOTPASS\n");
else
printf("ERROR\n");
}
题目五:
给定一个大写字母,要求用小写字母输出,并且输出该小写字母对应的ASCII码。
保存为test5.c。
#include
voidmain()
{
charA;
scanf("%c",&A);
printf("%c,%d\n",A+32,A+32);
}
选作题:
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:
153=1^3+5^3+3^3。
现在要求输入一个三位数,然后判断它是不是水仙花数,如果是水仙花数,就输出这个数,否则不输出。
#include
voidmain()
{
intm,a,b,c;
scanf("%d",&m);
a=m/100;
b=m%100/10;
c=m%10;
if(m==a*a*a+b*b*b+c*c*c)
printf("%d\n",m);
}
第5次作业
作业1:
请用getcharputchar来实现输入一个大写字母,要求用小写字母输出,并且输出该小写字母。
#include
voidmain()
{
charA,a;
A=getchar();
a=A+32;
putchar(a);
putchar('\n');
}
作业2:
请用if语句实现“奖学金评定”的编程。
如输入一个百分制成绩,要求输出成绩等级‘A’‘B’‘C’‘D’‘E’。
判别学生成绩的等级:
90~100分A级;
80~89分B级;
70~79分C级;
60~69分D级;
<60分E级。
#include
voidmain()
{
intscore;
scanf("%d",&score);
if(score>=90&&score<=100)
printf("A\n");
elseif(score>=80&&score<90)
printf("B\n");
elseif(score>=70&&score<80)
printf("C\n");
elseif(score>=60&&score<70)
printf("D\n");
elseif(score>=0&&score<60)
printf("E\n");
elseprintf("ERROR\n");
}
作业4:
输入某一年,判定这一年是不是闰年,并输出判定结果。
#include
voidmain()
{
intyear;
scanf("%d",&year);
if((year%4==0&&year%100!
=0)||year%400==0)
printf("这年是闰年\n");
else
printf("这年不是闰年\n");
}
作业5:
课本P112习题6
#include
voidmain()
{
intx,y;
scanf("%d",&x);
if(x<1)
y=x;
elseif(x>=1&&x<10)
y=2*x-1;
else
y=3*x-11;
printf("%d\n",y);
}
作业6:
编程序,输入月份数,输出是那个季节。
(春345月,夏678,秋91011,冬12,1,2月)
#include
voidmain()
{
intmonth;
scanf("%d",&month);
if(month>12||month<1)
printf("ERROR\n");
elseif(month>11&&month<3)
printf("春天\n");
elseif(month>2&&month<6)
printf("夏天");
elseif(month>5&&month<9)
printf("秋天\n");
elseprintf("冬天\n");
}
选作题:
有3个整数a,b,c,由键盘输入,输出其中最大的数。
#include
voidmain()
{
inta,b,c,max;
scanf("%d%d%d",&a,&b,&c);
if(a>=b&&a>=c)
max=a;
elseif(b>=a&&b>=c)
max=b;
else
max=c;
printf("maxis%d\n",max);
}
选作题:
输入一个字符,判定它的类别,比如是数字、小写字母、大写字母和其他字符。
#include
voidmain()
{
charc;
scanf("%c",&c);
if(c>='0'&&c<='9')
printf("数字\n");
elseif(c>='a'&&c<='z')
printf("小写字母\n");
elseif(c>='A'&&c<='Z')
printf("大写字母\n");
elseprintf("其他字符\n");
}
第六次作业
作业1:
请用switch语句实现“奖学金评定”的编程。
如输入一个百分制成绩,要求输出成绩等级‘A’‘B’‘C’‘D’‘E’。
判别学生成绩的等级:
90~100分A级;
80~89分B级;
70~79分C级;
60~69分D级;
<60分E级。
当输入为负数或者大于100的数提示出错。
保存为test1.c
#include
voidmain()
{
floata;
printf("请输入成绩:
\n");
scanf("%f",&a);
if(a>100)
printf("error\n");//防止输入104…输出A
elseswitch((int)(a/10))//int取整如10.26舍入后为10,如-5.2舍入后为-6
{
case10:
case9:
printf("A\n");break;
case8:
printf("B\n");break;
case7:
printf("C\n");break;
case6:
printf("D\n");break;
case5:
case4:
case3:
case2:
case1:
case0:
printf("E\n");break;
default:
printf("error\n");
}
}
作业2:
请输入3个整数,输出其中最大的数。
保存为test2.c
#include
voidmain()
{
inta,b,c,max;
printf("请输入三个整数:
\n");
scanf("%d%d%d",&a,&b,&c);
max=a;
if(a
max=b;
elseif(amax=c;
printf("max=%d\n",max);
}
作业3:
给一个不多于5位的正整数,请输入它是几位数。
保存为test3.c
#include
voidmain()
{
inta,b;
printf("请输入一个不多于5位的正整数:
");
scanf("%d",&a);
if(a>9999&&a<100000)
b=5;
elseif(a>999&&a<10000)
b=4;
elseif(a>999&&a<10000)
b=3;
elseif(a>999&&a<10000)
b=2;
elseif(a>-1&&a<10)
b=1;
elseprintf("error\n");
printf("这是一个%d位数",b);
}
作业4:
从键盘上输入三个数据(要求有数据输入前提示),看是否可以构成三角形,如果可以构成三角形,然后判断它是否为等腰三角形以及等边三角形还是直角三角形,否则输出不构成三角形。
保存为test4.c
#include
voidmain()
{
inta,b,c;
printf("请输入三个数据:
\n");
scanf("%d%d%d",&a,&b,&c);
if(a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b)
{printf("这三边能够成三角形\n");
if(a==b==c)
printf("这三边构成等边三角形");
elseif(a==b||b==c||c==a)
printf("这三边构成等腰三角形");
elseif(a*a+b*b==c*c||c*c+b*b==a*a||c*c+a*a==b*b)
printf("这三边构成直角三角形");}
else
printf("这三边不能够成三角形\n");
}
作业5:
输入一个实数,求该实数的绝对值,要求用条件表达式来完成。
保存为test5.c
#include
voidmain()
{
floata;
printf("请输入一个实数\n");
scanf("%f",&a);
printf("该实数的绝对值为%.2f",a=a>0?
a:
-a);
}
作业6:
输入某年某月某日,输出这一天是这一年的第几天?
保存为test6.c
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sampleinput,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
SampleInput
1985/1/20
2006/3/12
SampleOutput
20
71
算法分析提示:
第一步:
注意scanf输入格式,哪个变量接收”月”,哪个变量接收”日”
第二步:
先计算某月以前月份的总天数
第三步:
注意闰年的判断
最后输出天数。
可以用ifelseifelseifelseif…….等完成,也可以用switch语句来实现。
#include
voidmain()
{
intyear,month,day;
printf("请输入年月日\n");
scanf("%d%d%d",&year,&month,&day);
switch(month)
{
case1:
day+=0;break;
case2:
day+=31;break;
case3:
day+=59;break;
case4:
day+=90;break;
case5:
day+=120;break;
case6:
day+=151;break;
case7:
day+=181;break;
case8:
day+=212;break;
case9:
day+=243;break;
case10:
day+=273;break;
case11:
day+=304;break;
case12:
day+=334;break;
default:
printf("error");break;}
if((year%4==0&&year%100!
=0)||(year%400==0))
day+=1;
elseday=day;
printf("这是%d年的第%d天",year,day);
第7次作业
作业1:
编程序完成以下功能:
输入一个整数判断它能不能被3整除,如果能被3整除,就输出这个数,否则不输出。
保存为test1.c
#include
voidmain()
{
inta;
printf("请输入一个整数\n");
scanf("%d",&a);
if(a%3==0)
printf("%d\n",a);
elseprintf("\n");
}
作业2:
编程序完成以下功能:
输入数字1-7中的一个数,按照输入的值输出对应的星期(星期一到星期天),请用switch语句来实现。
保存为test2.c
#include
voidmain()
{
inta;
printf("请输入一个1到7的整数\n");
scanf("%d",&a);
switch(a)
{
case1:
printf("星期一");break;
case2:
printf("星期二");break;
case3:
printf("星期三");break;
case4:
printf("星期四");break;
case5:
printf("星期五");break;
case6:
printf("星期六");break;
case7:
printf("星期日");break;
default:
printf("error\n");
}
}
作业3:
编程序完成以下功能:
输入三个学生的成绩(整型),求这三个学生的总成绩和平均成绩(保留2位小数)。
保存为test3.c
#include
voidmain()
{
inta,b,c;
floataver;
printf("请输入三名学生的成绩\n");
scanf("%d%d%d",&a,&b,&c);
aver=(a+b+c)/3.0;
printf("总成绩为%d\n",a+b+c);
printf("平均成绩为%.2f\n",aver);
}
作业4:
编程序完成以下功能:
输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离(保留2位小数)。
提示:
开平方用sqrt函数,因为要用到数学函数,要在main()前加#include,保存为test4.c
#include
#include
voidmain()
{
floatx1,y1,x2,y2;
doubled;
printf("请输入第一个坐标\n");
scanf("%f%f",&x1,&y1);
printf("请输入第二个坐标\n");
scanf("%f%f",&x2,&y2);
d=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
printf("这两点之间的距离是%.2f\n",d);
}
作业5:
编程序完成以下功能:
根据输入的半径值,计算球的体积(保留2位小数)。
保存为test5.c
#include
#defineP3.1415926
voidmain()
{
floatr;
doublev;
printf("请输入半径\n");
scanf("%f",&r);
v=4*P*r*r*r/3;
printf("球的体积是%.2f",v);
}
第八次作业
【作业2】将100~200之间的所有不能被3整除的数输出,要求输出格式尽量美观,保存为test3.c
#include
voidmain()
{
inti,a=0;
for(i=100;i<=200;i++)
{if(i%3!
=0)
{printf("%4d",i);
a++;if(a%4==0)printf("\n");
}
}
【作业3】输出100-900之间所有水仙花数。
水仙花数是指个位、十位、百位数字的立方和为这个数本身。
例如,153是一个水仙花数,因为153=1^3+5^3+3^3。
保存为test4.c
#include
voidmain()
{
inti,a,b,c;
for(i=100;i<=900;i++)
{a=i/100;
b=(i/10)%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
printf("%d\n",i);
}
}
【作业4】计算下式前n项的和,例如,当形参n的值为10时,函数返回:
9.612558。
保存为test5.c
#include
#definen10
voidmain()
{
inti;
doubles=0;
for(i=1;i<=n;i++)
s+=(2*i-1)*(2*i+1)/((2.0*i)*(2*i));
printf("%f\n",s);
}
【作业5】输入一个数,判断该数是否为素数。
保存为test6.c
#include
voidmain()
{
inta,i;
printf("请输入一个数\n");
scanf("%d",&a);
for(i=2;i{if(a%i==0)
break;
}
if(i>=a)
printf("%d是素数\n",a);
}
【作业6】输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
保存为test7.c
#include
voidmain()
{
chara;
inti=0,j=0,k=0,l=0;
printf("请输入一些字符\n");
while((a=getchar())!
='\n')
{
if((a>='a'&&a<='z')||(a>='A'&&a<='Z'))
i++;
elseif(a>='0'&&