您好,欢迎访问三七文档
11温度转换描述已知华氏温度到摄氏温度的转换公式为:摄氏温度=(华氏温度-32)×5/9,写程序将给定的华氏温度转换为摄氏温度输出输入说明只有一个整数,表示输入的华氏温度输出说明输出一个表示摄氏温度的实数,小数点后保留2位有效数字,多余部分四舍五入输入样例50输出样例10.002计算球体重量描述已知铁的比重是7.86,金的比重是19.3。写一个程序,分别计算出给定直径的铁球与金球的质量,假定PI=3.1415926输入说明输入两个整数,分别表示铁球与金球的直径(单位为毫米)输出说明输出两个浮点数,分别表示铁球与金球的质量(单位为克),小数点后保留3位小数,两个浮点数之间用空格分隔输入样例100100输出样例4115.48610105.456提示#includestdio.hintmain(){doubleFe=7.86,Au=19.3,Pi=3.1415926;intm,n;2floatM1,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(100m0),表示有多少组数据。其后一行为m个正实数,表示m个用电量数据输出说明一行输出1个电费数据(四舍五入保留2位小数)后,换行。输入样例3100200329.75输出样例50.00104.50193.82(1)自己的#includestdio.hdoublefare(doublem){doublen;if(m=0&&m=100)n=0.5*m;if(m110){if(m=210)n=0.5*110+0.55*(m-110);else3n=0.5*110+0.55*(210-110)+0.70*(m-210);}returnn;}intmain(){inta,b;doublec;scanf(%d,&a);for(b=0;ba;b++){scanf(%lf,&c);printf(%.2f\n,fare(c));}return0;}(2)别人的#includestdio.hdoublemoney(doublex){if(x=100&&x=110)return0.5*x;if(x110&&x=210)return0.5*110+0.55*(x-110);if(x210)return0.5*110+0.55*100+0.7*(x-210);}intmain(){inta,b;doublec;scanf(%d,&a);for(b=0;ba;b++){scanf(%lf,&c);printf(%.2f\n,money(c));}return0;}4计算某月天数描述4每个月的1,3,5,7,8,10,12月有31天,4,6,9,11月有30天,闰年2月29天,其他年份2月28天,给定年份和月份求该月的天数输入说明多组数据,输入数据第一行为整数n(n100),表示有几组数据数据,其后为n行,每行表示一组数据,每组数据由两个正整数a和b构成,a表示年份,b表示月份,a和b之间用空格分隔输出说明根据年份和月份计算该月天数并输出,每输出一个天数后换行输入样例3200032011520082输出样例313129程序问题:输入时年份和月份在同一行,按空格分开,不能按回车换行1别人的#includestdio.hvoidtianshu(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()5{inta,b,m,n;scanf(%d,&n);for(m=1;m=n;++m){scanf(%d%d,&a,&b);tianshu(a,b);}return0;}2自己的#includestdio.hintmain(){inta,b;scanf(%d\n,&a);for(b=0;ba;b++){intyear,month,days;scanf(%d%d,&year,&month);switch(month){case2:if(year%4==0&&year%100!=0||year%400==0)days=29;elsedays=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计算整数各位数字之和6描述假设n是一个由最多9位数字(d9,…,d1)组成的正整数。编写一个程序计算n的每一位数字之和输入说明有多组数据,输入数据第1行为整数m(m100),表示有多少组数据,其后一行m个正整数输出说明对每一个整数n输出它的各位数字之和后换行输入样例363704170498输出样例614291别人的#includestdio.hvoidsum(inta){intx,y;intsum=0;for(x=100000000;x0;x=x/10){y=a/x;a=a-y*x;sum+=y;}printf(%d\n,sum);}intmain(){intm,n,x;scanf(%d,&m);7for(n=1;n=m;++n){scanf(%d,&x);sum(x);}return0;}2自己的#includestdio.hintmain(){intm,a;scanf(%d,&m);for(a=1;a=m;a++){intsum=0,x,y,n;scanf(%d,&n);for(x=100000000;x0;x=x/10){y=n/x;sum+=y;n=n-x*y;}printf(%d\n,sum);}return0;}6完数描述请写一个程序,给出指定整数范围[a,b]内的所有完数,0ab10000。一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数。例如6是完数,因为6=1+2+3输入说明只有一组数据,即一行上的两个整数a和b,a和b之间用空格分隔8输出说明输出[a,b]内的所有完数,每个数字占一行输入样例110输出样例61别人的#includestdio.h#includemath.hintwanshu(intn){intm;intsum=0;for(m=1;mn;++m){if(n%m==0)sum+=m;}if(n==sum)return1;elsereturn0;}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自己的#includestdio.hvoidwanshu(intn){intm,sum=0;9for(m=1;mn;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;}#includestdio.hintmain(){inta,b,m,x,sum=0;scanf(%d%d,&a,&b);for(x=a;x=b;x++){for(m=1;mx;m++){if(x%m==0)sum+=m;}if(sum==x)printf(%d\n,x);}return0;}7最大公约数描述最大公约数(GCD)指某几个整数共有因子中最大的一个,最大公约数具有如下性质,gcd(a,0)=agcd(a,1)=1因此当两个数中有一个为0时,gcd是不为0的那个整数,当两个整数互质时最大公约数为101。定义函数:intgcd(inta,intb),返回两个参数的最大公约数。并写一个主函数调用该函数,实验各种输入参数情况。输入说明多组数据,每组数据由同一行的两个正整数a和b构成(0=a,b10000),a和b之间用空格分隔,当a和b都为0时表示输入结束输出说明对每组数据输出其最大公约数后换行输入样例241263500输出样例261输入实例:241263500#includestdio.hintgcd(inta,intb){intn;if(a==0&&b==0)return0;if(a==0)returnb;if(b==0)returna;for(n=(ab?b:a);a%n!=0||b%n!=0;n--);returnn;}intmain(){inta,b;while(1)//也可写为for(;;){11scanf(%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(100m0),表示有多少组数据。其后一行为m个正整数,表示m个数据。输出说明一行输出1个数据变换次数后,换行输入样例3223343输出样例162730#includestdio.hintjg(intn){statici=0,m;++i;if(n==1){m=i;i=0;returnm;12}else{if(n%2==0)n=n/2;elsen=n*3+1;jg(n);}}intmain(){inta,b,n;scanf(%d,&a);for(b=0;ba;b++){scanf(%d,&n);printf(%d\n,jg(n));}return0;}9递归数列描述下列给定程序中,用递归实现函数fun,其功能是:根据整型参数n,计算如下公式的值。A(1)=1,A(2)=1/(1+A(1)),A(3)=1/(1+A(2)),……,A(n)=1/(1+A(n-1))。输入说明第一行1个整数m(100m0),表示有多少组数据。其后一行为m个正整数,表示m个整数。输出说明一行输出数列对应数据,换行。小数点后保留6位有效数字,多余部分四舍五入。输入样例3358输出样例0.6666670.625000130.617647#includestdio.hdoublefun(intn){returnn==1?1:1/(1+fun(n-1));}intmain(){inta,b,c;scanf(%d,&a);for(b=0;ba;b++){scanf(%d,&c);printf(%.6f\n,fun(c));}return0;}10水仙花数描述水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。(例如:1^3+5^3+3^3=153)。定义一个函数intfun(inta,in
本文标题:上机题及答案..
链接地址:https://www.777doc.com/doc-3790036 .html