上机题及标准答案.docx
- 文档编号:18163995
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:44
- 大小:25.68KB
上机题及标准答案.docx
《上机题及标准答案.docx》由会员分享,可在线阅读,更多相关《上机题及标准答案.docx(44页珍藏版)》请在冰点文库上搜索。
上机题及标准答案
上机题及答案
————————————————————————————————作者:
————————————————————————————————日期:
1温度转换
描述
已知华氏温度到摄氏温度的转换公式为:
摄氏温度=(华氏温度-32)×5/9,写程序将给定的华氏温度转换为摄氏温度输出
输入说明
只有一个整数,表示输入的华氏温度
输出说明
输出一个表示摄氏温度的实数,小数点后保留2位有效数字,多余部分四舍五入
输入样例
50
输出样例
10.00
2计算球体重量
描述
已知铁的比重是7.86,金的比重是19.3。
写一个程序,分别计算出给定直径的铁球与金球的质量,假定PI=3.1415926
输入说明
输入两个整数,分别表示铁球与金球的直径(单位为毫米)
输出说明
输出两个浮点数,分别表示铁球与金球的质量(单位为克),小数点后保留3位小数,两个浮点数之间用空格分隔
输入样例
100100
输出样例
4115.48610105.456
提示
#include
intmain(){
doubleFe=7.86,Au=19.3,Pi=3.1415926;
intm,n;
floatM1,M2;
scanf("%d%d",&m,&n);//注意,要使输出的两个数据中间无逗号,“”之间要无逗号,下面也如此
M1=(4.0/3)*Pi*m/2*m/2*m/2*Fe/1000;
M2=(4.0/3)*Pi*n/2*n/2*n/2*Au/1000;
printf("%.3f%.3f",M1,M2);
return0;
}
3阶梯电价计费
描述
电价分三个档次,[0,110]度电,每度电0.5元;(110,210]度电,超出110部分每度电0.55元,超过210度电,超出210部分每度电0.70元,给出一个家庭一月用电量,请计算出应缴的电费(四舍五入,保留小数点后两位小数)。
输入说明
第一行为1个整数m(100>m>0),表示有多少组数据。
其后一行为m个正实数,表示m个用电量数据
输出说明
一行输出1个电费数据(四舍五入保留2位小数)后,换行。
输入样例
3
100200329.75
输出样例
50.00
104.50
193.82
(1)自己的
#include
doublefare(doublem){
doublen;
if(m>=0&&m<=100)
n=0.5*m;
if(m>110){
if(m<=210)
n=0.5*110+0.55*(m-110);
else
n=0.5*110+0.55*(210-110)+0.70*(m-210);
}
returnn;
}
intmain()
{
inta,b;
doublec;
scanf("%d",&a);
for(b=0;b { scanf("%lf",&c); printf("%.2f\n",fare(c)); } return0; } (2)别人的 #include doublemoney(doublex) { if(x>=100&&x<=110) return0.5*x; if(x>110&&x<=210) return0.5*110+0.55*(x-110); if(x>210) return0.5*110+0.55*100+0.7*(x-210); } intmain() { inta,b; doublec; scanf("%d",&a); for(b=0;b { scanf("%lf",&c); printf("%.2f\n",money(c)); } return0; } 4计算某月天数 描述 每个月的1,3,5,7,8,10,12月有31天,4,6,9,11月有30天,闰年2月29天,其他年份2月28天,给定年份和月份求该月的天数 输入说明 多组数据,输入数据第一行为整数n(n<100),表示有几组数据数据,其后为n行,每行表示一组数据,每组数据由两个正整数a和b构成,a表示年份,b表示月份,a和b之间用空格分隔 输出说明 根据年份和月份计算该月天数并输出,每输出一个天数后换行 输入样例 3 20003 20115 20082 输出样例 31 31 29 程序问题: 输入时年份和月份在同一行,按空格分开,不能按回车换行 1别人的 #include voidtianshu(intx,inty) { if(y==1||y==3||y==5||y==7||y==8||y==10||y==12) printf("%d\n",31); elseif(y==4||y==6||y==9||y==11) printf("%d\n",30); elseif((x%4==0&&x%100! =0||x%400==0)&&y==2) printf("%d\n",29); elseif(y==2) printf("%d\n",28); } intmain() { inta,b,m,n; scanf("%d",&n); for(m=1;m<=n;++m) { scanf("%d%d",&a,&b); tianshu(a,b); } return0; } 2自己的 #include intmain() { inta,b; scanf("%d\n",&a); for(b=0;b { intyear,month,days; scanf("%d%d",&year,&month); switch(month) { case2: if(year%4==0&&year%100! =0||year%400==0) days=29; else days=28; break; case1: case3: case5: case7: case8: case10: case12: days=31; break; case4: case6: case9: case11: days=30; break; } printf("%d\n",days); } return0; } 5计算整数各位数字之和 描述 假设n是一个由最多9位数字(d9,…,d1)组成的正整数。 编写一个程序计算n的每一位数字之和 输入说明 有多组数据,输入数据第1行为整数m(m<100),表示有多少组数据,其后一行m个正整数 输出说明 对每一个整数n输出它的各位数字之和后换行 输入样例 3 63704170498 输出样例 6 14 29 1别人的 #include voidsum(inta) {intx,y; intsum=0; for(x=100000000;x>0;x=x/10) { y=a/x; a=a-y*x; sum+=y; } printf("%d\n",sum); } intmain() { intm,n,x; scanf("%d",&m); for(n=1;n<=m;++n) {scanf("%d",&x); sum(x); } return0; } 2自己的 #include intmain() { intm,a; scanf("%d",&m); for(a=1;a<=m;a++) { intsum=0,x,y,n; scanf("%d",&n); for(x=100000000;x>0;x=x/10) { y=n/x; sum+=y; n=n-x*y; } printf("%d\n",sum); } return0; } 6完数 描述 请写一个程序,给出指定整数范围[a,b]内的所有完数,0 一个数如果恰好等于除它本身外的所有因子之和,这个数就称为"完数"。 例如6是完数,因为6=1+2+3 输入说明 只有一组数据,即一行上的两个整数a和b,a和b之间用空格分隔 输出说明 输出[a,b]内的所有完数,每个数字占一行 输入样例 110 输出样例 6 1别人的 #include #include intwanshu(intn) { intm; intsum=0; for(m=1;m if(n%m==0) sum+=m; } if(n==sum)return1; else return0; } intmain() { intm,n,i; scanf("%d%d",&m,&n); for(i=m;i<=n;++i){ if(wanshu(i)==1)printf("%d\n",i); } return0; } 2自己的 #include voidwanshu(intn) { intm,sum=0; for(m=1;m { if(n%m==0) sum+=m; } if(sum==n) printf("%d\n",n); } intmain() { inta,b,n; scanf("%d%d",&a,&b); for(n=a;n<=b;n++) wanshu(n); printf("\n"); return0; } #include intmain() { inta,b,m,x,sum=0; scanf("%d%d",&a,&b); for(x=a;x<=b;x++) { for(m=1;m { if(x%m==0) sum+=m; } if(sum==x) printf("%d\n",x); } return0; } 7最大公约数 描述 最大公约数(GCD)指某几个整数共有因子中最大的一个,最大公约数具有如下性质, gcd(a,0)=a gcd(a,1)=1 因此当两个数中有一个为0时,gcd是不为0的那个整数,当两个整数互质时最大公约数为1。 定义函数: intgcd(inta,intb),返回两个参数的最大公约数。 并写一个主函数调用该函数,实验各种输入参数情况。 输入说明 多组数据,每组数据由同一行的两个正整数a和b构成(0<=a,b<10000),a和b之间用空格分隔,当a和b都为0时表示输入结束 输出说明 对每组数据输出其最大公约数后换行 输入样例 24 126 35 00 输出样例 2 6 1 输入实例: 241263500 #include intgcd(inta,intb) { intn; if(a==0&&b==0) return0; if(a==0) returnb; if(b==0) returna; for(n=(a>b? b: a);a%n! =0||b%n! =0;n--) ; returnn; } intmain() { inta,b; while (1)//也可写为for(;;) { scanf("%d%d",&a,&b); if(a==0&&b==0) break; printf("%d\n",gcd(a,b)); } return0; } 8角谷定理 描述 测试, 角谷定理: 输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。 经过如此有限次运算后,总可以得到自然数值1。 求经过多少次可得到自然数1。 如: 例如数据22的变化过程: 221134175226134020105168421,数据变化次数为16。 可用迭代法或递归法实现。 输入说明 第一行1个整数m(100>m>0),表示有多少组数据。 其后一行为m个正整数,表示m个数据。 输出说明 一行输出1个数据变换次数后,换行 输入样例 3 223343 输出样例 16 27 30 #include intjg(intn) { statici=0,m; ++i; if(n==1) { m=i; i=0; returnm; } else { if(n%2==0) n=n/2; else n=n*3+1; jg(n); } } intmain() { inta,b,n; scanf("%d",&a);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上机 标准答案