青海大学mooc测验与作业.docx
《青海大学mooc测验与作业.docx》由会员分享,可在线阅读,更多相关《青海大学mooc测验与作业.docx(38页珍藏版)》请在冰豆网上搜索。
青海大学mooc测验与作业
第二周
1单选(2分)已知:
chara;intb;floatc;doubled;执行语句c=a+b+c+d;后,变量c的数据类型是____。
得分/总分
A.double
/
C.int
D.char
2单选(2分)已知inti=5;执行语句i+=++i;i的值是____。
得分/总分
A.其他答案都不对
/
3单选(2分)已知intx=5,y=5,z=5;执行语句x%=y+z;后,x的值是____。
得分/总分
/
4单选(2分)下列可以正确表示字符型常数的是____。
得分/总分
A."a"
B."\n"
C.297
D.'\t’ /
5单选(2分)字符串"\\\065a,\n"的长度是____。
得分/总分
A.7
/
6单选(2分)把算术表达式
表示为一个C语言表达式,正确的写法是____。
得分/总分
A.–*a*8+7*12
B.–*a*8+7)*12 /
C.–*8+1/7)*12
D.–*+*12
7单选(2分)温度华氏和摄氏的关系是:
C=5(F-32)/9。
已知:
floatC,F;由华氏求摄氏的正确的赋值表达式是____。
得分/总分
=5/9(F-32)
B.三个表达式都正确
=5*(F-32)/9 /
=5/9*(F-32)
8单选(2分)已知inti=10;表达式“20-0<=i<=9”的值是____。
得分/总分
/
9单选(2分)已知:
intx,y;doublez;则以下语句中错误的函数调用是____。
得分/总分
("%d,%lx,%le",&x,&y,&z)
("%2d*%d%lf",&x,&y,&z)
("%x%*d%o",&x,&y)
("%x%o%",&x,&y,&z) /
10单选(2分)已知”inta=5,b=5,c;”,则执行表达式”c=a=a>b”后变量a的值为____。
得分/总分
/
第三周
1让我们学习用C语言向世界问好。
“HelloWorld”示例程序最早出现于1972年,由贝尔实验室成员BrianKernighan撰写的内部技术文件《IntroductiontotheLanguageB》之中。
不久同作者于1974年所撰写的《ProgramminginC:
ATutorial》,也延用这个示例。
一般来说,这是每一种计算机编程语言中最基本、最简单的程序,亦通常是初学者所编写的第一个程序。
它还可以用来确定该语言的编译器、程序开发环境,以及运行环境是否已经安装妥当。
将“HelloWorld”作为第一个示范程序,已经成为编程语言学习的传统。
我们在这里继续传统,这也是一种向前辈们致敬的方式之一吧!
最早的程序基本是这个样子的:
#includeintmain(){printf("Helloworld.\n");return0;}请模仿上面的程序,看看是否可以通过编译如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。
(2分)
源程序:
#include<>
intmain()
{
printf("Helloworld.\n");
return0;
}
2学学scanf和printf的用法吧(5分)
题目内容:
该如何处理double型的数据:
如何定义变量类型如何使用scanf函数
如果已知圆柱的底面半径r,以及高h,则可计算出圆柱的侧面积
体积
。
其中
。
输入格式:
第一行输入圆柱的底面半径r
第二行输入圆柱的高h
输出格式:
s=<圆柱的侧面积>,v=<圆柱的体积>
要求
1.所有变量都定义为双精度类型
2.结果精确到小数点后两位。
作为练习题目:
我们已经给您编写好了大部分的代码,请您自己修改几个地方,完成程序的剩余部分。
**********************************************分隔线************
#include<>
#definePAI
intmain()
{
intr,h;
doubles,v;
scanf("%d%d", );
s=2*PAI*r*h;
v=PAI*r*r*h;
printf("s=%.2f,v= \n",s, );
return0;
}
输入样例:
2
8
输出样例:
s=,v=
源程序:
#include<>
#definePAI
intmain()
{
doubler,h;
doubles,v;
scanf("%lf%lf",&r,&h);
s=2*PAI*r*h;
v=PAI*r*r*h;
printf("s=%.2lf,v=%.2lf\n",s,v);
return0;
}
3输出字符的ASCII码(10分)
题目内容:
我们在计算机基础中已经学过:
字母在计算机中采用ASCII码进行存储。
下面要从键盘上输入任意一个字符,然后输出该字符对应的ASCII码。
输入格式:
一个字符
输出格式:
该字符对应的ASCII码
输入样例:
A
输出样例:
TheASCIIofcharacter'A'is65.
源程序:
#include<>
intmain()
{
charch;
ch=getchar();
printf("TheASCIIofcharacter'%c'is%d.\n",ch,ch);
return0;
}
4一年级的算术题(10分)
题目内容:
小明上小学一年级了,老师已经教会了他们进行整数的+、-、*、/、%计算,下面老师开始出题,给出一个简单的算术表达式,请小明给出计算结果。
输入格式:
接受两个整数,每个整数之间使用空格分隔。
例如输入格式为:
123 444
输出格式:
分别输出按照整型数据进行+、-、*、/、*之后的运行结果。
输入样例:
103
输出样例:
10+3=13
10-3=7
10*3=30
10/3=3
10%3=1
源程序:
#include<>
intmain()
{
inta,b;
scanf("%d%d",&a,&b);
printf("%d+%d=%d\n",a,b,a+b);
printf("%d-%d=%d\n",a,b,a-b);
printf("%d*%d=%d\n",a,b,a*b);
printf("%d/%d=%d\n",a,b,a/b);
printf("%d%%%d=%d\n",a,b,a%b);
return0;
}
5判断三角形的形状(10分)
题目内容:
输入三角型的三条边,判断三角形的形状。
假设输入的三边边长均>0。
输入格式:
三角型的3条边的长度(int型)。
输出格式:
等边三角形:
equilateraltriangle
等腰三角形:
isocelestriangle
不构成三角形:
non-triangle
一般三角形:
triangle
输入样例:
222
输出样例:
equilateraltriangle.
源程序:
#include<>
intmain()
{
inta,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
if(a==b&&b==c&&a==c)printf("equilateraltriangle.\n");
elseif(a==b||b==c||a==c)printf("isocelestriangle.\n");
elseprintf("triangle.\n");
elseprintf("non-triangle.\n");
return0;
}
第四周作业
本次得分为:
本次测试的提交时间为:
2016-04-23,如果你认为本次测试成绩不理想,你可以选择再做一次。
1单选(2分)
下面程序的输出是
#include<>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;
break;
}
printf("a=%d,b=%d\n",a,b);
}
得分/总分
A.a=1,b=1
B.a=2,b=2
C.a=1,b=0
D.a=2,b=1
/
2单选(2分)
以下程序的输出结果是
main()
{floatx=2,y;
if(x<0)y=0;
elseif(x<5&&!
x)y=1/(x+2);
elseif(x<10)y=1/x;
elsey=10;
printf(”%f\n”,y);
}
得分/总分
A.
B.
C.
/
D.
3填空(2分)
若下列程序执行后t的值为4,则执行时输入a,b的值范围是
#include””
main()
{inta,b,s=1,t=1;
scanf(”%d,%d”,&a,&b);
if(a>0)s+=1;
if(a>b)t+=s;
elseif(a==b)t=5;
elset=2*s;
printf(”s=%d,t=%d\n”,s,t);
}
得分/总分
04填空(2分)
下列程序段当a的值为014和0x14时的执行结果分别是
if(a=0xA|a>12)
if(011&10==a)printf(”%d!
\n”,a);
elseprintf(”Right!
%d\n”,a);
elseprintf(”Wrong!
%d\n”,a);
得分/总分
10!
Right!
11
第四周
1计算时钟的夹角(10分)
题目内容:
钟面上的时针和分针之间的夹角总是在0~180之间(包括0 和180 )。
举例来说,在十二点的时候两针之间的夹角为0 ,而在六点的时候夹角为180 ,在三点的时候为90 。
本题要解决的是计算12:
00到11:
59之间任意一个时间的夹角。
输入格式:
每组测试数据包含两个数字:
第一个数字代表小时(大于0小于等于12),第二个数字代表分(在区间[0,59]上)。
输出格式:
对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。
输出格式如下所示。
再看一看,想一想:
是否可以不用if语句,只使用printf函数来简化你的程序
输入样例:
120
输出样例:
At12:
00theangleisdegrees.
源程序:
#include<>
#include<>
intmain()
{intm,n,h;
doublex,y,degree;
scanf("%d%d",&n,&m);
y=*m;
h=n;
if(n==12)h=0;
x=(h+m/*30;
degree=fabs(y-x);
printf("At%d:
%02dtheangleis%.1lfdegrees.\n",n,m,degree);
return0;
}
2确定母亲节(10分)
题目内容:
母亲节是每年的五月第二个星期天,针对输入的年份,计算该年的哪一天是母亲节。
输入格式:
年份
输出格式:
日期(5月的哪一天)
输入样例:
2014
输出样例:
11
源程序:
#include<>
intmain()
{intw,c,y,m=5,d=1;
scanf("%d",&y);
c=y/100;
y=y%100;
w=c/4-2*c+y+(y/4)+13*(m+1)/5+d-1;
w=w%7;
if(w<0)w=(w+14)%7;
if(w==0)d=w+8;
elseif(w>0)d=15-w;
printf("%d\n",d);
return0;
}
3计算星期(10分)
题目内容:
给出任意一个年月日(年>1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。
输入格式:
年月日
输出格式:
0~6。
星期日用0表示,星期一用1表示,星期二用2表示......星期六用6表示。
假设年份大于1900。
先想一想:
我们现在只会使用if语句,该如何建立数学模型
输入样例:
2013311
输出样例:
1
输入样例:
20131315
输出样例:
monthiserror.
输入样例:
2013332
输出样例:
dayiserror.
源程序:
#include<>
intmain()
{
inty,m,d,c,w;
scanf("%d%d%d",&y,&m,&d);
if(y<1900)printf("yeariserror.\n");
elseif(m<1||m>12)printf("monthiserror.\n");
elseif(d>31||d<1)printf("dayiserror.\n");
else
{c=y/100;
y=y%100;
if(m==1)m=13;
if(m==2)m=14;
w=c/4-2*c+y+y/4+13*(m+1)/5+d-1;
w=w%7;
if(w<0)w=(w+14)%7;
printf("%d\n",w);
}
return0;
}
4求最后3位数值(10分)
题目内容:
小明在中学会求一个数的n次方了,但计算机还不会,请你来编写一个程序吧。
由于计算机比较“笨”,所以我们编写程序的功能不用太强,只要能算出a的n次方的最后3位数就可以了。
输入格式:
a和n的值。
假设a<=150。
输出格式:
求a的n次方的最后3位数。
提示:
再想一想,你的方法对吗你用的是什么数据类型
输入样例:
100
输出样例:
Thelast3numbersis1.
源程序:
#include<>
intmain()
{inta,n,i,x;
intp=1;
scanf("%d%d",&a,&n);
if(n!
=0&&a<=150)
{for(i=1;i<=n;i++)
p=p%1000*a;
x=p%1000;
printf("Thelast3numbersis%03d.\n",x);
}
elseprintf("Thelast3numbersis1.\n");
return0;
}
第五周编程作业
1锻炼身体吧(10分)
题目内容:
沫沫,灰灰和渣渣去锻炼身体,如果对他们跑步的距离分别只计整数a、b、c,由于他们身高的差距,造成了a<=b<=c,并且渣渣跑了N米之后就再也跑不动了。
但是,按照他们事先的约定:
只有当c*c==a*a+b*b时,他们的锻炼才有效果。
现在他们三个人想知道,如果渣渣的极限N已知,那么有多少种有锻炼效果的跑步方案(即a,b,c有多少种可能的取值)。
输入格式:
一个整数N,表示渣渣的体力极限,N<=5000。
输出格式:
一个整数,代表他们跑步方案的个数。
Hint:
对于输入N=5,有方案a=3,b=4,c=5,共一种。
输入样例:
5
输出样例:
1
源程序:
#include<>
intmain()
{
intn,a,b,c,m;
scanf("%d",&n);
m=0;
for(c=1;c<=n;c++)
for(a=1;a<=n;a++)
for(b=1;b<=n;b++)
if(c*c==a*a+b*b&&a<=b)m++;
printf("%d\n",m);
return0;
}
2寻找特殊偶数(10分)
题目内容:
有一种特殊偶数,它每一位上的数字都两两不相同。
我们现在需要找出四位数中某一区间内的这类偶数。
输入格式:
所要寻找的四位偶数的范围。
每组输入有两个数字:
第一个数字是最小范围;第二个数字是最大范围。
如果输入遇到0,输入结束。
输出格式:
列出此范围内的所有特殊偶数,并且列出此范围内特殊偶数的个数。
输入样例:
30003020
60406090
00
输出样例:
3012 3014 3016 3018
counter=4
6042 6048 6052 6054 6058 6072 6074 6078 6082 6084
counter=10
输入样例:
9101
87-1
00
输出样例:
Error
Error
源程序:
#include<>
intmain()
{
intm,n,i,counter;
inta,b,c,d;
do{
scanf("%d%d",&m,&n);
if(m!
=0&&n!
=0&&(m>=1000&&m<10000)&&(n>=1000&&n<10000)&&m{counter=0;
for(i=m;i<=n;i++)
if(i%2==0)
{a=i/1000;b=i%1000/100;c=i%100/10;d=i%10;
if(a!
=b&&a!
=c&&a!
=d&&b!
=c&&b!
=d&&c!
=d)
{counter++;printf("%d",i);}
}
printf("\ncounter=%d\n",counter);
}
elseif(m==0&&n==0)return0;
else
printf("Error\n");
}while
(1);
return0;
}
3求最小m值(10分)
题目内容:
求满足下列不等式的最小m。
1+2+3+4+......+m≥n
例如:
n=100,当m=14时,满足:
1+2+3+4+...+13=91<100,而1+2+3+4+......+14=105>100。
输入格式:
n
输出格式:
m
输入样例:
100
输出样例:
14
源程序:
#include<>
intmain()
{
intn,m,s=0;
scanf("%d",&n);
for(m=1;ss=s+m;
printf("%d\n",m-1);
return0;
}
第六周作业
1单选(2分)求取满足式
的n,正确的语句是
A.for(i=1,s=0;(s=s+i*i++)<=1000;n=i)
B.for(i=1,s=0;(s=s+i*++i)<=1000;n=i)
C.for(i=1,s=0;(s=s+i*i)<=1000;n=++i)
D.for(i=1,s=0;(s=s+i*i)<=1000;n=i++)
2单选(2分)下面的for语句
1.for(x=0,y=10;(y>0)&&(x<4);x++,y-- )
A.循环执行3次
B.循环执行4次
C.是无限循环
D.循环次数不定
3单选(2分)已知inti=1;执行语句while(i++<4);后,变量i的值为
A.5
B.3
C.4
D.6
4单选(2分)下面程序的输出结果是____
1. main()
2. { int i,j,x=0;
3. for(i=0;i<2;i++)
4. { x++;
5. for(j=0;j<-3;j++)
6. { if(j%2)
7. continue;
8. x++;
9. }
10. x++;
11. }
12. printf(”x=%d\n”,x);
13. }
A.x=12
B.x=6
C.x=8
D.x=4
5单选(2分)假定从键盘上输入“,<回车>”,下面程序的输出是____
1. #include <>
2. main()
3. { float x,y,z;
4. scanf(”%f,%f”,&x,&y);
5. z=x/y;
6. while
(1)
7. { if(fabs(z)>
8. { x=y;
9. y=z;
10. z=x/y;
11. }
12. else break;
13. }
14. printf(”%f\n”,y);
15. }
注:
fabs()是浮点数绝对值函数。
A.
B.
C.
D.
6填空(2分)下面程序的功能是输出1到100之间每位数的乘积大于每位数的和的数。
例如数字26,数位上数字的乘积12大于数字之和8。
(答案以① ② ③ 的形式提交,如①a ②b ③c)
1. main()
2.