哈工大C语言实验题.docx
《哈工大C语言实验题.docx》由会员分享,可在线阅读,更多相关《哈工大C语言实验题.docx(45页珍藏版)》请在冰豆网上搜索。
哈工大C语言实验题
窗体顶端
Q308.(10分)第5章实验2:
体型判断。
医务工作者经广泛的调查和统计分析,根据身高与体重因素给出了以下按“体指数”进行体型判断的方法。
体指数计算公式是:
t=w/(h*h)
其中:
t是体指数;w是体重,其单位为千克;h是身高,其单位为米。
根据给定的体指数t计算公式,可判断你的体重属于何种类型:
当t<18时,为低体重;
当18≤t<25时,为正常体重;
当25≤t<27时,为超重体重;
当t≥27时,为肥胖。
****输入提示信息格式:
"Pleaseenterh,w:
\n"
****输入数据格式要求:
"%f,%f"(先读入身高,再读入体重,身高以米读入,体重以千克读入)
****输出数据格式要求:
当t<18时,输出:
"Lowerweight!
\n"
当18≤t<25时,输出:
"Standardweight!
\n"
当25≤t<27时,输出:
"Higherweight!
\n"
当t≥27时,输出:
"Toofat!
\n"
窗体底端
#include
#include
main()
{
floatt,w,h;
printf("Pleaseenterh,w:
\n");
scanf("%f,%f",&h,&w);
t=w/(h*h);
if(t<18)
printf("Lowerweight!
\n");
elseif(t>=18&&t<25)
printf("Standardweight!
\n");
elseif(t>=25&&t<27)
printf("Higherweight!
\n");
else
printf("Toofat!
\n");
return0;
}
窗体顶端
窗体顶端
Q586.(
窗体底端
10分)编写一个程序,输入年份和月份,判断该年是否是闰年,并根据给出的月份判断是什么季节和该月有多少天?
(闰年的条件是年份能被4整除但不能被100整除,或者能被400整除;规定3~5月为春季,6~8月为夏季,9~11月为秋季,1、2和12月为冬季)。
**输入格式要求:
"%d,%d"提示信息:
"Pleaseenteryear,month:
"
**输出格式要求:
"%disleapyear\n""%disnotleapyear\n""Theseasonisspring/summer/autumn/winter""Thenumberofdaysofthismonthis%d\n"
程序运行示例如下:
实例1:
Pleaseenteryear,month:
2012,11
2012isleapyear
Theseasonisautumn
Thenumberofdaysofthismonthis30
实例2:
Pleaseenteryear,month:
2013,12
2013isnotleapyear
Theseasoniswinter
Thenumberofdaysofthismonthis31
窗体底端
#include
#include
main()
{
intyear=0,leap=0,mon=0,day=0;
printf("Pleaseenteryear,month:
");
scanf("%d,%d",&year,&mon);
if((year%100!
=0&&year%4==0)||(year%100==0&&year%400==0)){
printf("%disleapyear\n",year);
leap=1;
}
else
printf("%disnotleapyear\n",year);
switch(mon)
{
case 1:
case 2:
case12:
printf("Theseasoniswinter\n");
break;
case 3:
case 4:
case 5:
printf("Theseasonisspring\n");
break;
case 6:
case 7:
case 8:
printf("Theseasonissummer\n");
break;
case 9:
case10:
case11:
printf("Theseasonisautumn\n");
break;
}
switch(mon)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case10:
case12:
day=31;
break;
case 4:
case 6:
case 9:
case11:
day=30;
break;
case 2:
if(leap==1)
day=29;
else
day=28;
}
printf("Thenumberofdaysofthismonthis%d\n",day);
}
窗体顶端
Q3161.(10分)请用elseif多分支条件判断语句编程设计一个简单的计算器程序。
要求:
(1)请用户按以下形式从键盘输入表达式:
操作数①运算符op操作数②
(2)然后计算表达式的值
**输入提示信息**:
无
**输入数据格式**:
"%f%c%f"
**输出数据格式**:
"%.2f%c%.2f=%.2f\n"
若若输入的运算符是除法运算符/,当除数为0时,输出数据格式为:
"datis0!
Error!
\n"
若输入的运算符不是加(+)、减(-)、乘(*)、除(/),则输出数据格式为:
"Error!
\n"
[友情提示]:
①用户输入的运算符为算术运算符:
加(+)、减(-)、乘(*)、除(/)。
用字符变量op表示;
②操作数①和操作数②为浮点型数据,分别用浮点型变量dat1、dat2表示。
③程序运行结果如下所示:
1+2↙
1.00+2.00=3.00
#include
#include
main()
{
floata=0,b=0;
charop;
scanf("%f%c%f",&a,&op,&b);
if(op=='+')
printf("%.2f%c%.2f=%.2f\n",a,op,b,a+b);
elseif(op=='-')
printf("%.2f%c%.2f=%.2f\n",a,op,b,a-b);
elseif(op=='*')
printf("%.2f%c%.2f=%.2f\n",a,op,b,a*b);
elseif(op=='/'){
if(b!
=0)
printf("%.2f%c%.2f=%.2f\n",a,op,b,a/b);
else
printf("datis0!
Error!
\n");
}
else
printf("Error!
\n");
}
窗体底端
窗体顶端
Q3185.(10分)实验二(2016春刘秉权C语言课):
根据输入的百分制成绩score,转换成相应的五分制成绩grade后输出。
转换规则为(要求用switch语句实现):
当score大于等于90且小于等于100时,grade=A;
当score大于等于80且小于90时,grade=B;
当score大于等于70且小于80时,grade=C;
当score大于等于60且小于70时,grade=D;
当score大于等于0且小于60时,grade=E。
格式要求:
输入提示:
"Pleaseenterscore:
"
输出形式形如:
"100--A"、"75--C"、"0--E"
当输入分数不正确时,输出:
"Inputerror!
"
#include
main()
{
ints,m;
printf("Pleaseenterscore:
");
scanf("%d",&s);
m=s<0||s>100?
-1:
s/10;
switch(m)
{
case10:
case 9:
printf("%d--A\n",s);
break;
case 8:
printf("%d--B\n",s);
break;
case 7:
printf("%d--C\n",s);
break;
case 6:
printf("%d--D\n",s);
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
printf("%d--E\n",s);
break;
default:
printf("Inputerror!
");
}
}
窗体底端
窗体顶端
Q221.(10分)编程从键盘输入某年某月(包括闰年),用switch语句编程输出该年的该月拥有的天数。
要求考虑闰年以及输入月份不在合法范围内的情况。
已知闰年的2月有29天,平年的2月有28天。
**输入格式要求:
"%d,%d"提示信息:
"Inputyear,month:
"
**输出格式要求:
"31days\n""29days\n""28days\n""Inputerror!
\n"
程序运行示例如下:
Inputyear,month:
2004,2
29days
#include
main()
{
inta,b;
printf("Inputyear,month:
");
scanf("%4d,%2d",&a,&b);
switch(b)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case10:
case12:
printf("31days\n");
break;
case 4:
case 6:
case 9:
case11:
printf("30days\n");
break;
case 2:
if((a%4==0&&a%100!
=0)||a%400==0)
printf("29days\n");
else
printf("28days\n");
break;
default:
printf("Inputerror!
\n");
}
return0;
}
窗体底端
窗体顶端
Q210.(10分)第7章实验任务1:
所谓素数是指这个数只能被1和自身整除。
要求在主函数输入一个数,
调用函数Fun()判断该数是否是素数。
打印信息在主函数中进行。
例如:
从键盘输入5,5是素数则打印如下信息:
"5isaprimenumber".
又如:
从键盘输入4,4不是素数则打印如下信息:
"4isnotaprimenumber"
负数、0和1均不是素数。
对输入的数据要考虑数据的合法性,不满足条件的数
要重新输入直到满足条件为止。
不能使用全局变量,不按给定的函数原型编写程序
不给分。
Fun()函数原型如下:
intFun(intm);
**输入数据提示信息:
"Pleaseinputanumber:
\n"
注:
该提示信息请放在循环体外
**输入数据格式为:
"%d"
**输出格式要求:
若是素数输出数据格式为:
"%disaprimenumber\n"
若不是素数输出数据格式为:
"%disnotaprimenumber\n"
#include
#include
intFun(intm);
main()
{
inta;
printf("Pleaseinputanumber:
\n");
while(scanf("%d",&a))
{
if(a<=0||a==1)
continue;
elseif(a>0&&a!
=1&&Fun(a)==1)
printf("%disaprimenumber\n",a);
else
printf("%disnotaprimenumber\n",a);
break;
}
return0;
}
intFun(intm)
{
inti,result;
result=1;
if(m!
=2)
{
for(i=2;i {
if(m%i==0)
{
result=0;
break;
}
}
}
returnresult;
}
窗体底端
窗体顶端
Q3185.(10分)实验二(2016春刘秉权C语言课):
根据输入的百分制成绩score,转换成相应的五分制成绩grade后输出。
转换规则为(要求用switch语句实现):
当score大于等于90且小于等于100时,grade=A;
当score大于等于80且小于90时,grade=B;
当score大于等于70且小于80时,grade=C;
当score大于等于60且小于70时,grade=D;
当score大于等于0且小于60时,grade=E。
格式要求:
输入提示:
"Pleaseenterscore:
"
输出形式形如:
"100--A"、"75--C"、"0--E"
当输入分数不正确时,输出:
"Inputerror!
"
#include
main()
{
ints,m;
printf("Pleaseenterscore:
");
scanf("%d",&s);
m=s<0||s>100?
-1:
s/10;
switch(m)
{
case10:
case 9:
printf("%d--A\n",s);
break;
case 8:
printf("%d--B\n",s);
break;
case 7:
printf("%d--C\n",s);
break;
case 6:
printf("%d--D\n",s);
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
printf("%d--E\n",s);
break;
default:
printf("Inputerror!
");
}
}
窗体底端
窗体顶端
Q1709.(10分)第6章实验1:
国王的许诺
相传国际象棋是古印度舍罕王的宰相达依尔发明的。
舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。
这位聪明的宰相指着8×8共64格的象棋盘说:
陛下,请您赏给我一些麦子吧,就在棋盘的第1个格子中放1粒,第2格中放2粒,第3格中放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。
舍罕王让人扛来一袋麦子,他要兑现他的许诺。
请问:
国王能兑现他的许诺吗?
试编程计算舍罕王共要多少麦子赏赐他的宰相,这些麦子合多少立方米(已知1立方米麦子约1.42e8粒)?
注:
(1)不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程。
(2)用标准C语言编程,所有变量必须在第一条可执行语句前定义。
(3)输入输出格式要和以下给定格式完全一致。
**输入格式:
无
**输出格式:
"sum=%e\n"
"volum=%e\n"
%e表示double类型
#include
#include
main()
{
inti;
doubles,v;
s=0;
for(i=0;i<=63;i++)
s=s+pow(2,i);
v=s/1.42e8;
printf("sum=%e\n",s);
printf("volum=%e\n",v);
return0;
}
窗体底端
窗体顶端
Q1719.(10分)第7章实验任务3
从键盘任意输入一个整数n,编程计算并输出1~n之间的所有素数之和
输入提示信息:
"Inputn:
"
输入格式:
"%d"
输出格式:
"sum=%d\n"
#include
#include
intFun(intm);
main()
{
intn,i,s;
s=0;
printf("Inputn:
");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
if(Fun(i)==1)
s=s+i;
}
printf("sum=%d\n",s);
return0;
}
intFun(intm)
{
inti,result;
result=1;
if(m!
=2)
{
for(i=2;i {
if(m%i==0)
{
result=0;
break;
}
}
}
returnresult;
}
窗体底端
窗体顶端
Q1720.(10分)第7章实验任务6
从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出"Itisaprimenumber"。
例如,用户输入90时,程序输出90=2*3*3*5;用户输入17时,程序输出"Itisaprimenumber"。
输入提示信息:
"Inputm:
"
输入格式:
"%d"
输出格式:
是素数时输出"Itisaprimenumber\n"
否则输出用"%d=","%d*"
运行示例1:
Inputm:
90↙
90=2*3*3*5
运行示例2:
Inputm:
13↙
Itisaprimenumber
#include
intFun(intm);
intIsPerfect(intm);
main()
{
intm,i,p;
printf("Inputm:
");
scanf("%d",&m);
p=m;