• 346.93 KB
  • 2022-04-22 11:51:34 发布

《C语言程序设计》习题参考答案.pdf

  • 51页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《C语言程序设计》习题参考答案第二章一、思考题1.常量是指在C程序运行过程中其值不变的量,变量是一个值的存放处,其值在程序运行过程中可以被改变。常量有两种形式:字面常量与符号常量,C语言可以使用以下两种形式定义符号常量(1)用关键字const定义定义格式为:const类型名常量名=值;(2)用编译预处理命令#define定义格式为:#define<常量名><值常量>变量的定义格式为:数据类型变量名1,变量名2,…,变量名n;或数据类型变量名1=初值1,变量名2=初值2,…,变量名n=初值n;2.名字、类型、值和地址。例如,inta=1;int是类型,a是名字,1是值,地址是编译器给a变量分配的内存空间。3.可以,因为变量的值可以被改变,但不是一定被改变。如果程序中没有其它不同的赋值,变量将保持不变。4.整型的值集理论上是所有整数,但由于受到计算机存储单元的限制,C语言的整型只能表示所有整数的一个有限子集,因此,整数有它的表示范围限制,且不同的C语言系统可表示整数的范围可能不同。不同范围的整型数据所占有的内存空间大小不同。程序开发人员通过选择能够满足范围要求的类型(short或long),可以减少数据存储空间。比如,当短整型可以满足数据范围要求时,就没有必要选择需要更多存储空间的长整型。5.字符"8"是字符型,数字8是整型。6.没有7."/"是除法,"%"是取余数,"/"与"÷"的用法和功能不完全一样,"÷"得到的是两数相除后得到的真实值,"/"得到的是两数相除后取整的值。8."="是赋值运算符,它将右侧表达式的值赋予左侧变量。不能判别两个量是否相等。9.可以,C编译器会先对其中一些操作数进行隐式类型转换,使操作数类型一致后进行计算。转换方向为:char,short→int→unsignedint→longint→double,float→>double。10.()[]->.从左到右!~++--&-*(type)sizeof()从右到左*/%从左到右+-从左到右1 <<>>从左到右<<=>>=从左到右==!=从左到右&从左到右^从左到右|从左到右&&从左到右||从左到右?:从右到左=+=-=*=/=%=&=^=|=<<=>>=从右到左,从左到右11.C语言的表达式是运算符和操作数组成的运算式。代数式是由运算符号(加、减、乘、除、乘方、开方)把数或表示数的字母连结而成的式子。单独一个数或者一个字母也是代数式。带有"<(≤)"、">(≥)"、"="、"≠"等符号的不是代数式。而C语言中根据运算符的不同,可将表达式分为算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式和逗号表达式,可以包含的运算符更多。12.当希望程序执行计算时,应写出一个表达式以制定必要的操作。括号可以用来强制改变表达式的运算顺序。13.++i是先让i自加1后再参加其他运算,而i++是先让i参加其他运算后再自加1。14.n作用是换行。用户输入时需要回车,因此会自动换行,不需要输出n。15.81616.(1)10-15整型(2)56/9整型(3)8.0*3浮点型(4)4*3/2整型(5)7.0/2浮点型(6)15%10整型(7)456/10%10整型17.(1)abs((x+y)*(z+u)+2*c)(2)3.14159*r*r(3)(log(x)+cos(y))/3(4)4*x*x*x+2*exp(y)(5)4*3.14159*R*R二、选择题1.D2.C3.B4.C5.A6.A7.A8.C9.D10.A,C11.A12.B13.D14.C15.A,B,D,E,G,J三、编程题1.#include#includevoidmain(){printf("abs(-6)+16.3*5.4=%fn",abs(-6)+16.3*5.4);}2 2.#include#includevoidmain(){floata,b,max;scanf("%lf%lf",&a,&b);max=a>b?a:b;printf("%lfn",sqrt(max));}3.#includevoidmain(){floata,b;scanf("%lf",&a);b=a*a;printf("%lf%lfn",b,b*a);}4.#includevoidmain(){floata,b,c,d,sum;scanf("%lf%lf%lf%lf",&a,&b,&c,&d);sum=a+b+c+d;printf("%lfn",sum/4);}5.#includevoidmain(){intsum=0,i,a[5],x;printf("输入一个五位数:");scanf("%d",&x);for(i=0;i<5;i++){a[i]=x%10;3 x/=10;sum=sum+a[i];}printf("%d",sum);putchar("(");for(i=4;i>=0;i--)printf("%d+",a[i]);putchar("b");printf("=%d",sum);putchar(")");}第三章一、思考题1.表达式语句,空语句,复合语句。2.是。3.表达式语句,空语句,复合语句,控制语句。C语言与其它语言的语句类型基本相同,只是语法有所区别。4.在C语言中,只要在任何表达式的结尾加上分号“;”就构成了表达式语句。表达式语句使C语言更加灵活。当我们使用表达式语句时一般只关心它的作用而不关心该表达式的值。如puts("hello");这个表达式语句,我们关心的是输出hello这个结果而不是puts函数的返回值。5.是,因为输入输出功能是函数调用语句。6.(1)floatx,y;scanf("%f,%f",x,y);改为scanf("%f,%f",&x,&y);(2)doublef=3.1415926;printf("%d",f);改为printf("%f",f);(3)floatx,y;scanf("%f%fn",x,y);改为scanf("%f%f",&x,&y);(4)doublex;longy;改为floatx;longy;scanf("%f%d",&x,&y);(5)floatf;scanf("%6.3f",&f);改为scanf("%6f",&f);4 二、选择题1.D2.D3.A4.B5.A6.C三、编程题1.#includevoidmain(){inta=3,b=4,c=5;doublex=1.2,y=2.4,z=-3.6;longu=51274,n=128765;charc1="a",c2="b";printf("a=%db=%dc=%dn",a,b,c);printf("x=%lf,y=%lf,z=%lfn",x,y,z);printf("x+y=%.2fy+z=%.2fz+x=%.2fn",x+y,y+z,z+x);printf("u=%ldn=%ldn",u,n);printf("c1="%c"or%d(ascii)n",c1,c1);printf("c2="%c"or%d(ascii)n",c2,c2);}2.#include#definePI3.14main(){floatr,s,v;printf("输入半径:");scanf("%f",&r);s=4*PI*r*r;v=4.0/3*PI*r*r*r;printf("圆球面积是:%.2fn",s);printf("圆球体积是:%.2fn",v);}3.#includevoidmain(){floatf,c;5 printf("输入华氏温度:");scanf("%f",&f);c=5.0/9*(f-32);printf("摄氏温度是:%.2fn",c);}4.#include#includevoidmain(){floata,b,c,s,area;printf("输入三角形的三条边长:");scanf("%f%f%f",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){//海伦公式s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("面积是:%f",area);}elseprintf("该三角形不存在!");}5.#includevoidmain(){shorta;a=21344211;printf("a=21344211,溢出后a=%dn",a);}6.#includevoidmain(){printf("\a,\b,\n,\r,\t,\v,\",\",\\,\?");}6 7.#includevoidmain(){chara,A;printf("输入一个小写字母,将输出一个相应大写字母:");a=getchar();A=a+"A"-"a";putchar(A);putchar("n");}8.#include#definerate0.0325voidmain(){floatcapital,sum=1,deposit;intyear,i;printf("输入存款本金:");scanf("%f",&capital);printf("输入存款期:");scanf("%d",&year);for(i=1;i<=year;i++){sum=(float)(sum*(1+rate));}deposit=sum*capital;printf("本利之和是:%.2fn",deposit);}9.#include#definerate0.0325voidmain(){charc1,c2,c;scanf("%c,%c",&c1,&c2);c=c1;c1=c2;c2=c;printf("%c,%cn",c1,c2);}7 第四章一、选择题1.C2.C3.D4.D5.A6.C7.C8.C9.B10.C11.D12.D13.D14.B15.C二、填空题1.main(){floata,b,t;scanf("%f%f",&a,&b);if(ac)b=c;a=c;c=b;3.执行以下程序,当输入3时,输出结果是33=33intmain(){intn;printf("Enteraninteger:");scanf("%d",&n);if(n=33)printf("%d=33n",n);elseprintf("%d!=33n",n);}三、编程题1.#includevoidmain(){intn;printf(“Pleaseenteroneinteger:”);8 scanf("%d",&n);if(n%2)printf("odd(奇数)n");elseprintf("even(偶数)n");}2.#includevoidmain(){charc;c=getchar();if(c>="A"&&c<="Z")c+="a"-"A";putchar(c);}3.#includevoidmain(){intn;printf(“Pleaseenteroneinteger:”);scanf("%d",&n);if(n<60)printf("不及格n");elseif(n<90)printf("合格n");elseif(n<=100)printf("优秀n");elseprintf("输入错误n");}4.#includevoidmain(){intn;printf(“Pleaseenteroneinteger:”);scanf("%d",&n);if(n<0&&n>100)printf("数据错误n");elseif(n<60)printf("不及格n");elseif(n<70)printf("及格n");elseif(n<80)printf("中n");elseif(n<90)printf("良n");9 elseprintf("优n");}5.#include#includevoidmain(){doublex,y;printf(“Pleaseenterx:”);scanf("%lf",&x);if(x<=-1)y=2*x*x*x-1;elseif(x<=0)y=x*x;elseif(x<=1)y=sqrt(x);elsey=3*x+2;printf("%lf",y);}6.#includevoidmain(){inty,m,d,i=1,s=0;printf("输入年月日:");scanf("%d%d%d",&y,&m,&d);while(i<=m-1){switch(i){case1:s=s+31;break;case2:{if((y%4==0&&y%100!=0)||(y%400==0))s=s+29;elses=s+28;break;}case3:s=s+31;break;case4:s=s+30;break;case5:s=s+31;break;case6:s=s+30;break;case7:s=s+31;break;case8:s=s+31;break;case9:s=s+30;break;case10:s=s+31;break;10 case11:s=s+30;break;case12:s=s+31;break;}i++;}printf("这是该年的第%d天n",s+d);}7.#includevoidmain(){charc;printf("请输入字符:");c=getchar();if(c==""||c=="n"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))switch(c){case"":printf("空格");break;case"n":printf("回车");break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":printf("数字字符");break;default:printf("英文字符");}elseprintf("其它字符");}#includevoidmain(){charc;c=getchar();11 if(c=="")printf("空格");elseif(c=="n")printf("回车");elseif(c>="0"&&c<="9")printf("数字字符");elseif((c>="a"&&c<="z")||(c>="A"&&c<="Z"))printf("英文字符");elseprintf("其它字符");}8.#includevoidmain(){floatw,h,t;printf("请输入体重(千克)和身高(米):");scanf("%f%f",&w,&h);t=w/(h*h);if(t<18)printf("体重偏轻,因为体重指数=%fn",t);elseif(t<25)printf("体重正常,因为体重指数=%fn",t);elseif(t<27)printf("体重超重,因为体重指数=%fn",t);elseprintf("肥胖,因为体重指数=%fn",t);}第五章一、选择题1.D2.A3.D4.C5.A6.C7.B8.D9.C10.C11.A12.B二、编程题1.#includevoidmain(){floatsum=0;inti,tmp;for(i=0;i<6;i++){12 printf("输入第%d个数:",i+1);scanf("%d",&tmp);sum=sum+tmp;}printf("平均值是:%f",sum/6);}2.#includevoidmain(){intsum=0,n,i;printf("输入一个正整数:");scanf("%d",&n);for(i=1;i<=n;i++)sum+=2*i;printf("前n个偶数和为:%dn",sum);}3.#includevoidmain(){inti;for(i=10;i<=150;i++)if(i%4==0||i%5==0)printf("%dt",i);}4.#includevoidmain(){inta,b,c,i;a=1;b=1;for(i=1;i<=30;i++){c=a+b;printf("%dt",a);a=b;13 b=c;if(i%5==0)putchar("n");}}5.#includevoidmain(){inta=1,b=1,c,i;for(i=1;a<15000;i++){c=a+b;printf("%dt",a);a=b;b=c;if(i%5==0)putchar("n");}}6.#includevoidmain(){inti;for(i=100;i<=200;i++)if(i%3==0&&i%7==0)printf("%dt",i);}7.#includevoidmain(){inta,b,max,min,i;printf("输入两个整数:");scanf("%d%d",&a,&b);max=a>b?a:b;min=a=1;i--)14 {if(a%i==0&&b%i==0){printf("最大公约数是:%dn",i);break;}}for(i=min;;i++){if(i%a==0&&i%b==0){printf("最小公倍数是:%dn",i);break;}}}8.#includevoidmain(){inti,j;for(i=10;i<=99;i++){j=i%10*10+i/10;if(i-j==45)printf("%dn",i);}}9.#includevoidmain(){inti,j,k;for(i=1;i<=9;i++)for(j=0;j<=9;j++)for(k=0;k<=9;k++)if(100*i+10*j+k==i*i*i+j*j*j+k*k*k)printf("%dn",100*i+10*j+k);15 }10.#includevoidmain(){inti,j;for(i=1;i<10;i++){for(j=1;j<=i;j++)printf("%d*%d=%dt",i,j,i*j);printf("n");}}11.#includevoidmain(){intsp,i;charc;for(sp=3,c="A";sp>=0;sp--,c++){for(i=1;i<=sp;putchar(""),i++);for(i=2*(c-"A")+1;i>0;i--)putchar(c);putchar("n");}}12.#includevoidmain(){charc;intlt=0,sp=0,num=0,oth=0;for(c=getchar();c!="n";c=getchar()){if((c>="a"&&c<="z")||(c>="A"&&c<="Z"))lt++;16 elseif(c=="")sp++;elseif(c>="0"&&c<="9")num++;elseoth++;}printf("letters:%dnspaces:%dnnumbers:%dnothers:%dn",lt,sp,num,oth);}13.#includevoidmain(){longi,j,sum,temp;for(i=1,sum=0;i<=10;i++){for(j=1,temp=1;j<=i;j++)temp*=j;sum+=temp;}printf("1!+2!+3!+4!+…+10!=%ldn",sum);}14.#includevoidmain(){inti,j,sum;for(i=1;i<=10000;i++){for(j=1,sum=0;jvoidmain(){inta=1,b=1,c,i;doublere,x,y;17 for(i=1,re=0;i<=20;i++){c=a+b;re+=c*1.0/b;a=b;b=c;}printf("%lfn",re);}16.#includevoidmain(){inti,j;for(i=0,j=1;i<7;i++){for(intk=0;kvoidmain(){intman,woman,child;for(man=0;man<=9;man++){for(woman=0;woman<=12;woman++){for(child=0;child<=36;child++){if((man*4+woman*3+child==36)&&(man+woman+child<=36))printf("man=%d,woman=%d,child=%dn",man,woman,2*child);}}18 }18.#includevoidmain(){intman,woman,child;for(man=0;man<=17;man++){for(woman=0;woman<=25;woman++){for(child=0;child<=30;child++){if((man*3+woman*2+child==50)&&(man+woman+child==30))printf("man=%d,woman=%d,child=%dn",man,woman,child);}}}}19.#includevoidmain(){inti,j;for(i=1;i<=100;i++)if(i%10>=2&&i/10>=2&&i!=22)printf("%dt",i);}20.#includevoidmain(){inti,c=0;for(i=1;i<=1000;i++){if(i%3==2&&i%5==3&&i%7==2){printf("%dt",i);c+=1;19 if(c%5==0)printf("n");}}}21.#includevoidmain(){inti,j,sum;for(sum=1,i=-3,j=5;j<=101;i-=4,j+=4)sum+=i+j;printf("%dn",sum);}22.#includevoidmain(){inti,j,k,sum;for(sum=0,i=1,j=2;k=3;i<=99;i+=2,j+=2,k+=2)sum+=i*j*k;printf("%dn",sum);}23.#includevoidmain(){inti,sum;for(sum=0,i=1;sum<10000;i++)sum+=i;printf("%dn",i-1);printf("%dn",sum-i);}24.#includevoidmain(){intn,a,i,j,b,sum;20 printf("输入正整数n和a:");scanf("%d%d",&n,&a);for(i=2,sum=a;i<=n;i++){for(b=a,j=2;j<=i;j++)b=b*10+a;sum+=b;}printf("%dn",sum);}25.#includevoidmain(){for(intc=0,i=100;i<=1000;i++)if(i<1000)if(i%10+i/10%10+i/100==5){printf("%dt",i);c++;}elseif(i%10+i/10%10+i/100%10+i/1000==5){printf("%dt",i);c++;}printf("n共%d个",c);}26.#includevoidmain(){for(inti=0;i<100;i++)if(i%10==6&&i%3==0)printf("%dt",i);}27.#includevoidmain(){inti,count=0;for(i=2;i<=1000;i++){21 for(intj=2;jvoidmain(){inti;doublej=1,s=1;for(i=2;i<=64;i++){j=j*2;s+=j;}printf("罕王共要%f粒麦子赏赐他的宰相n",s);}29.#includevoidmain(){printf("1500~3000年间的所有闰年为:n");for(intcount=0,i=1500;i<=3000;i++){if((i%4==0&&i%100!=0)||(i%400==0)){printf("%dt",i);count++;if(count%8==0)putchar("n");}}}22 第六章一、思考题1.函数不是总需要从main函数中调用,使用参数的目的是为了给被调函数传递数据。2.函数返回值是被调函数传递给主调函数的数据,不是每个函数都需要有返回值,是否有返回值由函数的功能确定,可以将有返回值的函数赋值给同类型的变量,无返回值的则不可。3.不是,若主调函数并不将数据传递给被调函数,对于参数函数的调用不需要参数。4.系统将所有库函数的函数原型分成多组,每组放在一个头文件中。调用库函数时,要注意引用其对应的头文件。5.如果变量定义在一个函数或复合语句的内部,则称该变量为局部变量,局部变量的作用域是函数级的或者模块级的;如果变量定义在所有函数外部,则称该变量为全局变量,其作用域是从它的定义的位置开始到本源文件结束。选择变量类型的两个原则是:①当变量只在某函数或复合语句内使用时,不要定义成全局变量。②当多个函数都引用同一个变量时,在这些函数上面定义全局变量,而且定义部分尽量靠近这些函数。6.静态局部变量是在函数或复合语句内部用static声明的变量,静态局部变量存储在静态存储区,且仅在编译时赋值一次。静态全局变量是使用static声明的全局变量,静态全局变量属于静态存储类型,编译时将静态全局变量分配在静态存储区,其生存期是程序的整个运行期间,但他的作用域只限于本文件。7.Voiddo_it_first()//void写成了Void{printf("Thisisfirst");voidmain();//主函数main()不能被其它函数调用return;}voidmain(){printf("Thisissecond");return0;//void类型函数不能有返回值}二、选择题1.B2.C3.C4.A5.A6.B7.D8.D9.D10.B11.B12.C13.B14.C15.B23 三、编程题1.#includeintsushu(int);voidmain(){inta;printf("输入一个整数:");scanf("%d",&a);if(sushu(a)==1)printf("是素数!n");elseprintf("不是素数!n");}intsushu(intx){for(inti=2;iintshuixian(int);voidmain(){for(inti=100;i<1000;i++)if(shuixian(i)==1)printf("%d是水仙花数n",i);}intshuixian(intx){inti,sum=0,a;a=x;for(i=0;i<3;i++){sum+=(x%10)*(x%10)*(x%10);x/=10;}if(sum==a)return1;elsereturn0;}24 3.#includevoidmain(){inta,b;intmin(intx,inty);printf("输入两个整数(a,b):");scanf("%d,%d",&a,&b);printf("最小值为:%dn",min(a,b));}intmin(intx,inty){returnx>y?y:x;}4.#includevoidmain(){floatx;intjudge(floata);printf("输入一个数据:");scanf("%f",&x);printf("%dn",judge(x));}intjudge(floata){returna>0?1:0;}5.①计算思路设随机变量x、y在区间[0,1]上服从均匀分布,即10≤x≤1,0≤y≤1f(x,y)=0其它22那么在区间0≤x≤1,0≤y≤1,x+y≤1内的概率为:P(x,y|0≤x≤1,0≤y≤1,x2+y2≤1)=π4②程序设计通过计算机随机函数rand生成[0,1]上的二维随机数,然后计算其平方和是否小于1,计小于1的随机数个数为N,同时记录生成的随机数个数M。根据概率的定义有:22P(x,y0|≤x≤0,1≤y≤,1x+y≤)1π4/N==P(x,y0|≤x≤0,1≤y≤)11M25 N整理得π=4·M#include#include#includedoublecalPI(intm){doublex,y;for(intn=0,i=0;iintweishu(intx){inti,c=0;for(i=0;x>0;i++){x/=10;c++;}returnc;}26 voidmain(){inta;printf("输入一个整数:");scanf("%d",&a);printf("共有%d位。n",weishu(a));}7.#includeintzuidagys(intx,inty)//最大公约数{for(inti=x>y?y:x;i>=1;i--)if(x%i==0&&y%i==0)break;returni;}intzuixiaogbs(intx,inty)//最小公倍数{for(inti=1;i<=x*y;i++)if(i%x==0&&i%y==0)break;returni;}voidmain(){inta,b;printf("输入两个整数:");scanf("%d,%d",&a,&b);printf("%d,%d的最大公约数为:%dn",a,b,zuidagys(a,b));printf("%d,%d的最小公倍数为:%dn",a,b,zuixiaogbs(a,b));}8.说明:下面的程序,需要输入查询范围的左右边界a,b,然后程序会验证属于(a,b)区间内的所有偶数都是两个素数之和,并且会打印出这些素数。#includeintsushu(intx){for(inti=2;iintcomb(intm,intn){if(m==0||n==0||m<=n)return1;if(n==1)returnm;elsereturncomb(m-1,n)+comb(m-1,n-1);}voidmain(){inta,b;printf("输入组合数:(两个整数)");scanf("%d%d",&a,&b);printf("%dn",comb(a,b));}10.#includeintzuidagys(intm,intn)//递归{if(my?y:x;i>=1;i--)if(x%i==0&&y%i==0)break;returni;}或intzuidagys(intm,intn)//非递归{if(m0){inttmp=m%n;m=n;n=tmp;}returnm;}11.intexponent(intn,intk)//递归{if(k==1)returnn;if(k==0)return1;elsereturnn*exponent(n,k-1);}29 intexponent2(intn,intk)//非递归{for(intresult=1,i=1;i<=k;i++)result*=n;returnresult;}voidprintExponent()//打印{for(inti=0;i<=9;i++){printf("%8d",exponent2(3,i));if((i+1)%3==0)printf("n");}}12.#include#include#includevoidmain(){inti,j,k=0;srand(time(NULL));i=rand()%100+1;//printf("%dn",i);printf("请你猜数:");scanf("%d",&j);while(1){k++;if(j==i){printf("你猜对了!");break;}if(j#definepi3.14voidmain(){floatr;printf("输入圆的半径:");scanf("%f",&r);printf("圆的面积为%fn",pi*r*r);}2.#include#definevolumn(r,h)3.14*r*r*hvoidmain(){floatr,h;printf("输入圆柱底面积半径:");scanf("%f",&r);printf("输入圆柱的高:");scanf("%f",&h);printf("圆柱的体积为:%f",volumn(r,h));}3.#include#defineMAX(a,b,c)a>b?(a>c?a:c):(b>c?b:c)voidmain(){floata,b,c;printf("输入三个数:");scanf("%f%f%f",&a,&b,&c);31 printf("最大值为%f",MAX(a,b,c));}4.#include#defineYEAR(a)(a%4==0&&a%100!=0)||(a%400==0)voidmain(){intyear;printf("输入年份:");scanf("%d",&year);if(YEAR(year))printf("%d是闰年n",year);elseprintf("%d不是闰年n",year);}第八章一、选择题1.C2.B3.D4.C5.A6.C7.A8.B9.C10.C11.A12.A二、编程题1.#includevoidmain(){inti,a[5]={2,3,45,12,5},t;printf("转换前:");for(i=0;i<5;i++)printf("%dt",a[i]);for(i=0;i<5/2;i++){t=a[i];a[i]=a[5-i-1];a[5-i-1]=t;}printf("n转换后:");for(i=0;i<5;i++)printf("%dt",a[i]);32 }2.#includevoidmain(){inta[10],x,i;printf("输入一个整数:");scanf("%d",&x);for(i=0;x>0;i++){a[i]=x%10;x/=10;}for(i--;i>=0;i--)printf("%d,",a[i]);printf("b");}3.#includevoidmain(){intx,i,j,a[10],wei,p;for(i=1;i<1000;i++){p=1;x=i*i;for(j=0;x>0;j++){a[j]=x%10;x/=10;}wei=j;for(j--;j>=0;j--)if(a[j]!=a[wei-1-j]){p=0;break;}if(p==1)printf("%dt",i);}}4.#include#includevoidselectsort(inta[],intn){inti,j,k,num;for(i=0;i#includevoidmain(){chara[100];34 puts("输入文本:");gets(a);for(unsignedinti=0;i="A")a[i]+=3;elseif(a[i]<="z"&&a[i]>="a")a[i]-=3;}puts("加密后:");puts(a);}6.#include#includevoidmain(){charx,a[100],c=0;puts("输入一串字符:");gets(a);puts("查哪个字符个数?");x=getchar();for(unsignedinti=0;ivoidmain(){charc[200]={0};inti=0,NUM=0;printf("请输入一段英文:n");do{i++;scanf("%c",&c[i]);if(""==c[i]&&(""==c[i-1]||""==c[i-1])){35 NUM++;c[i]="";//删除空格}}while(10!=c[i]);printf("之前长度为%d,之后长度为%dn",i,i-NUM);}8.#includevoidmain(){charstr1[201];charstr2[101];printf("请输入两个字符串(长度不超过100)n");scanf("%s%s",str1,str2);inti,j;for(i=0;str1[i]!="";i++){}for(j=0;str2[j]!="";j++){str1[i++]=str2[j];}str1[i]="";printf("复制操作之后str1为:n");printf("%s",str1);}9.#includevoidmain(){inta[5][5];for(inti=0;i<5;i++)scanf("%d%d%d%d%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);ints=0;for(inti=0;i<5;i++)s+=a[i][i]+a[i][4-i];printf("s:%dn",s);}10.#include#include#include36 intarray[100][100];voidmain(){while(1){srand((unsigned)time(NULL));intx,y;printf("输入二维数组的长宽(不超过100)n");scanf("%d%d",&x,&y);//intarray[4][4]={{11,1,23,45},{40,56,98,91},{23,21,12,40},{45,67,23,90}};inti,number=0,sign,j,m,n;for(i=0;iarray[j][n])sign=0;}37 if(sign==1){number++;printf("第%d个鞍点是%d,位置:%d%dn",number,array[m][n],m+1,n+1);}}if(number==0)printf("没有鞍点n");}}11.#include#includevoidmain(){chara[100][100],b[100],c[100],d[100];intn,i,j;scanf("%d",&n);getchar();for(i=0;i0){strcpy(b,c);strcpy(c,d);strcpy(d,b);}strcpy(a[i],c);strcpy(a[j],d);}}for(i=0;i#includevoidmain(){structPoint{floatx;floaty;}a,b;printf("输入点a的横坐标:n");scanf("%f",&a.x);printf("输入点a的纵坐标:n");scanf("%f",&a.y);printf("输入点b的横坐标:n");scanf("%f",&b.x);printf("输入点b的纵坐标:n");scanf("%f",&b.y);printf("a、b两点之间的距离为:%fn",sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)));}3.#include#include39 usingnamespacestd;#defineDAY_OF_YEAR365//一年的天数,当为闰年时需要另外操作//日期结构体typedefstructdate{intyear;intmonth;intday;intday_of_year;//该日为该年的第几天}DATE,*DATE_P;//函数声明boolcompear(DATE_Pmax,DATE_Pmin);inttitoal(DATE_Pdate);boolleap_year(constintyear);intfuntion(DATE_Pmax,DATE_Pmin);//主函数voidmain(){DATEdate_1,date_2;//输入的两个日期DATE_Pmax,min;//max指向大日期,min指向小日期intresult;//数据输入printf("请输入日期1的数据项,年月日间用空格阁开:n");scanf("%d%d%d",&date_1.year,&date_1.month,&date_1.day);printf("请输入日期2的数据项,年月日间用空格阁开:n");scanf("%d%d%d",&date_2.year,&date_2.month,&date_2.day);//数据处理if(!compear(max=&date_1,min=&date_2))//比较日期大小,不需要交换result=funtion(max,min);else//需要交换result=funtion(min,max);//结果printf("两日期间相差的天数为:%dn",result);}40 //比较两日期的大小boolcompear(DATE_Pmax,DATE_Pmin){//max的日期小于min的日期,日期对调if((max->yearyear))//max的年份小于minreturn1;elseif((max->year==min->year))//max和min的年份相同{if((max->monthmonth))//max的月份小于minreturn1;elseif((max->month==min->month))//max和min的月份相同if((max->dayday))//max的日小于minreturn1;}//其他情况满足max的日期大于(等于)min,日期保持不变return0;}//计算相差天数intfuntion(DATE_Pmax,DATE_Pmin){//年份相同,相差天数为大日期减小日期if(max->year==min->year){//计算大日期max->day_of_year=titoal(max);//计算日期函数if(leap_year(max->year))//如果为闰年if((max->month==2&&max->day==29)||max->month>2)max->day_of_year++;//计算小日期min->day_of_year=titoal(min);if(leap_year(min->year))//如果为闰年if((min->month==2&&min->day==29)||min->month>2)min->day_of_year++;//返回相差天数returnmax->day_of_year-min->day_of_year;}41 //年份不同,相差天数为max、min剩余天数和之间年的天数总和intmax_year,min_year,other_year=0;//计算大日期max->day_of_year=titoal(max);if(leap_year(max->year))//如果为闰年if((max->month==2&&max->day==29)||max->month>2)max->day_of_year++;max_year=max->day_of_year;//计算小日期min->day_of_year=titoal(min);if(leap_year(min->year))//如果为闰年if((min->month==2&&min->day==29)||min->month>2)min->day_of_year++;min_year=DAY_OF_YEAR-min->day_of_year;//剩余的天数if(leap_year(min->year))//如果为闰年天数加1min_year++;//计算之间的日期intyear;for(year=min->year+1;yearyear;year++)other_year+=DAY_OF_YEAR+leap_year(year);//一年的天数,并考虑是否为闰年//返回总天数returnmax_year+min_year+other_year;}//计算某日该年的第几天,闰年也按平年处理inttitoal(DATE_Pdate){intresult=0;//最后结果inti;//标记月份for(i=1;imonth;i++)//计算以过月份的天数{switch(i){case1:case3:case5:case7:42 case8:case10:result+=31;break;//大月31天,注:12月不会出现,所以忽略不写case4:case6:case9:case11:result+=30;break;//小月31天default:result+=28;//2月28天}}returnresult+=date->day;//加上本月天数既为最后结果}//判断某年是否为闰年,若是返回1,否则返回0boolleap_year(constintyear){if((!(year%4)&&year%100)||!(year%400))return1;return0;}4./*设复数为a+bi和c+di,那么,和为:(a+c)+(b+d)i,乘积为:(ac-bd)+(ad+bc)i。*/#includestructcom{intreal;intim;};voidmain(){structcoma,b,c;structcomcmult(structcomcreal,structcomcim);inti,j;printf("输入两个复数的实部和虚部:");scanf("%d%d%d%d",&a.real,&a.im,&b.real,&b.im);c=cmult(a,b);printf("乘积为:%d+%di",c.real,c.im);}43 structcomcmult(structcomcreal,structcomcim)/*求乘积的函数*/{structcoma;a.real=creal.real*cim.real-creal.im*cim.im;a.im=creal.real*cim.im+creal.im*cim.real;return(a);}5.#include#defineN2voidmain(){structstudent{intnum;charname[10];charsex[10];intscore[5];intsum;floataverage;};structstudentstu[N],s;inti,j;for(i=0;i#includevoidmain(){enumColor{Red,Yellow,White};enumColori,j;for(i=Red;i<=White;i=(Color)(i+1)){for(j=i;j<=White;j=(Color)(j+1)){chars1[3],s2[3];switch(i){case0:strcpy(s1,"红");break;case1:strcpy(s1,"黄");break;case2:strcpy(s1,"白");break;}switch(j){case0:strcpy(s2,"红");break;case1:strcpy(s2,"黄");break;case2:strcpy(s2,"白");break;}printf("%s%sn",s1,s2);}}}45 第十章一、选择题1.C2.B3.A4.C5.C6.A7.B8.C9.C10.C11.B12.C13.B14.C15.A16.C17.A二、编程题1.#include#include#definestr_count3#definestr_length100voidmain(){chara[str_count][str_length],*p;printf("请输入3个字符串:");for(inti=0;i#definepi3.1415926voidmain(){doubler;printf("请输入半径:");scanf("%lf",&r);doublec,s;voidcircle(doubler,double*,double*);circle(r,&c,&s);printf("圆的周长和面积分别为:%lf,%lfn",c,s);}voidcircle(doubler,double*c,double*s)46 {*c=2*pi*r;*s=pi*r*r;}3.#include#include#definestr_length100#definestr_count3voidintmain(){chara[str_count][str_length];printf("请输入三个字符串:n");for(inti=0;i#includevoidmain(){char*s="test";char*o;char*str_copy_self(char*s);o=str_copy_self(s);printf("%s",o);}char*str_copy_self(char*s)47 {intstr_length=strlen(s);char*o=(char*)malloc((str_length+1)*sizeof(char));for(inti=0;ivoidmain(){doublearr[]={1,2,3,4,5,6,7,8,9,10};doubleave(doublearr[],intarr_len);printf("%lf",ave(arr,10));}doubleave(doublearr[],intarr_len){inti;doubleres=0;for(i=0;i#includevoidmain(){charstr[]="abcde";voidstr_pruning(char*str,intbegin_pos,intpruning_count);str_pruning(str,4,5);printf("%s",str);}voidstr_pruning(char*str,intbegin_pos,intpruning_count){intstr_len=strlen(str);48 if(begin_pos>=str_len)str[0]="";elseif((begin_pos-1+pruning_count)>=str_len){str[begin_pos-1]="";}else{inti=0;while(1){str[begin_pos+i-1]=str[begin_pos+pruning_count+i-1];if(str[begin_pos+pruning_count+i-1]=="")break;i++;}}}7.#include#includevoidmain(){charstr[]="teacher";voidchar_punching(char*str,charl);char_punching(str,"e");printf("%s",str);}voidchar_punching(char*str,charl){intc=0;intstr_len=strlen(str);for(inti=0;ivoidmain()49 {inta[3][3]={{1,2,333},{4,15,6},{7,8,9}};intx=3,y=3,i,j;intpx=0,py=0;int*p,*p_max;p_max=a[0];for(i=0;ivoidmain(){FILE*fp;charc;ints=0;fp=fopen("a1.c","r");50 while(!feof(fp)){c=fgetc(fp);if(c==10)s++;//if(c=="n")s++;putc(c,stdout);}fclose(fp);printf("n");printf("该程序共%d行n",s);}2.#includevoidmain(){FILE*fp;charc[100];ints=0;fp=fopen("a1.c","r");while(!feof(fp)){fgets(c,100,fp);s++;printf("%d",s);puts(c);}fclose(fp);printf("n");}51'