您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > C语言实验习题及答案
实验一:1.1.输入并运行下面的程序,把答案填写在红色括号中。#include//第1行main()//第2行{//第3行charc1,c2;//第4行c1=’a’;//第5行c2=97;//第6行printf(%c%c\n,c1,c2);//第7行}⑴运行此程序,其输出结果是:()为什么c2输出结果是字符?请写出原因:()⑵在上面printf语句的下面再增加一个:printf(%d%d\n,c1,c2);//第8行再运行,其输出结果是:()为什么c1输出结果是数字,写出原因:()答案:1、⑴(aa)(因为97对应的ASCII码为a)(2)(9797)(因为%d代表的含义是以整型格式打印)2、有以下定义:intc1;则c1=3/4*4+4;语句执行完毕后c1=()答案:43、有以下定义:intc1;则c1=7-4%3/3;语句执行完毕后c1=()答案:74、有以下定义:floatc1;则c1=3.14/2+4.3-(int)2.9;语句执行完毕后c1=()答案:3.8700005、有inti=3,j=2;则j=1.5/j+i++;之后j=().答案:3实验二:1.验证VC6中函数参数的求值顺序。在VC6中输入以下程序,按要求完成相关问题。#includestdio.hvoidmain(){inti,j;i=3;printf(%d,%d\n,i,++i);}以上程序,你分析的运行结果是:()实际的运行结果是:()如果你的分析有错误,请写出你出错的原因:()总结VC6对于函数参数的求值顺序是:()答案:4,4从右向左2、用下面的scanf函数输入数据,使输出内容为a=3,b=7,x=8.00,y=71.82,c1=’A’,c2=’a’.请把键盘上输入过程写在下面。#includestdio.hmain(){inta,b;floatx,y;charc1,c2;scanf(”a=%db=%d”,&a,&b);scanf(”%f%e”,&x,&y);scanf(”%c%c”,&c1,&c2);printf(”a=%d,b=%d,x=%.2f,y=%5.2f,c1=%c,c2=%c\n”,a,b,x,y,c1,c2);}答案:a=3b=7871.82Aa3、假如我国国民生产总值的年增长率是9%,编程计算10年后我国国民生产总值与现在比增长多少百分比,计算公式为:p=(1+r)n其中r为年增长率,n为年数,p为与现在相比的倍数。把正确的程序写在下面。答案:3、#includestdio.h#includemath.hvoidmain(){doublep,r,n,i;r=0.09,n=10,p=1;p=(pow((1+r),n)-1)*100;printf(%f%%\n,p);}4、已知华氏温度(f)与摄氏温度(C)的转换关系为:C=5.0/9*(F-32)从键盘输入华氏温度,输出其对应的摄氏温度。答案:#includestdio.hmain(){floatC,F;scanf(“%f”,&F);C=5.0/9*(F-32);printf(“%.2f\n”,C);}5、从键盘输入圆的半径和圆柱的高,计算圆球的体积和圆柱体表面积。编程实现之。答案:#includestdio.hintmain(){floatr,h,v,s;printf(请输入圆柱底面圆的半径:);scanf(%f,&r);printf(请输入圆柱的高:);scanf(%f,&h);v=4.0/3*3.14*r*r*r;s=2*3.14*r*h+2*3.14*r*r;//s=6.28*r*(h+r);printf(圆球的体积为%f,圆柱体表面积为%f\n,v,s);return0;}实验三:1、关系算术逻辑运算符的优先级是:();当inta=3,b=4,c=5,x=0,y=1;时,求以下表达式的值:(1)a+bc&&b==c你认为的结果是(),计算机计算的结果是()若你的结果错,分析你的错误原因并写在下边:()(2)!(ab)&&!c||1你认为的结果是(),计算机计算的结果是()若你的结果错,分析你的错误原因并写在下边:()(3)!(x=a)&&(y=b)&&0你认为的结果是(),计算机计算的结果是()若你的结果错,分析你的错误原因并写在下边:()答案:(1)0(2)1(3)02、(习题4.8)输入一个百分制成绩,要求输出成绩等级:89:A级,80~89:B级,60~79:C级,其它:D级;把调试正确的程序写在下面。答案:2、#include“stdio.h”voidmain(){ints;scanf(%d,&s);if(s89)printf(A);elseif(s79)printf(B);elseif(s59)printf(C);elseprintf(D);}3、(习题4.9)给一个不多于5位数的正整数,要求:(1)求出它是几位数;(2)分别输出每一位数字;例如:输入120,则输出为:120是3位数,百位:1,十位:2,个位:0答案:3、(1)#include“stdio.h”voidmain(){ints;scanf(%d,&s);if(s9999)printf(五位数);elseif(s999)printf(四位数);elseif(s99)printf(三位数);elseif(s9)printf(二位数);elseprintf(一位数);}(2)#includestdio.hintmain(intargc,char*argv[]){ints;scanf(%d,&s);if(s9999){printf(%d是五位数.,s);printf(万位是%d,,s/10000);printf(千位是%d,,s%10000/1000);printf(百位是%d,,s%1000/100);printf(十位是%d,,s%100/10);printf(个位是%d,,s%10);}elseif(s999){printf(四位数);printf(千位是%d,,s%10000/1000);printf(百位是%d,,s%1000/100);printf(十位是%d,,s%100/10);printf(个位是%d,,s%10);}elseif(s99){printf(三位数);printf(百位是%d,,s%1000/100);printf(十位是%d,,s%100/10);printf(个位是%d,,s%10);}elseif(s9){printf(二位数);printf(十位是%d,,s%100/10);printf(个位是%d,,s%10);}else{printf(一位数);printf(个位是%d,,s%10);}return0;}4、从键盘输入三角形三边长,若三边不符合成为三角形条件,则输出错误提示,否则输出三角形面积。答案:#include#includeintmain(){floata,b,c,p,s;floata1,a2,a3;printf(请输入三条边的长度,以空格隔开\n);scanf_s(%f%f%f,&a,&b,&c);p=(a+b+c)/2;a1=p-a;a2=p-b;a3=p-c;s=sqrt(p*a1*a2*a3);if(a+bc){if(b+ca){if(a+cb){printf(三角形的面积s=%f\n,s);}elseprintf(你输入的三个数字不能组成三角形\n);}elseprintf(你输入的三个数字不能组成三角形\n);}elseprintf(你输入的三个数字不能组成三角形\n);}实验四:1.编程从键盘输入两个正整数,求两数的最小公倍数。把调试正确的源代码写在答案中。答案:1#includestdio.hmain(){inta,b,i;printf(请输入两个整数:);scanf(%d%d,&a,&b);for(i=a;i{if(i%a==0&&i%b==0){printf(最小公倍数是%d,i);break;}}}2.输出所有的水仙花数,所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如153是一个水仙花数,因为153=13+53+33。把调试正确的源代码写在答案中。答案:2.#includestdio.hmain(){intb,s,g,x;for(x=100;x1000;x++){b=x/100;g=x%10;s=x/10%10;if(x==b*b*b+g*g*g+s*s*s)printf(%d\n,x);}}3、相传韩信智商极高,有一次带兵1500人与敌人开战,战后死四百多人,但是具体数目不清楚,为了清点人数,韩信命士兵站3人一排,多出2人;站5人一排,多出3人;站7人一排,多出2人。韩信掐指一算就知道了剩下多少兵。请用计算机算一下共有多少兵?把调试正确的源代码写在答案中。答案:3#includestdio.hmain(){intx;for(x=1000;x1100;x++){if(x%3==2&&x%5==3&&x%7==2)printf(%d\n,x);}}4.根据输入的数n来决定输出三角形图案的大小(习题5.16),当n=4时输出效果入下图所示:要求必须用两重循环结构编写程序。****************把调试正确的源代码写在答案中。答案:#includestdio.hmain(){inti,j,x;printf(请输入三角形高度:);scanf(%d,&x);for(i=1;i=x;i++){for(j=1;j=x-i;j++)printf();for(j=1;j=2*i-1;j++)printf(*);printf(\n);}}实验五:1.已知求两个正整数的最大公约数的程序可能如下所示:运行此程序,验证程序的正确性,把错误全部改正后,把调试正确的源代码写在答案中。#includestdio.hmain(){intm,iscanf(%d,%d,m,n);i=m;while(!(n%i==0||m%i=0));{i--}printf(“%d”,&i);}答案:intmain(){intm,n,i;scanf(%d,%d,&m,&n);i=m;while(!(n%i==0&&m%i==0)){i--;}printf(%d\n,i);}2.某电文加密方法如下:把字母a变成e,即变成其后第第4个字母,w变成a,x变成b,y变成c,z变成d。其它内容不变,请编程实现从键盘输入一串字符(以回车符结尾),将其按以上方法加密后输出。把调试后的正确源程序写在答案中。答案:intmain(){charch;while((ch=getchar())!='\n'){//scanf(%c,&ch);if(ch='a'&&ch='z'){ch=ch+4;if(ch'z'){ch=ch-26;}}printf(%c,ch);}printf(\n);}3.根据输入的数n来决定输出菱形图案的大小,当n=4时输出效果入下图所示:要求必须用两重循环结构编写程序。把调试正确的源代码写在答案中。*************************答案:intn,i,j;printf(输入一个正整数n:);scanf(%d,&n);for(i=1;i{for(j=0;j=n-i;j++){printf();}for(j=1;j=2*i-1;j++){printf(*);}printf(\n);}for(i=1;i=n;i++){for(j=0;j=i-1;j++){printf();}for(j=1;j2*(n-i+1);j++){printf(*);}printf(\n);}实验六:1、输入10个数,找出其中最大数的序号并输出序号和这个最大值。1.#includestdio.hmain(){inti,j,k,m,a[10];for(i=1;i=10;i++)scanf(%d,&a[i]);for(j=0;j=10;j++){if(a[j]a[j+1])k=a[j];elsek=a
本文标题:C语言实验习题及答案
链接地址:https://www.777doc.com/doc-6058773 .html