《浙大C程题库部分题目答案.pdf》由会员分享,可在线阅读,更多相关《浙大C程题库部分题目答案.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、30001 程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat(0repeat10),做 repeat次下列运算:输入参数 a,b,c,求一元二次方程 a*x*xb*xc0 的根,结果保留 2 位小数。输出使用以下语句:printf(参数都为零,方程无意义!n);printf(a 和 b 为 0,c 不为0,方 程 不 成 立 n);printf(x=%0.2fn,-c/b);printf(x1=%0.2fn,(-b+sqrt(d)/(2*a);printf(x2=%0.2fn,(-b-sqrt(d)/(2*a);printf(x1=%0.2f+%0.2fin,-b/(2*a
2、),sqrt(-d)/(2*a);printf(x2=%0.2f-%0.2fin,-b/(2*a),sqrt(-d)/(2*a);输入输出示例:括号内为说明 输入:5 (repeat=5)0 0 0 (a=0,b=0,c=0)0 0 1 (a=0,b=0,c=1)0 2 4 (a=0,b=2,c=4)2.1 8.9 3.5 (a=2.1,b=8.9,c=3.5)1 2 3 (a=1,b=2,c=3)输出:参数都为零,方程无意义!a和 b 为 0,c 不为 0,方程不成立 x=-2.00 x1=-0.44 x2=-3.80 x1=-1.00+1.41i x2=-1.00-1.41i#includ
3、e#include int main(void)int repeat,ri;double a,b,c,d;scanf(%d,&repeat);for(ri=1;ri=0)printf(x1=%0.2fn,(-b+sqrt(d)/(2*a);printf(x2=%0.2fn,(-b-sqrt(d)/(2*a);else printf(x1=%0.2f+%0.2fin,-b/(2*a),sqrt(-d)/(2*a);printf(x2=%0.2f-%0.2fin,-b/(2*a),sqrt(-d)/(2*a);30002 程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat(0re
4、peat10),做 repeat 次下列运算:输入一个整数 x,计算并输出下列分段函数 sign(x)的值。-1 x 0 输入输出示例:括号内是说明 输入 3 (repeat=3)10 (x=10)0 (x=0)-98 (x=-98)输出 sign(10)=1 (x=10 时 y=1)sign(0)=0 (x=0 时 y=0)sign(-98)=-1 (x=-98 时 y=-1)#include int main(void)int repeat,ri;int x,y;scanf(%d,&repeat);for(ri=1;ri=repeat;ri+)scanf(%d,&x);if(x 0)y=-
5、1;else if(x=0)y=0;else y=1;printf(sign(%d)=%dn,x,y);30004 程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat(0repeat10),做 repeat 次下列运算:输入五级制成绩(AE),输出相应的百分制成绩(0100)区间,要求使用 switch 语句。五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)和 E(0-59),如果输入不正确的成绩,显示Invalid input。输出使用以下语句:printf(90-100n);printf(80-89n);print
6、f(70-79n);printf(60-69n);printf(0-59n);printf(Invalid inputn);输入输出示例:括号内是说明 输入 6ABCDEj (repeat=6,输入的五级成绩分别为 A、B、C、D、E 和无效的字符j)输出 90-100 80-89 70-79 60-69 0-59 Invalid input (输入数据不合法)#include int main(void)char ch;int repeat,ri;scanf(%d,&repeat);for(ri=1;ri=repeat;ri+)ch=getchar();switch(ch)case A:pr
7、intf(90-100n);break;case B:printf(80-89n);break;case C:printf(70-79n);break;case D:printf(60-69n);break;case E:printf(0-59n);break;default:printf(Invalid inputn);break;30005 程序填空,不要改变与输入输出有关的语句。查询水果的单价。有 4 种水果,苹果(apples)、梨(pears)、桔子(oranges)和葡萄(grapes),单价分别是 3.00 元/公斤,2.50 元/公斤,4.10 元/公斤和 10.20 元/公斤
8、。在屏幕上显示以下菜单(编号和选项),用户可以连续查询水果的单价,当查询次数超过 5 次时,自动退出查询;不到 5 次时,用户可以选择退出。当用户输入编号 14,显示相应水果的单价(保留 1 位小数);输入 0,退出查询;输入其他编号,显示价格为 0。输入输出示例:括号内是说明 输入 3 (oranges 的编号)0 (退出查询)输出 1 apples 2 pears 3 oranges 4 grapes 0 Exit price=4.1 1 apples 2 pears 3 oranges 4 grapes 0 Exit#include int main(void)int choice,i;
9、double price;for(i=1;i=5;i+)printf(1 applesn);printf(2 pearsn);printf(3 orangesn);printf(4 grapesn);printf(0 Exitn);scanf(%d,&choice);if(choice=0)break;else switch(choice)case 1:price=3.00;break;case 2:price=2.50;break;case 3:price=4.10;break;case 4:price=10.20;break;default:price=0.0;break;printf(p
10、rice=%0.1fn,price);30006 程序填空,不要改变与输入输出有关的语句。输入 5 个学生的数学成绩,判断他们的成绩是否及格。如果成绩低于 60,输出Fail,否则,输出Pass。输入输出示例:括号内是说明 输入 61 59 92 40 60 输出 Pass Fail Pass Fail Pass#include int main(void)int i,mark;for(i=1;i=60)printf(Passn,mark);else printf(Failn,mark);30007 程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat(0repeat10),做
11、 repeat 次下列运算:输入三角形的3条边 a,b,c,如果能构成一个三角形,输出面积 area 和周长 perimeter(保留2位小数);否则,输出These sides do not correspond to a valid triangle。在一个三角形中,任意两边之和大于第三边。三角形面积计算公式:area=(s(s-a)(s-b)(s-c)0.5,其中 s=(a+b+c)/2 输出使用以下语句:printf(area=%.2f,perimeter=%.2fn,area,perimeter);printf(These sides do not correspond to a v
12、alid trianglen);输入输出示例:括号内是说明 输入 2 (repeat=2)5 5 3 (a=5,b=5,c=3)1 4 1 (a=1,b=4,c=1)输出 area=7.15,perimeter=13.00 These sides do not correspond to a valid triangle#include#include int main(void)int a,b,c;int repeat,ri;double area,perimeter,s;scanf(%d,&repeat);for(ri=1;ri c&a+c b&b+c a)perimeter=a+b+c;
13、s=perimeter/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%.2f,perimeter=%.2fn,area,perimeter);else printf(These sides do not correspond to a valid trianglen);30008 程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat(0repeat10),做 repeat 次下列运算:输入一个职工的月薪 salary,输出应交的个人所得税 tax(保留 2位小数)。计算公式:tax=rate*(salary-850)当 salary
14、850 时,rate=0 当 850 salary 1350 时,rate=5%当 1350 salary 2850 时,rate=10%当 2850 salary 5850 时,rate=15%当 5850 salary 时,rate=20%输入输出示例:括号内是说明 输入 5 (repeat=5)1010.87 (salary=1010.87)32098.76 (salary=32098.76)800 (salary=800)4010 (salary=4010)2850 (salary=2850)输出 tax=8.04 tax=6249.75 tax=0.00 tax=474.00 tax
15、=200.00#include int main(void)int repeat,ri;double rate,salary,tax;scanf(%d,&repeat);for(ri=1;ri=repeat;ri+)scanf(%lf,&salary);if(salary=850)rate=0;else if(salary=1350)rate=0.05;else if(salary=2850)rate=0.10;else if(salary=5850)rate=0.15;else rate=0.20;tax=rate*(salary-850);printf(tax=%.2fn,tax);300
16、09 程序填空,不要改变与输入输出有关的语句。输入一个正整数 n,再输入 n 个学生的百分制成绩,统计各等级成绩的个数。成绩等级分为五级,分别为 A(90-100)、B(80-89)、C(70-79)、D(60-69)和 E(0-59)。输入输出示例:括号内是说明 输入 5 (n=5)77 54 92 73 60 输出 Number of A(90-100):1 Number of B(80-89):0 Number of C(70-79):2 Number of D(60-69):1 Number of E(0-59):1#include int main(void)int i,mark,n
17、;int na,nb,nc,nd,ne;scanf(%d,&n);na=nb=nc=nd=ne=0;for(i=1;i=90)na+;else if(mark=80)nb+;else if(mark=70)nc+;else if(mark=60)nd+;else ne+;printf(Number of A(90-100):%dn,na);printf(Number of B(80-89):%dn,nb);printf(Number of C(70-79):%dn,nc);printf(Number of D(60-69):%dn,nd);printf(Number of E(0-59):%d
18、n,ne);30010 程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat(0repeat10),做 repeat 次下列运算:输入一个形式如操作数 运算符 操作数的表达式,对 2 个整数进行乘、除和求余运算。输出使用以下语句:printf(%d*%d=%dn,x,y,x*y);printf(%d/%d=%dn,x,y,x/y);printf(%d Mod%d=%dn,x,y,x%y);printf(Invalid operatorn);输入输出示例:括号内是说明 输入 4 (repeat=4)21*8 21/8 21%8 21!8 输出 21*8=168 21/8=2 21
19、 Mod 8=5 Invalid operator#include int main(void)char sign;int x,y;int repeat,ri;scanf(%d,&repeat);for(ri=1;ri=repeat;ri+)scanf(%d%c%d,&x,&sign,&y);switch(sign)case*:printf(%d*%d=%dn,x,y,x*y);break;case/:printf(%d/%d=%dn,x,y,x/y);break;case%:printf(%d Mod%d=%dn,x,y,x%y);break;default:printf(Invalid o
20、peratorn);break;30053 程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat(0repeat10),做 repeat 次下列运算:为鼓励居民节约用水,自来水公司采取按月用水量分段计费的办法,居民应交水费 y(元)与月用水量 x(吨)的函数关系式如下。输入用户的月用水量 x(吨),计算并输出该用户应支付的水费 y(元)(保留 2 位小数)。要求用嵌套的 if-else 语句。0 (x0)y=f(x)=4x/3 (0=x15)输入输出示例:括号内是说明 输入 3 (repeat=3)-0.5 (x=-0.5)9.5 (x=9.5)21.3 (x=21.3)输出
21、f(-0.50)=0.00 f(9.50)=12.67 f(21.30)=42.75#include int main(void)int repeat,ri;double x,y;scanf(%d,&repeat);for(ri=1;ri=0)if(x=15)y=4*x/3;else y=2.5*x-10.5;else y=0;printf(f(%.2f)=%.2fn,x,y);30061 程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat(0repeat10),做 repeat 次下列运算:某城市普通出租车收费标准如下:起步里程 3 公里,起步费 10元;超起步里程后 10
22、 公里内,每公里租费 2 元,超过 10 公里以上的部分加收 50%的回空补贴费,即每公里租费 3 元。营运过程中,因路阻及乘客要求临时停车的,每 5 分钟按 1公里租费计收。运价计费尾数四舍五入,保留到元。编写程序,输入行驶里程(公里)与等待时间(分钟),计算并输出乘客应支付的车费(元)。提示:先将等待的时间折算成公里数,与原公里数相加后再处理。输入输出示例:括号内是说明 输入 3 (repeat=3)1.6 2 52 (行驶1.6公里,等待2分52秒)3.1 6 15 (行驶3.1公里,等待6分15秒)11.8 2 30 (行驶 11.8 公里,等待 2 分 30 秒)输出 cost=10
23、 cost=13 cost=31#include int main(void)int repeat,ri;int minutes,seconds;double cost,mile;scanf(%d,&repeat);for(ri=1;ri=repeat;ri+)scanf(%lf&d%d,&mile,&minutes,&seconds);if(mile=3)cost=10;else if(mile=10)cost=10+(mile-3+(minutes+seconds*1.0/60)/5)*2;else cost=10+(mile-3+(minutes+seconds*1.0/60)/5)*2+(mile-10)*3;printf(cost=%.0fn,cost);