您好,欢迎访问三七文档
1.已知三角形的三边长为a,b,c,计算三角形面积的公式为:area=sqrt(s(s-a)(s-b)(s-c)),其中s=(a+b+c)/2。试编程从键盘输入a,b,c的值(假设a,b,c的值可以保证其构成一个三角形),计算并输出三角形的面积。**输入格式要求:%f,%f,%f提示信息:Inputa,b,c:**输出格式要求:area=%.2f\n程序运行示例如下:Inputa,b,c:3,4,5area=6.00答案:#includestdio.h#includemath.hintmain(void){floata,b,c,s,area;printf(Inputa,b,c:);scanf(%f,%f,%f,&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(area=%.2f\n,area);return0;}-----------------12.从键盘任意输入一个4位整数,编程计算并输出它的逆序数.例如:输入1234,分离出千位1、百位2、十位3和个位4,然后计算4*1000+3*100+2*10+1=4321,并输出4321。**要求输入提示信息为:无**要求输入格式为:%d**要求输出格式为:%d程序运行示例如下:1234此处为输入4321此处为输出答案:#includestdio.hintmain(void){inta,b,c,d,e;scanf(%d,&a);b=a/1000;c=a%1000/100;d=a%100/10;e=a%10;a=e*1000+d*100+c*10+b;printf(%d,a);return0;}--------------23.有关输入输出问题。输入为:12a↙b↙运行结果为:1,2,a,b,123.300000,65535请改正程序中的错误,使它能得出正确的结果。#includestdio.hmain(){intb;unsignedshorta=65535;shortk=a;charc,d;intf,g;b=(1234.0-1)/10;scanf(%c,&c);scanf(%c,&d);scanf(%d,&f);scanf(%d,&g);printf(%c,%c,%c,%c,%f,%d,c,d,f,g,b,k);}答案:#includestdio.hmain(){doubleb;inta=65535;charc,d;intf,g;b=(1234.0-1)/10;scanf(%c,&c);scanf(%c,&d);scanf(%c\t,&f);scanf(%c,&g);printf(%c,%c,%c,%c,%f,%d,c,d,f,g,b,a);}--------34.输入一行字符,统计其中的英文字符、数字字符、空格字符,以及其他字符的个数。请找出以下程序的错误,并改正之。#includestdio.h#includestring.h#defineARR_SIZE=80;main(){charstr[ARR_SIZE];intlen,i;intletter=0,digit=0,space=0,other=0;printf(请输入一个字符串:);gets(str);len=strlen(str);for(i=0;ilen;i++){if(a=str[i]=z||A=str[i]=Z){letter++;}elseif(0=str[i]=9){digit++;}elseif(str[i]=''){space++;}elseother++;}printf(英文字符数:%d\n,letter);printf(数字字符数:%d\n,digit);printf(空格数:%d\n,space);printf(其他字符数:%d\n,other);}答案:#includestdio.h#includestring.h#defineARR_SIZE80main(){charstr[ARR_SIZE];intlen,i;intletter=0,digit=0,space=0,other=0;printf(请输入一个字符串:);gets(str);len=strlen(str);for(i=0;ilen;i++){if('a'=str[i]&&str[i]='z'||'A'=str[i]&&str[i]='Z'){letter++;}elseif('0'=str[i]&&str[i]='9'){digit++;}elseif(str[i]==''){space++;}elseother++;}printf(英文字符数:%d\n,letter);printf(数字字符数:%d\n,digit);printf(空格数:%d\n,space);printf(其他字符数:%d\n,other);}--------------------45.对输入的一个数判断是否是素数。所谓素数是指这个数只能被1和自身整除。要求在主函数输入一个数,调用函数Fun()判断该数是否是素数。打印信息在主函数中进行。例如:从键盘输入5,5是素数则打印如下信息:5isaprimenumber。又如:从键盘输入4,4不是素数则打印如下信息:4isnotaprimenumber。负数、0和1均不是素数。对输入的数据要考虑数据的合法性,不满足条件的数要重新输入直到满足条件为止。不能使用全局变量,不按给定的函数原型编写程序不给分。Fun()函数原型为:intFun(intm);**输入数据提示信息:Pleaseinputanumber:\n注:该提示信息请放在循环体外**输入数据格式为:%d**输出格式要求:若是素数输出数据格式为:%disaprimenumber\n若不是素数输出数据格式为:%disnotaprimenumber\n不完整答案:#includestdio.hintFun(inta){inti;if(a1){for(i=2;ia;i++){if(a%i==0)return0;elsecontinue;}return1;}elsereturn0;}main(){intb,c;printf(Pleaseinputanumber:\n);scanf(%d,&b);c=Fun(b);if(0==c)printf(%disnotaprimenumber\n,b);elseprintf(%disaprimenumber\n,b);}参考答案:#includestdio.hintFun(intm);intmain(){intm,flag;printf(Pleaseinputanumber:\n);do{scanf(%d,&m);//1}while(m2);//e1flag=Fun(m);//3if(flag)//1printf(%disaprimenumber\n,m);elseprintf(%disnotaprimenumber\n,m);//1return0;}intFun(intm)//2{inti,flag=1;//1for(i=2;im;i++)//1{if(m%i==0)//1{flag=0;//1break;}}returnflag;//2}----------------------------------------------------------56.求1898现將不超过2000的所有素数从小到大排成第一行,第二行上的每个数都等于它“右肩”上的素数与“左肩”上的素数之差。请编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?假如存在的话,又有几种这样的情况?**输入格式要求:提示信息:Therearefollwingprimesinfirstrow:\n**输出格式要求:(%d).%3d,......,%d\n程序运行示例如下:Therearefollwingprimesinfirstrow:(1).101,......,1999(2).89,......,1987(3).53,......,1951(4).3,......,1901答案:#includestdio.h#defineN330inta[N];intmain(){intc=0,b=0,d=1;inti=0,j=0,k=0;for(i=3;i=2000;i++){for(j=2;ji;j++){if(i%j==0)break;elsecontinue;}if(j==i){a[k]=i;k++;}elsecontinue;}printf(Therearefollwingprimesinfirstrow:\n);for(c=329;c=0;c--)for(b=c+1;cb;b++)if(b330){if((a[b]-a[c])==1898){printf((%d).%3d,......,%d\n,d,a[c],a[b]);d++;}elsecontinue;}elsebreak;}7.从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出Itisaprimenumber。例如,用户输入90时,程序输出90=2*3*3*5;用户输入17时,程序输出Itisaprimenumber。输入提示信息:Inputm:输入格式:%d输出格式:是素数时输出Itisaprimenumber\n否则输出用%d=,%d*运行示例1:Inputm:90↙90=2*3*3*5运行示例2:Inputm:13↙Itisaprimenumber答案:#includestdio.h#includemath.hintIsPrime(intx);voidOutputPrimeFactor(intx);intmain(){intm;printf(Inputm:);scanf(%d,&m);if(IsPrime(m)){printf(Itisaprimenumber\n);}else{printf(%d=,m);OutputPrimeFactor(m);}return0;}intIsPrime(intx){inti,flag=1;intsquareRoot=sqrt(x);if(x=1){flag=0;}for(i=2;i=squareRoot&&flag;i++){if(x%i==0){flag=0;}}returnflag;}voidOutputPrimeFactor(intx){inti;for(i=2;ix;i++){if(x%i==0){printf(%d*,i);OutputPrimeFactor(x/i);return;}}printf(%d,x);}---------------------------78.将任一整数转换为二进制形式。**输入格式要求:%d提示信息:Inputnumber:**输出格式要求:numberofdecimalform:%d\nit\'sbinaryform:程序运行示例如下:Inputnumber:876numberofdecimalform:876it'sbinaryform:00000000000000000000001101101100答案:#includestdio.h#includestdlib.hintmain(){inta;charb[32];printf(Inputnumber:);scanf(%d,&a);printf(numberofdecimalform:%d\n,a);printf(it\'sbinaryform:);printf(%s\n,itoa(a,b,2));}---------------------------89.求自然数n最近的素数k,kn。***输入提示信息**:Inputn:***输入数据格式**:%d***输出数据格式**:%d示
本文标题:C语言练习题答案
链接地址:https://www.777doc.com/doc-5076551 .html