• / 58
  • 下载费用:15 金币  

c语言程序设计教学教材-韩立毛徐秀芳版书后练习学习进步题参考.答案.doc

关 键 词:
语言程序设计 教学 教材 韩立毛徐秀芳版 书后 练习 学习 进步 参考 答案
资源描述:
\\练习题1参考答案一、选择题序号12345678参考答案ACADCCCA二、填空题1.程序设计语言主要分为以下三类:机器语言、 汇编语言 和 高级语言 。2.在C语言中,一个函数一般由两个部分组成,它们是函数首部 和 函数体 。3.C程序开发过程的一般步骤为:源程序的编辑、 编译 、 连接 和运行。4. C程序源文件的扩展名为 .c ,编译成功后产生的文件扩展名为 .obj ,连接成功后产生文件扩展名为 .exe 。三、应用题略练习题2参考答案一、选择题序号12345678910参考答案BACCBABBDC序号1112131415参考答案ABCAC二、填空题1.通常一个字节包含 8 个二进制位。在一个字节中能存放的最大(十进制)整数是 255(无符号),127(带符号) ,最小(十进制)整数是 -128 ,它的二进制数的形式是 10000000 。2.在C语言中,十进制数30的八进制数表示形式是 036 ,十六进制数表示形式是 0x1e ,在内存中它的二进制数表示形式是 0000000000011110 。3.条件“2020&&x<30||x<-100 。4.若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为 6 ,b值为 4 ,c值为 2 。5.已知int y; float x=-3; ,执行语句y=x%2; 后,变量y的值为 语句出错 。6.字符串"ab\034\\\x79"的长度为 5 。7.在C语言中(以16位PC机为例),一个float型数据在内存中所占用的字节数为 4 ;一个double型数据在内存中所占的字节数为 8 。8.若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为 1 。9.表达式pow(2.8,sqrt(double(x)))值的数据类型为 double 。10.若a是int型变量,则表达式(a=4*5, a*2), a+6的值为 26 。11.若a是int型变量,则执行表达式a=25/3%3后a的值为 2 。12.若i为int整型变量且赋值为6,则运算i++后表达式的值是 6 ,变量i的值是 7 。13.若x为int型变量,执行语句:x=10;x+=x-=x-x;则x的值为 20 。14.若x和y为double型变量,则表达式x=1,y=x+3/2的值是 2.000000 。15.(-b+sqrt(b*b-4*a*c))/(2*a)的数学式子是 [-b+√(b^2-4ac)]/2a 16.sqrt(p*(p-a)*(p-b)*(p-c))的数学式子是 √[p*(p-a)*(p-b)*(p-c)] 。17.判断某一年份是否为闰年的表达式是(year%4==0||year%100==0) && year%400!=0)。18.用随机函数rand()产生一个在[-20,20]两位整数的表达式是 x=rand()%41-20。三、阅读分析下列程序。1. 写出下列程序的输出结果。182. 已知字母B的ASCII码为66,写出下列程序的输出结果。67,E3. 写出下列程序的输出结果。a=4,b=3练习题3参考答案一、选择题序号12345678910参考答案DBDDCDDBBA二、填空题1.C语句句尾用 分号 结束。2.若有变量定义:int a=1,b=2,c=3,d=4,x=5,y=6;则表达式(x=a>b)&&(y=c>d) 的值为 0 。3.使用强制转换方法将正整数转换成字符。本题程序如下:本程序的执行结果为 输入一个正整数(小于255):97 a的ASCII码为97 。4.下面程序的输出是 -100,50i=-100,j=50i=-100j=50。5.执行以下程序时,若从第一列开始输入数据,为使变量a=2,b=8,x=6.5, y=56.62,el='C',c2='b',正确的数据输入形式是 a=2 b=8x=6.5 y=56.62c1=C c2=b 。三、程序设计题1.编写程序交换两个变量a,b的值,并输出。如输入时a=3,b=5,输出a=5,b=3。#includevoid main(){ int a,b,c;printf(“输入两个数:a,b”);scanf(“a=%d,b=%d”,&a,&b);c=a;a=b;b=c;printf(“a=%d,b=%d”,a,b);}2. 编写程序输入小写字符boy,输出大写字符BOY。#includevoid main(){char c;printf(“Input:”);scanf(“%c”,&c);c=c-32;printf(“%c”,c);}3.已知华氏温度与摄氏温度的转换公式为:C=(F-32)*5/9。编写程序当输入华氏温度F时,输出对应的摄氏温度。#includevoid main(){float F;scanf(“%f”,&F);printf(“%f”,(F-32)*5/9);}4.设圆的半径r=1.5,圆柱高h=3,编写程序求圆周长、圆面积、圆球表面积、圆球体积及圆柱体积。用scanf函数输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。#includeint main(){float h,r,l,s,sq,vq,vz;float pi=3.141592;printf(“请输入圆半径r,圆柱高h:”);scanf(“%f,%f”,&r,&h);l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vq=3.0/4.0*pi*r*r*r;vz=pi*r*r*h;printf(“圆周长为: l=%6.2f\n”,l);printf(“圆面积为: s=%6.2f\n”,s);printf(“圆球表面积为: sq=%6.2f\n”,sq);printf(“圆球体积为: vq=%6.2f\n”,vq);printf(“圆柱体积为: vz=%6.2f\n”,vz);ruturn 0;}5.编写程序输入梯形的上底a,下底b和高h,输出该梯形的面积。#includevoid main(){float a,b,h,s;printf(“请输入梯形上底,下底和高:\n”);scanf(“%f%f%f”,&a,&b,&h);s=(a+b)*h/2;printf(“梯形面积为: %f\n”,s);}6.编写程序将"China"译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母"A"后面第4个字母是"E",用"E"代替"A"。因此,"China"应译为"Glmre"。请编写程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为'C','h','i','n','a',经过运算,使c1,c2,c3,c4,c5分别变为'G','l','m','r','e'。分别用putchar函数和printf函数输出这5个字符。#includeint main(){char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf(“password is %c%c%c%c%c\n”,c1,c2,c3,c4,c5);return 0;}#includeint main(){char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;putchar(c1);putchar(c2);putchar(c3);putchar(c4);putchar(c5);return 0;}练习题4参考答案一、选择题序号12345678910参考答案CBAACCBAAB二、填空题1.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是 abs(x)>5 && floor(x)==x 。2.以下程序运行后的输出结果是 20,0 。3.若从键盘输入58,则以下程序输出的结果是 585858 。4.以下程序输出的结果是 0 。5.以下程序的输出结果是 2 。6.若int i=10; 则行下列程序后,变量i的正确结果是 13 。三、程序设计题1.编写程序输入有3个整数a、b、c,并按照从小到大的顺序输出。#includeint main(){int a,b,c,t;printf(“please input a b c\n”);scanf(“%d%d%d”,&a,&b,&c);if(a>b){t=a;a=b;b=t; }if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf(“%d,%d,%d\n”,a,b,c);return 0;}2.有一个函数:编写一个程序,输入x的值,输出y的值。#includeint main(){int x,y;printf(“输入x:”);scanf(“%d”,&x);if(x<1){y=x;printf(“x=%d, y=x=%d\n”,x,y);}else if(x<10){y=2*x-1;printf(“x=%d, y=2*x-1=%d\n”,x,y);}else{y=3*x-11;printf(“x=%d, y=3*x-11=%d\n”,x,y);}return 0;}3.输入学生的百分制成绩,要求输出学生的成绩、等级以及相应的评语。设用‘A’、‘B’、‘C’、‘D’、‘E’五个等级,且90分以上为等级‘A’,评语为“成绩优秀”,80-89分为等级‘B’,评语为“成绩良好”,70-79分为等级‘C’,评语为“成绩中等”,60-69分为等级‘D’,评语为“成绩及格”,60分以下为等级‘E’,评语为“成绩不及格”。分别用if条件语句和switch开关语句编写程序。方法一:if条件语句#includevoid main(){int score;printf("输入成绩:");scanf("%d",&score);if(score>100 || score<0)printf("输入错误!\n");else if(score>=90)printf("成绩为%d,等级为A,成绩优秀\n",score);else if(score>=80)printf("成绩为%d,等级为B,成绩良好\n",score);else if(score>=70)printf("成绩为%d,等级为C,成绩中等\n",score);else if(score>=60)printf("成绩为%d,等级为D,成绩及格\n",score);elseprintf("成绩为%d,等级为E,成绩不及格\n",score);}方法二:switch开关语句#includevoid main(){int score;printf("输入成绩:");scanf("%d",&score);if(score>100 || score<0)printf("输入错误!\n");elseswitch(score/10){ case 10:case 9: printf("成绩为%d,等级为A,成绩优秀\n",score);break;case 8: printf("成绩为%d,等级为B,成绩良好\n",score);break;case 7: printf("成绩为%d,等级为C,成绩中等\n",score);break;case 6: printf("成绩为%d,等级为D,成绩及格\n",score);break;default:printf("成绩为%d,等级为E,成绩不及格\n",score);}}4.编写程序输入三个整数,判断它们是否能够构成三角形。若能构成三角形,则输出三角形的类型(等边三角形、等腰三角形、一般三角形),并计算三角形的面积;若不能构成三角形,则输出“不能构成三角形”的信息。#include#includevoid main(){float a,b,c,s,t;printf("input a,b,c\n");scanf("%f%f%f",&a,&b,&c);if((a+b>c)&& (a+c>b)&& (b+c>a)){t=(a+b+c)/2;s=sqrt(t*(t-a)*(t-b)*(t-c));if(a==b&&b==c){printf("这是等边三角形,面积为%f\n",s);}else if((a==b)&&(b!=c)||(b==c)&&(a!=c)||(a==c)&& (a!=b)){printf("这是等腰三角形,面积为%f\n",s);}else printf("这是一般三角形,面积为%f\n",s);}else printf("不能构成三角形");}5. 编写程序在屏幕上显示一张如下所示的时间表: *****Time***** 1 morning 2 afternoon 3 night Please enter your choice(1-3):操作人员根据提示进行选择,程序根据输入的时间序号显示相应的问候信息,选择1时显示"Good morning", 选择2时显示"Good afternoon", 选择3时显示"Good night",对于其他选择显示"Selection error!"。#includevoid main() { int n; printf(" *****Time******\n1 morning\n"); printf("2 afternonn\n3 night\n"); printf("Please enter your choice(1-3):\n"); scanf("%d",&n); switch(n){ case 1:printf("Good morning\n");break; case 2:printf("Good afternoon\n");break; case 3:printf("Good night\n");break; default: printf("Selection error!\n"); } }6.设银行整存整取不同期限的月利率分别为:一年定期为0.63%;二年定期为0.66%;三年定期为0.69%;五年定期为0.75%;八年定期为0.84%。要求输入存款的本金和期限,求到期能从银行得到的本金和利息的合计。分别用if语句和switch语句编与程序。#includevoid main(){const double rate[] = {0.0063, 0.0066, 0.0069, 0.0075, 0.0084};int years = 0;float init = 0;double sum = 0; printf("\nInput initial amount of money:");scanf("%f", &init);printf("\nType in save period in years:");scanf("%d", &years);if( years==1 || years==2 || years == 3 || years == 5 || years == 8){if(years==1)sum = init*(1+rate[0]*12*years);else if(years==2)sum = init*(1+rate[1]*12*years);else if(years==3)sum = init*(1+rate[2]*12*years);else if(years==5)sum = init*(1+rate[3]*12*years);elsesum = init*(1+rate[4]*12*years);printf("\nTotal amount after %d years: %.2f\n", years, sum);}else{printf("\nWrong number, Please type in years again: ");scanf("%d", &years);}}7.编写程序计算个人所得税。个人所得税的计算方法:(实发工资-3500)*税率-扣除数,设个人所得税起征点为3500元。共分为7级,具体如下:级数应纳税额 税率(%)扣除数1不超过1500元的302超过1500元至4500元的部分101053超过4500元至9000元的部分205554超过9000元至35000元的部分2510055超过35000元至55000元的部分3027556超过55000元至80000元的部分3555057超过80000元的部分4513505#includevoid main(){float a; //实发工资float b; //应纳税部分工资float s; //税率float kouchu;//扣除数float ptax; //个人所得税 printf("输入工资:");scanf("%f",&a);b=a-3500;if(b>0&&b<=1500){s=0.03;kouchu=0;}else if(b<=4500){s=0.1;kouchu=105;}else if(b<=9000){s=0.2;kouchu=555;}else if(b<=35000){s=0.25;kouchu=1005;}else if(b<=55000){s=0.3;kouchu=2755;}else if(b<=80000){s=0.35;kouchu=5505;}else{s=0.45;kouchu=13505;}ptax=b*s-kouchu;printf("个人所得税为%f\n",ptax);}8. 编写程序计算货款。设按购买货物款的多少分别给予不同的优惠折扣,购货不足250元,没有折扣;购货250元(含250元,下同),不足500元,减价5%;购货500元,不足1000元,减价7.5%;购货1000元,不足2000元,减价10%;购货2000元及以上,减价15%。#includevoid main(){ float m,d,t;printf("请输入购物金额:");scanf("%f",&m);if(m<250) d=0;else if(m<500) d=0.05;else if(m<1000) d=0.075;else if(m<2000) d=0.1;else d=0.15;t=m*(1-d);printf("实际应付金额:%f",t);}9.给一个不多于5位的正整数,编写程序实现:(1)求出它是几位数;(2)分别输出每一位数字;(3)按逆序输出各位数字。#includeint main() { int i,j,a,b,c,d,k=0,n=0,s=100000,t=10,p; scanf("%d",&a); p=a; //保存原始输入值,后面用到 if (p/s!=0) //超过5位数,直接错误提示,程序结束。 printf("输入错误!\n"); else { printf("逆序输出各位数字:"); for (i=0;i<6;i++) { b=a; if (b!=0) { k++;b=a%t; //对10求余可得个十百千万位printf("%d ",b );a=a/t; } } printf("\n%d是个%d位数\n",p,k ); printf("正序输出各位数字:"); for (j=0;j<6;j++) { c=p; d=c/s%10; // 除以s后对10求余可得万千百十个位 s=s/10; //s要依次/10,求解后面的数值 if (d!=0) printf("%d ",d ); } printf("\n");}return 0;}10.编写程序对数据进行加密。设加密方法为:对任意给定的4位整数,每一位数字均加2,若某位数字加2后大于9,则取其除以10的余数,如数据6987加密后的数据为8109。#includevoid main(){int a,b,c,d,m;scanf("%d",&m);a=m%10+2;if(a>=10) a=a%10;b=m/10%10+2;if(b>=10) b=b%10;c=m/100%10+2;if(c>=10) c=c%10;d=m/1000+2;if(d>=10) d=d%10;m=a+b*10+c*100+d*1000;printf("%d\n",m);}练习题5参考答案一、选择题序号12345678910参考答案ABBABDCDBD二、填空题1.以下程序的输出结果是 52 。2.以下程序的输出结果是 17 。3.有以下程序:程序运行时,如果从键盘输入:Y? N?<回车>,则输出结果为 X 。4.下面程序的运行结果 s=254 。5.下面程序段中循环体的执行次数是 3 。6.下面程序段的运行结果是 ** 。7.下面程序的运行结果是 1, -2 。8.下面程序段的运行结果是 8 。9.下面程序的功能是:计算1~10之间的奇数之和与偶数之和,试完善程序。10.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。三、程序设计题1.编写程序计算1+3+5+7+…+97+99的值。#includevoid main(){int i,sum;sum=0;for(i=1;i<=99;i+=2){sum=sum+i; }printf("%d\n",sum);}2.编写程序从键盘输入正整数n,求n!。#includevoid main(){ int i,n,fact=1;scanf ("%d",&n);for(i=1;i<=n;i++){fact*=i;}printf("n=%d,n!=%d\n",n,fact);}3.编写程序求一个十进制整数的位数。#includevoid main(){int n,m;scanf("%d",&n);if(n<0)printf("请输入正整数!谢谢合作!\n");if(n<=9&&n>=0)m=1;else{m=0; //t=n/10; while(n>=1) { n=n/10; ++m; }}printf("%d\n",m);}4.编写程序输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。#includeint main(void){ //输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 char ch; int char_num=0,kongge_num=0,int_num=0,other_num=0; while((ch=getchar())!='\n')//回车键结束输入,并且回车符不计入 { if(ch>='a'&&ch<='z'||ch<='z'&&ch>='a') char_num++; else if(ch==' ') kongge_num++; else if(ch>='0'&&ch<='9') int_num++; else other_num++; } printf("字母= %d,空格= %d,数字= %d,其它= %d\n",char_num,kongge_num,int_num,other_num); return 0; } 5.编写程序求一个十进制整数是否为回文数。所谓回文数是指从左向右读或从右向左读都是相同的数,也就左右对称的数,如:232、3553、123321等。#include#includeint main(){char digits[100], i, n;scanf("%s",digits);n = strlen(digits); for(i=0;iint main(){int i,j,k,n;printf("parcissus numbers are:");for(i=1;i<=9;i++)for(j=0;j<=9;j++)for(k=0;k<=9;k++){n=i*100+j*10+k;if(n==i*i*i+j*j*j+k*k*k)printf("%5d",n);}printf("\n");return 0;}方法二:单重循环#includeint main(){int i,j,k,n;printf("parcissus numbers are:");for(n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if(n==i*i*i+j*j*j+k*k*k)printf("%5d",n);}printf("\n");return 0;}7.编写程序找出1000之内的所有“完美数(完全数、完备数)”。“完美数”也称为“完数”,它是指一个数恰好等于它的因子之和。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。#includeint main(){int m,s,i;for(m=2;m<1000;m++){s=0;for(i=1;ivoid main(){int cocks=0,hens,chicks;while(cocks<=20){hens=0;while(hens<=33){chicks=100-cocks-hens;if(5.0*cocks+3.0*hens+chicks/3.0==100.0)printf("公鸡%d只,母鸡%d只,小鸡%d只\n\n",cocks,hens,chicks);hens++;}cocks++;}}9.已知,编写程序输入x的值,求的近似值(要求被舍去的项小于10-6)。#include #include void main(){ double temp=1,sum=1,b=1.0; int i=1;double x,a=1.0;scanf("%lf",&x); while(fabs(temp)>=1e-6) { b=b*i;a=a*x; temp=a/b; //定义每一项的内容 sum=sum+temp; i++; } printf("e=%lf\n",sum);}10. 编写程序利用泰勒级数计算sinx的值,要求最后一项的绝对值小于10-5,并计算共求了多少项。#include #include void main(){ int n=1,count=0; double x,sum,term; printf("please input a number x:"); scanf("%lf",&x); sum=x; term=x; while(fabs(term)>=1e-6) { term=-term*x*x/((n+1)*(n+2));//定义后一项与前一项的关系 sum=sum+term; n=n+2; count++; } printf("sin(x)=%f,count=%d\n",sum,count);}11.编写程序用牛顿迭代法求方程在1.5附近的根。#include #include double F1(double); //原函数 double F2(double); //原函数的一阶导数函数 double Newton(double,double);void main(){ double x0 = 1.5; double e = pow(10,-5); printf("the result is %lf\n",Newton(x0,e));}double F1(double x){ return 2 * x * x * x - 4 * x * x + 3 * x - 5 ;}double F2(double x){ return 6 * x * x - 8 * x + 3 ;}double Newton(double x0, double e){ double x1; do { x1 = x0; x0 = x1 - F1(x1) / F2(x1); }while (fabs(x1 - x0) > e); return x0;}12.编写程序用二分法求方程在(-10,10)之间的根。#include #include double function(double x){ double f; f=2*x*x*x-4*x*x+3*x-5; return f;}void main(){double a=-10,b=10,c,fa,fb,fc;fa=function(a);fb=function(b);do{ c=(a+b)/2.0; fc=function(c); if(fc*fa<0) { b=c; fb=fc; } else { a=c; fa=fc; }}while(fabs(a-b)>=1e-6);printf("The root is%lf\n",c);}13.编写程序将一张面值为100元的人民币等值换成100张5元、1元和5角的零钞,要求每种零钞不少于1张。#include int main() { int n5, n1, n05; int count = 0; for (n5=1; n5<20; n5++) { for (n1=1; n1<(100-n5); n1++) { n05 = 100 - n5 - n1; if ((n5*10 + n1*2 + n05) == 200) { count++; printf("第%d种 : %d 张五元, %d 张一元, %d 张五角\n", count, n5, n1, n05); } } } return 0;}14.编写程序验证哥德巴赫猜想(任何一个大于等于6的偶数都可以分解为两个素数之和),验证范围限定为6到2000。#include int main(){ int i,j,k,l; int ss(int n); for (i=6;i<=2000;i++) { if (i%2==0) for (j=2;j<=(int)(i/2);j++) { k=ss(j); l=ss(i-j); if (k==1&&l==1) printf("%d + %d = %d\n",j,i-j,i); } } return 0;}int ss(int n){ int i; for (i=2;i<=n;i++) { if (n%i==0&&n!=i) return 0; if (n==i) return 1; } }15.爱因斯坦数学题。有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。编制程序求这条阶梯共有多少阶?#includevoid main(){int n=1;while(1){if((n%2==1)&&(n%3==2)&&(n%5==4)&&(n%6==5)&&(n%7==0)) //判断{printf("%d\n",n);break;}n++;}printf("%d%%2=%d…%d\n",n,n/2,n%2); //验算printf("%d%%3=%d…%d\n",n,n/3,n%3);printf("%d%%5=%d…%d\n",n,n/5,n%5);printf("%d%%6=%d…%d\n",n,n/6,n%6);printf("%d%%7=%d…%d\n",n,n/7,n%7);}16.三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,编写程序求共有多少种不同的颜色搭配?#include void main(){ int n=0; int a,b,c; for (a=0;a<=3;a++) for (b=0;b<=3;b++) for (c=0;c<=6;c++) if (a+b+c==8) n++; printf(“%d\n”,n);}练习题6 参考答案一、选择题序号12345678910参考答案DDDAADACBC序号11121314参考答案CDAA二、填空题1.下面程序的运行结果是 1 1 2 35 8 13 21 34 552.以下程序的输出结果是 abc 。3.若有定义:int a[3][4]={{1, 2}, {0}, {4, 6, 8, 10}}; ,则初始化后,a[1][2]得到的初值是 0 ,a[2][1]得到的i初值是 6 。4.以下程序可求出所有水仙花数(水仙花数是指一个3位正整数,其各位数字的立方之和等于该正整数。如:407=4*4*4+0*0*0+7*7*7,故407是一个水仙花数)。请填空。#include void main(){int x,y,z,a[8],m,i=0;printf("The special numbers are:\n");for(m=100;m<1000; m++) {x=m/100;y= (m/10)%10 ;z=m%10;if(x*100+y*10+z==x*x*x+y*y*y+z*z*z) { a[i]=m ; i++;} } for(x=0; x#include void main(){char a[]="c language", t; int i,j,k; k=strlen(a);for(i=0;i<=k-2;i+=2) for(j=i+2;ja[j] ) { t=a[i]; a[i]=a[j]; a[j]=t; } puts(a); printf("\n");}6.下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的数组存到另一个二维数组b中,并按矩阵形式输出a和b,请填空。例如:array a: array b: 4 5 6 6 4 5 1 2 3 3 l 2#include void main(){int a[2][3]={4,5,6,1,2,3},b[2][3]; int i,j; printf("array a: \n"); for(i=0;i<=1;i++) {for(j=0;j<3;j++) {printf("%5d",a[i][j]); b[i][j]=a[i][j]; } printf("\n"); } for( i=0;i<=1; i++) b[i][0]=a[i][2]; printf("array b:\n"); for(i=0;i<2;i++) {for(j=0;j<3;j++) printf("%5d",b[i][j]); printf("\n") ; }}7.下面程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行3个元素输出数组b。请填空。#include void main(){int a[10],b[10],i;for(i=0; i<10 ;i++) scanf("%d", &a[i]);for(i=1; i<10 ;i++) b[i]=a[i]-a[i-1]; for(i=1;i<10;i++) {printf("%3d",b[i]); if( i%3==0 )printf("\n"); } } 8.以下程序是求矩阵a,b的和,结果存入矩阵C中,并按矩阵形式输出。请填空。 #include void main() {int a[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}}; int b[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}}; int i,j,c[3][4]; for(i=0;i<3;i++) for(j=0;j<4;j++) c[i][j]= a[i][j]+b[i][j] ; for(i=0;i<3;i++) {for(j=0;j<4;j++)printf("%3d",c[i][j]); printf("\n") ; } }三、程序设计题1.从键盘输入某个班级的30名学生信息(设只含有学号),编写程序用折半查找法通过输入一个学生的学号查找某一学生(注意:查找前要先进行排序)。#include#define N 30void main(){int a[N];int i,j,t,x,mid,low=0,high=N-1;printf("请输入%d名学生的学号:\n",N);for(i=0;ia[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("请输入需要查找的学生的学号:\n");scanf("%d",&x);do{mid=(low+high)/2;if(a[mid]==x)break;else if(a[mid]>x)high=mid-1;elselow=mid+1;}while(low<=high);if(low<=high)printf("这个学生学号为%d\n",x);elseprintf("查找不到\n");}2.设有某班级35名学生的一门课程考试成绩,编写程序求超过平均的学生(包括学号和成绩),并将所有学生按成绩降序排列输出。#include #define NUM 35 void main( ) { int a[NUM][2]; float sum=0,ave; int i,j,t; printf("请输入%d位同学的学号和成绩:\n",NUM); for(i=0;iave) printf("超过平均分的学生学号为:%d,成绩为:%d\n",a[i][0],a[i][1]); for(j=0;j#includevoid main(){int i; char name[8]; char*p1="张华"; char*p2="李好"; char*p3="王娟"; int n1=0,n2=0,n3=0;for(i=0;i<10;i++){printf("请输入第%d个投票人选择的候选人:\n",i+1);scanf("%s",name);if(strcmp(name,p1)==0) n1++;else if(strcmp(name,p2)==0) n2++;else if(strcmp(name,p3)==0) n3++;}printf("%s的票数为%d\n",p1,n1);printf("%s的票数为%d\n",p2,n2);printf("%s的票数为%d\n",p3,n3);}4.输入一行字符串,编写程序分别统计各个英文字母出现的次数(不区分字母大小写)。#include int main(){int let[26] = {0};int i;char ch;while((ch=getchar())!='\n'){if (ch>='A' && ch<='Z') let[ch-'A']++;else if (ch >='a' && ch <='z') let[ch-'a']++;}for (i=0;i<26;i++)printf("%c: %d\n", i+'a', let[i]);return 0;}5.编写程序输出以下杨辉三角形(要求打印出10行)。1 1 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1……#include#define N 10void main(){ int i,j,k; int a[N][N]; for(i=0;i#define N 4void main(){ int a[N][N]; int i,j; int sum1=0; //对角线元素之和 int sum2=0; //四周靠边元素之和 printf("请输入%d*%d矩阵:\n",N,N); for(i=0;ivoid main(){int i,j;int a[5][5]; //5个学生的学号,3门课程及平均成绩printf("请输入5个学生的学号及3门课程的成绩:\n");for(i=0;i<5;i++) //输入5个学生的学号及3门课程的成绩 for(j=0;j<4;j++) scanf("%d",&a[i][j]);for(i=0;i<5;i++){ a[i][4]=0; //平均值初始化为0for(j=1;j<4;j++)a[i][4]=a[i][4]+a[i][j];a[i][4]=a[i][4]/3;}for(i=0;i<5;i++) //按5行5列的格式输出{ for(j=0;j<5;j++)printf("%5d",a[i][j]); printf("\n");}}8.编写程序输入10名运动员参加100m比赛的号码和成绩,要求按运动员的成绩输出名次。#include "stdio.h"void main(){ int num[10]={207,156,453,96,339,77,231,196,122,302}; float btimes[10]={14.5f,14.2f,15.1f,15.7f,14.9f,15.1f,14.7f,13.9f,13.7f,14.5f}; int i,j,tmp; float mid; //用选择法进行排序 for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(btimes[i]>btimes[j]) { tmp=num[i]; num[i]=num[j]; num[j]=tmp; mid=btimes[i]; btimes[i]=btimes[j]; btimes[j]=mid; } printf("运动员\t成绩\n"); for(i=0;i<10;i++) printf("%d\t%.1f\n",num[i],btimes[i]);}9.输入C语言源程序正文,编写程序找出可能存在的花括号和圆括号不匹配的错误。#include#includeint main(){int i,j;int hcount,ycount,fcount;char c;hcount=ycount=fcount=0;while((c=getchar())!='\n'){if(c=='{')hcount++;else if(c=='}')hcount--;if(c=='(')ycount++;else if(c==')')ycount--;if(c=='[')fcount++;else if(c==']')fcount--;}if(hcount==0 && fcount==0 && ycount==0)printf("括号匹配");elsep
展开阅读全文
  语墨文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:c语言程序设计教学教材-韩立毛徐秀芳版书后练习学习进步题参考.答案.doc
链接地址:http://www.wenku38.com/p-145393.html

                                            站长QQ:1002732220      手机号:18710392703    


                                                          copyright@ 2008-2020 语墨网站版权所有

                                                             经营许可证编号:蜀ICP备18034126号

网站客服微信
收起
展开