哈工大C语言实验题-54页文档资料.doc
如有侵权,请联系网站删除,仅供学习与交流哈工大C语言实验题【精品文档】第 54 页窗体顶端Q308.(10分)第5章 实验2:体型判断。医务工作者经广泛的调查和统计分析,根据身高与体重因素给出了以下按“体指数”进行体型判断的方法。体指数计算公式是: t = w /(h*h) 其中:t是体指数;w是体重,其单位为千克;h是身高,其单位为米。根据给定的体指数t计算公式,可判断你的体重属于何种类型: 当 t<18 时,为低体重; 当 18t<25 时,为正常体重; 当 25t<27 时,为超重体重; 当 t27 时,为肥胖。*输入提示信息格式:"Please enter h,w:n"*输入数据格式要求:"%f,%f"(先读入身高,再读入体重,身高以米读入,体重以千克读入)*输出数据格式要求: 当 t<18 时,输出:"Lower weight!n" 当 18t<25 时,输出:"Standard weight!n" 当 25t<27 时,输出:"Higher weight!n" 当 t27 时, 输出:"Too fat!n"窗体底端#include <stdio.h> #include <stdlib.h> main() float t,w,h; printf("Please enter h,w:n"); scanf("%f,%f",&h,&w); t = w/(h*h); if(t<18) printf("Lower weight!n"); else if(t>=18&&t<25) printf("Standard weight!n"); else if(t>=25&&t<27) printf("Higher weight!n"); else printf("Too fat!n"); return 0; 窗体顶端窗体顶端Q586.(窗体底端10分)编写一个程序,输入年份和月份,判断该年是否是闰年,并根据给出的月份判断是什么季节和该月有多少天?(闰年的条件是年份能被4整除但不能被100整除,或者能被400整除;规定35月为春季,68月为夏季,911月为秋季,1、2和12月为冬季)。*输入格式要求:"%d,%d" 提示信息:"Please enter year,month:"*输出格式要求:"%d is leap yearn" "%d is not leap yearn" "The season is spring/summer/autumn/winter" "The number of days of this month is %dn"程序运行示例如下:实例1:Please enter year,month:2012,112012 is leap yearThe season is autumnThe number of days of this month is 30实例2:Please enter year,month:2013,122013 is not leap yearThe season is winterThe number of days of this month is 31窗体底端#include <stdio.h> #include <stdlib.h> main() int year=0,leap=0,mon=0,day=0; printf("Please enter year,month:"); scanf("%d,%d",&year,&mon); if(year%100!=0&&year%4=0)|(year%100=0&&year%400=0) printf("%d is leap yearn",year); leap=1; else printf("%d is not leap yearn",year); switch(mon) case 1: case 2: case 12:printf("The season is wintern"); break; case 3: case 4: case 5:printf("The season is springn"); break; case 6: case 7: case 8:printf("The season is summern"); break; case 9: case 10: case 11:printf("The season is autumnn"); break; switch(mon) case 1: case 3: case 5: case 7: case 8: case 10: case 12:day=31; break; case 4: case 6: case 9: case 11:day=30; break; case 2: if(leap=1) day=29; else day=28; printf("The number of days of this month is %dn",day); 窗体顶端Q3161.(10分)请用else if多分支条件判断语句编程设计一个简单的计算器程序。要求:(1)请用户按以下形式从键盘输入表达式:操作数 运算符op 操作数(2)然后计算表达式的值*输入提示信息*:无*输入数据格式*:"%f%c%f"*输出数据格式*:"%.2f%c%.2f=%.2fn" 若若输入的运算符是除法运算符/,当除数为0时,输出数据格式为:"dat is 0!Error!n" 若输入的运算符不是加(+)、减(-)、乘(*)、除(/),则输出数据格式为:"Error!n"友情提示: 用户输入的运算符为算术运算符:加(+)、减(-)、乘(*)、除(/)。用字符变量 op 表示; 操作数和操作数 为浮点型数据,分别用浮点型变量 dat1、dat2表示。 程序运行结果如下所示:1+2 1.00+2.00=3.00#include <stdio.h> #include <stdlib.h> main() float a=0,b=0; char op; scanf("%f%c%f",&a,&op,&b); if(op='+') printf("%.2f%c%.2f=%.2fn",a,op,b,a+b); else if(op='-') printf("%.2f%c%.2f=%.2fn",a,op,b,a-b); else if(op='*') printf("%.2f%c%.2f=%.2fn",a,op,b,a*b); else if(op='/') if(b!=0) printf("%.2f%c%.2f=%.2fn",a,op,b,a/b); else printf("dat is 0!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。格式要求:输入提示:"Please enter score:"输出形式形如:"100-A"、"75-C"、"0-E"当输入分数不正确时,输出:"Input error!#include<stdio.h> main() int s,m; printf("Please enter score:"); scanf("%d",&s); m=s<0|s>100?-1:s/10; switch(m) case 10: case 9:printf("%d-An",s); break; case 8:printf("%d-Bn",s); break; case 7:printf("%d-Cn",s); break; case 6:printf("%d-Dn",s); break; case 5: case 4: case 3: case 2: case 1: case 0:printf("%d-En",s); break; default:printf("Input error!"); 窗体底端窗体顶端Q221.(10分)编程从键盘输入某年某月(包括闰年),用switch语句编程输出该年的该月拥有的天数。要求考虑闰年以及输入月份不在合法范围内的情况。已知闰年的2月有29天,平年的2月有28天。*输入格式要求:"%d, %d" 提示信息:"Input year,month:"*输出格式要求:"31 daysn" "29 daysn" "28 daysn" "Input error!n"程序运行示例如下:Input year,month:2004,229 days#include<stdio.h> main() int a, b; printf("Input year,month:"); scanf("%4d, %2d", &a, &b); switch (b) case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("31 daysn"); break; case 4: case 6: case 9: case 11: printf("30 daysn"); break; case 2: if (a % 4 = 0 && a % 100 != 0) | a % 400 = 0) printf("29 daysn"); else printf("28 daysn"); break; default: printf("Input error!n"); return 0; 窗体底端窗体顶端Q210.(10分)第7章实验任务1:所谓素数是指这个数只能被1和自身整除。要求在主函数输入一个数,调用函数Fun()判断该数是否是素数。打印信息在主函数中进行。例如:从键盘输入5,5是素数则打印如下信息:"5 is a prime number".又如:从键盘输入4, 4不是素数则打印如下信息:"4 is not a prime number"负数、0和1均不是素数。对输入的数据要考虑数据的合法性,不满足条件的数要重新输入直到满足条件为止。不能使用全局变量,不按给定的函数原型编写程序不给分。Fun()函数原型如下: int Fun(int m);*输入数据提示信息:"Please input a number:n"注:该提示信息请放在循环体外*输入数据格式为:"%d"*输出格式要求: 若是素数输出数据格式为:"%d is a prime numbern" 若不是素数输出数据格式为: "%d is not a prime numbern"#include <stdio.h> #include <stdlib.h> int Fun(int m); main() int a; printf("Please input a number:n"); while (scanf("%d",&a) if (a <= 0 | a = 1) continue; else if (a > 0 && a != 1 && Fun(a) = 1) printf("%d is a prime numbern",a); else printf("%d is not a prime numbern", a); break; return 0; int Fun(int m) int i, result; result = 1; if (m != 2) for (i = 2; i < m; i+) if (m % i = 0) result = 0; break; return result; 窗体底端窗体顶端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。格式要求:输入提示:"Please enter score:"输出形式形如:"100-A"、"75-C"、"0-E"当输入分数不正确时,输出:"Input error!#include<stdio.h> main() int s,m; printf("Please enter score:"); scanf("%d",&s); m=s<0|s>100?-1:s/10; switch(m) case 10: case 9:printf("%d-An",s); break; case 8:printf("%d-Bn",s); break; case 7:printf("%d-Cn",s); break; case 6:printf("%d-Dn",s); break; case 5: case 4: case 3: case 2: case 1: case 0:printf("%d-En",s); break; default:printf("Input error!"); 窗体底端窗体顶端Q1709.(10分)第6章实验1:国王的许诺相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第1个格子中放1粒,第2格中放2粒,第3格中放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。请问:国王能兑现他的许诺吗?试编程计算舍罕王共要多少麦子赏赐他的宰相,这些麦子合多少立方米(已知1立方米麦子约1.42e8粒)?注:(1)不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程。 (2)用标准C语言编程,所有变量必须在第一条可执行语句前定义。 (3)输入输出格式要和以下给定格式完全一致。*输入格式:无*输出格式:"sum = %en" "volum = %en"%e表示double类型#include<stdio.h> #include<math.h> main() int i; double s, v; s = 0; for (i = 0; i <= 63; i+) s = s + pow(2, i); v = s / 1.42e8; printf("sum = %en", s); printf("volum = %en", v); return 0; 窗体底端窗体顶端Q1719.(10分)第7章实验任务3从键盘任意输入一个整数n,编程计算并输出1n之间的所有素数之和输入提示信息:"Input n:"输入格式:"%d"输出格式:"sum = %dn"#include <stdio.h> #include <stdlib.h> int Fun(int m); main() int n,i,s; s=0; printf("Input n:"); scanf("%d",&n); for(i=2;i<=n;i+) if(Fun(i)=1) s=s+i; printf("sum = %dn",s); return 0; int Fun(int m) int i, result; result = 1; if (m != 2) for (i = 2; i < m; i+) if (m % i = 0) result = 0; break; return result; 窗体底端窗体顶端Q1720.(10分)第7章实验任务6从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出"It is a prime number"。例如,用户输入90时,程序输出90 = 2 * 3 * 3 * 5;用户输入17时,程序输出"It is a prime number"。输入提示信息:"Input m:"输入格式:"%d"输出格式:是素数时输出"It is a prime numbern"否则输出用"%d = ","%d * "运行示例1:Input m:9090 = 2 * 3 * 3 * 5运行示例2:Input m:13It is a prime number#include<stdio.h> int Fun(int m); int IsPerfect(int m); main() int m,i,p; printf("Input m:"); scanf("%d",&m); p=m; if(Fun(m)=1) printf("It is a prime numbern"); else printf("%d = ",m); for(i=2;i<m;i+) if(p%IsPerfect(i)=0&&p/IsPerfect(i)!=1&&IsPerfect(i)!=1) printf("%d * ",i); else if(p%IsPerfect(i)=0&&p/IsPerfect(i)=1&&IsPerfect(i)!=1) printf("%d",i); break; else continue; p=p/i; while(p%i=0) if(p/i!=1) printf("%d * ",i); p=p/i; else printf("%d",i); break; return 0; int Fun(int m) int i, result; result = 1; if (m != 2) for (i = 2; i < m; i+) if (m % i = 0) result = 0; break; return result; int IsPerfect(int m) int i, result; result=1; if (m != 2) for (i = 2; i <= m; i+) if (m % i = 0) break; else if(m%i!=1&&m/i!=1) continue; else result=m; else result=2; return result; 窗体底端窗体顶端Q198.(10分)第7章实验任务5如果一个正整数m的所有小于m的不同因子(包括1)加起来正好等于m本身,那么就被称它为完全数。它是指这样的一些特殊的自然数,它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。注意:1没有真因子,所以不是完全数。例如,6就是一个完全数,是因为6 = 1 + 2 + 3。请编写一个判断完全数的函数IsPerfect(),然后判断从键盘输入的整数是否是完全数。要求:按如下原型编写判断完全数的函数,若函数返回0,则代表不是完全数,若返回1,则代表是完全数。int IsPerfect(int x);*要求输入提示信息为: "Input m:n"*要求输入格式为: "%d"*要求输出格式为 "%d is a perfect numbern""%d is not a perfect numbern"注:不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程,主函数不能使用int main和return 0。#include<stdio.h> int IsPerfect(int m); main() int a; printf("Input m:n"); scanf("%d", &a); if (IsPerfect(a) = 1) printf("%d is a perfect numbern", a); else printf("%d is not a perfect numbern", a); int IsPerfect(int m) int i, s, find; s = 0; for (i = 1; i < m; i+) if (m % i = 0) s = s + i; else continue; if (s = m) find = 1; else find = 0; return find; 窗体底端窗体顶端Q3168.(10分)编程从键盘输入一个小写英文字母,将其转换为大写英文字母,并将转换后的大写英文字母及其十进制的ASCII码值显示到屏幕上。*输入提示信息*:"Please input a low-case letter from keyboard:"*输入数据格式*:"%c"*输出数据格式*:"The capital letter and its ASCII value are:%c and %d.提示:从键盘输入一个字符可用scanf也可用getchar#include<stdio.h> main() char a; printf("Please input a low-case letter from keyboard:"); a = getchar(); a = a - 32; printf("The capital letter and its ASCII value are:%c and %d.", a, a); 窗体底端窗体顶端Q3241.(10分)实验三(2016春刘秉权C语言课):已知公式e = 1 + 1/1! + 1/2! + 1/3! + . +1/n!, 编程计算e的近似值,直到最后一项的绝对值小于1e-7时为止,输入e的值并统计累加的项数。要求:按顺序输出每一个e值,小数点后保留8位有效数字,输出格式形如:e = 2.66666667, count = 4(回车换行,count为累加的项数)#include<stdio.h> double fun(int n); main() int i, c; double e; c = 0; e = 0; for (i = 0; i<=11; i+) e = e + fun(i); c+; printf("e = %.8lf, count = %dn", e, c); double fun(int n) double result; int i; i = 1; result = 1; do result = result * i; i+; while (i <= n); result = 1.0 / result; return result; 窗体底端窗体顶端Q1710.(10分)第7章实验任务4:任意输入一个整数m,若m不是素数,则输出其所有不包括1和自身的因子;否则输出“没有因子,是素数”的相关提示信息。输入提示信息:"Please enter a number:"输入格式:"%d"输出格式:有因子时:"%dn"无因子时:"It is a prime number.No divisor!n"输入为1,0,-1时:"It is not a prime number.No divisor!n"#include<stdio.h> #include<math.h> int Fun(int m); main() int a, i; printf("Please enter a number:"); scanf("%d", &a); if (Fun(fabs(a) = 1) printf("It is a prime number.No divisor!n"); else for (i = 2; i < fabs(a); i+) if ( a % i = 0) printf("%dn", i); int Fun(int m) int i, result; result = 1; if (m != 2 && m != 1) for (i = 2; i < m; i+) if (m % i = 0) result = 0; break; else if (m = 1) result = 0; else; return result; 窗体底端窗体顶端Q1718.(10分)第5章实验1:身高预测。每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。设faHeight为其父身高,moHeight为其母身高,身高预测公式为男性成人时身高 = (faHeight + moHeight) × 0.54 cm女性成人时身高 = (faHeight × 0.923 + moHeight) /