您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > C语言程序设计教程北京理工大学-部分课后习题答案
CP5/*4、编写程序输入一位学生的生日(年:y0、月:m0、日:d0);并输入当前的日期(年:y1、月:m1、日:d1);输出改学生的实足年龄。(P116)*/main(){inty0,m0,d0,y1,m1,d1,age;printf(Pleaseinputcurrentday:\n);scanf(%d,%d,%d,&y1,&m1,&d1);printf(Pleaseinputbirthday:\n);scanf(%d,%d,%d,&y0,&m0,&d0);age=y1-y0;if(m1m0)age--;elseif(m1==m0&&d1d0)age--;printf(age=%d\n,age);}/*7、某商店位促销推出如下让利销售方案,其中M位购买金额,n为让利百分比。M100,N=0;100=M200,N=1.5%200=M300,N=2.5%300=M400,N=3.5%400=M500,N=4.5%500=M600,N=5.5%M600,N=6%;编写程序,对输入的购买金额,输出顾客购买金额、实际支出金额和返还金额。*/main(){intm,k;floatn;printf(Pleaseinput购买金额m:\n);scanf(%d,&m);k=m/100;switch(k){case0:n=0;break;case1:n=0.015;break;case2:n=0.025;break;case3:n=0.035;break;case4:n=0.045;break;case5:n=0.055;break;default:n=0.06;break;}printf(%5d,%7.2f,%7.2f,m,m-n*m,m*n);/*输出购买金额、实际支付金额和返还金额*/}===========================================CP65./*计算6个学生5门课成绩,每人的平均成绩。*/#includestdio.hvoidmain(){inti,j,xuesheng;doublefen,mean,zongfen;for(i=1;i=6;i++){zongfen=0;for(j=1;j=5;j++){scanf(%lf,&fen);zongfen=zongfen+fen;}mean=zongfen/5.0;printf(xuesheng%d=%lf\n,i,mean);}}//8.所有大于1010的四位偶数,该偶数各位数字两两不相同。#includestdio.hvoidmain(){intt,a,b,c,d;for(t=1010;t9999;t++){if(t%2==0){a=(t/1000)%10;b=(t/100)%10;c=(t/10)%10;d=t%10;if((a!=b)&&(a!=c)&&(a!=d)&&(b!=c)&&(b!=d)&&(c!=d))printf(%d,,t);}}}===========================================cp8/*1、编写一个判断一个整数是否是素数的函数,使用该函数编写验证1000以内的哥德巴赫猜想是成立。(每个不小于6的偶数都是两个素数之和)*/#includestdio.hmain(){inti,j;for(i=6;i=1000;i+=2)for(j=3;j=i/2;j+=2)if(flag(j)&&flag(i-j)){printf(%d=%d+%d\n,i,j,i-j);break;}}flag(n)/*函数flag的功能是判断整数n是否为素数*/intn;{inti;if(n%2==0)return(0);for(i=3;in/2;i++)if(n%i==0)return(0);return(1);}/*3、编写一个求水仙花数的函数,求100到999之间的全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。例如:153就是一个水仙花数:153=1*1*1+5*5*5+3*3*3参考程序:*/main(){inti=0,j,k,a,b,c,s;for(a=1;a=9;a++)for(b=0;b=9;b++)for(c=0;c=9;c++){j=100*a+10*b+c;if(ex(j))printf(%d=%d*%d*%d+%d*%d*%d+%d*%d*%d\n,j,a,a,a,b,b,b,c,c,c);}}intex(intm){intsum=0,z,k;z=m;while(z0){k=z%10;sum+=k*k*k;z/=10;}return(m==sum);}/*4、请编写一个函数,输出整数m的全部素数因子。例如:m=120时,因子为:2,2,2,3,5参考答案:*/main(){intm;printf(\nEnterm=);scanf(%d,&m);primedec(m);}primedec(m)intm;{intk=2;while(k=m)if(m%k==0){printf(%d,,k);m=m/k;}elsek++;}==========================================cp9/*1、编写一函数,其功能是交换两个变量x、y的值。编程序实现对数组a[100],b[100]调用此函数,交换a、b中具有相同下标的数组元素的值,且输出交换后的a、b数组。/*p279_1.c*///thisisawrongprogram#includestdlib.hvoidswap(int*pa,int*pb){intt;t=*pa;*pa=*pb;*pb=t;}main(){inta[100],b[100],i;for(i=0;i100;i++)/*产生数组a和b*/{a[i]=random(100);b[i]=random(100);}printf(beforeswapA:\n);/*输出交换前数组a*/for(i=0;i100;i++)printf(%3d,a[i]);printf(\n);printf(beforeswapB:\n);/*输出交换前数组b*/for(i=0;i100;i++)printf(%3d,b[i]);printf(\n);for(i=0;i100;i++)/*a、b数组元素交换*/swap(&a[i],&b[i]);printf(afterswapA:\n);/*输出交换后数组a*/for(i=0;i100;i++)printf(%3d,a[i]);printf(\n);printf(afterswapB:\n);/*输出交换后数组b*/for(i=0;i100;i++)printf(%3d,b[i]);printf(\n);}//thisisawrongprogram#includestdio.hvoidswap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}voidmain(){inta[100],b[100],i;i=0;printf(enterytoresetthearrayorothertoquitreset:);if(getch()=='y'){for(i=0;i100;i++){printf(a[%d]:,i);scanf(%d,a+i);}for(i=0;i100;i++){printf(b[%d]:,i);scanf(%d,a+i);}}printf(a\tb\n);for(i=0;i100;i++)printf(%d\t%d\n,a[i],b[i]);while(i100){swap(a+i,b+i);i++;}printf(\n\na\tb\n);for(i=0;i100;i++)printf(%d\t%d\n,a[i],b[i]);}//7、将空格分开的字符串称为单词。输入多行字符串,直到输入stop单词时才停止。最后输出单词的数量。//解1:#includestring.hmain(){chars[200];longn=0;inti,m;gets(s);while(strcmp(stop,s)!=0){m=strlen(s);for(i=0;im;i++){if(s[i]!=''&&s[i+1]=='')n++;if(s[i]!=''&&s[i+1]=='\0')n++;if(s[i]==''&&s[i+1]=='')continue;if(s[i]==''&&s[i+1]!='')continue;}gets(s);}printf(n=%ld\n,n);}//解2.#includestring.hmain(){chars[80],*p=s;intn=0;printf(Inputastring:\n);gets(s);while(strcmp(s,stop)!=0){p=s;while(*p!='\0'){if(*p==32||*p=='\0')n++;p++;}if(strlen(s)0)n++;printf(Inputastring:\n);gets(s);}printf(wordsnumber:%d\n,n);}/*8、将输入的两行字符串连接后,将串中的空格全部移到串首后输出。/*P280_8A*/#includestring.hmain(){chars1[80],s2[40],*p1=s1,*p2=s2;printf(Input2string:\n);gets(s1);gets(s2);while(*p1!='\0')p1++;/*指针指向s1的末尾*/while(*p2!='\0')/*连接s2*/*p1++=*p2++;*p1='\0';while(p1!=s1)/*将空格移到字符串前面*/{if(*p1!=32){p1--;continue;}else{p2=p1;while(p2!=s1)/*将空格之前的所有字符向后移动一个字符位置*/{*p2=*(p2-1);p2--;}*p2='';p1--;}}puts(s1);}/*11、设一个以符号'.'结束的英文句子长度小于80字节。请编写程序读入改句子,并检查其是否为回文(即正读和反读都是一样的,不考虑空格和标点符号)。例如:读入:madami'madam.输出:yes读入:abcdba输出:no/*P280_11.c*/#includestring.hmain(){chara[20],*ps,*pe;intn;gets(a);n=strlen(a);ps=a;pe=ps+n;while(ps=pe){if(*ps'A'||*ps'Z'&&*ps'a'||*ps'z')ps++;if(*pe'A'||*pe'Z'&&*pe'a'||*pe'z')pe--;if(*ps!=*pe)break;ps++;pe--;}if(pspe)printf(%s:yes!\n,a);elseprintf(%s:No!\n,a);}===========================================cp10//1.错的#includeiostream.hstructstd//定义学生结构体,包含学好number,成绩score,名次mc{intnumber;intscore;intmc;};#defineN100intmain(){inti,j,max,num;staticintt=1;structstdstduent[N],temp;cinmax;for(i=0;imax;i++){cinstduent[i].number;cinstduent[i].score;}for(i=0;imax-1;i++)//冒泡法排序,从高分到低分{for(j=0;jmax-i;j++)if(stduent[j].scorestduent[j+1].score){temp=std
本文标题:C语言程序设计教程北京理工大学-部分课后习题答案
链接地址:https://www.777doc.com/doc-2908202 .html