C语言练习试题答案解析_第1页
C语言练习试题答案解析_第2页
C语言练习试题答案解析_第3页
C语言练习试题答案解析_第4页
C语言练习试题答案解析_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

107/1071.已知三角形的三边长为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答案:#include<stdio.h>#include<math.h>intmain(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此处为输出答案:#include<stdio.h>intmain(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请改正程序中的错误,使它能得出正确的结果。#include<stdio.h>main(){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);}答案:#include<stdio.h>main(){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.输入一行字符,统计其中的英文字符、数字字符、空格字符,以与其他字符的个数。请找出以下程序的错误,并改正之。#include<stdio.h>#include<string.h>

#defineARR_SIZE=80;

main(){

charstr[ARR_SIZE];

int

len,i;

int

letter=0,digit=0,space=0,other=0;

printf("请输入一个字符串:");

gets(str);

len=strlen(str);

for(i=0;i<len;i++)

{

if(a=<str[i]<=z||A=<str[i]<=Z)

{

letter++;

}

elseif(0=<str[i]<=9)

{

digit++;

}

elseif(str[i]='')

{

space++;

}

else

other++;

}

printf("英文字符数:%d\n",letter);

printf("数字字符数:%d\n",digit);

printf("空格数:%d\n",space);

printf("其他字符数:%d\n",other);}答案:#include<stdio.h>#include<string.h>

#defineARR_SIZE

80

main(){

charstr[ARR_SIZE];

int

len,i;

int

letter=0,digit=0,space=0,other=0;

printf("请输入一个字符串:");

gets(str);

len=strlen(str);

for(i=0;i<len;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++;

}

else

other++;

}

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"不完整答案:#include<stdio.h>intFun(inta){

inti;

if(a>1)

{

for(i=2;i<a;i++)

{

if(a%i==0)

return0;

else

continue;

}

return1;

}

else

return0;

}main(){

intb,c;

printf("Pleaseinputanumber:\n");

scanf("%d",&b);

c=Fun(b);

if(0==c)

printf("%disnotaprimenumber\n",b);

else

printf("%disaprimenumber\n",b);

}参考答案:#include"stdio.h"intFun(intm);intmain(){

intm,flag;

printf("Pleaseinputanumber:\n");

do

{

scanf("%d",&m);//1

}

while(m<2);//e1

flag=Fun(m);//3

if(flag)//1

printf("%disaprimenumber\n",m);

else

printf("%disnotaprimenumber\n",m);//1

return0;}

intFun(intm)//2{

inti,flag=1;//1

for(i=2;i<m;i++)//1

{

if(m%i==0)//1

{

flag=0;//1

break;

}

}

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答案:#include<stdio.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;j<i;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;c<b;b++)if(b<330) {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答案:#include<stdio.h>#include<math.h>intIsPrime(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;i<x;i++){if(x%i==0){printf("%d*",i);OutputPrimeFactor(x/i);return;}}printf("%d",x);}78.将任一整数转换为二进制形式。**输入格式要求:"%d"提示信息:"Inputnumber:"**输出格式要求:"numberofdecimalform:%d\n""it\'sbinaryform:"程序运行示例如下:Inputnumber:876numberofdecimalform:876it'sbinaryform:1100答案:#include<stdio.h>#include<stdlib.h>intmain(){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,k>n。***输入提示信息**:"Inputn:"***输入数据格式**:"%d"***输出数据格式**:"%d"示例输入:257输出:Pleaseinputn:263答案:#include<stdio.h>intmain(){intn,i=1,k;printf("Pleaseinputn:");scanf("%d",&n);for(k=n+1;i;k++){for(i=2;i<k;i++)if(k%i==0)break;elsecontinue;if(i==k){printf("%d",k);i=0;break;}}}910.如果一个正整数m的所有小于m的不同因子(包括1)加起来正好等于m本身,那么就被称它为完全数。它是指这样的一些特殊的自然数,它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。注意:1没有真因子,所以不是完全数。例如,6就是一个完全数,是因为6=1+2+3。请编写一个判断完全数的函数IsPerfect(),然后判断从键盘输入的整数是否是完全数。要求:按如下原型编写判断完全数的函数,若函数返回0,则代表不是完全数,若返回1,则代表是完全数。intIsPerfect(intx);**要求输入提示信息为:"Inputm:\n"**要求输入格式为:"%d"**要求输出格式为"%disaperfectnumber\n""%disnotaperfectnumber\n"注:不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程,主函数不能使用intmain和return0。答案:#include<stdio.h>intIsPerfect(intx);intmain(){intm;printf("Inputm:\n");scanf("%d",&m);if(IsPerfect(m))printf("%disaperfectnumber\n",m);elseprintf("%disnotaperfectnumber\n",m);}intIsPerfect(intx){inti=1,b=0;for(i=1;i<x;i++)if(x%i==0){b=b+i;continue;}elsecontinue;if(b==x)return1;elsereturn0;}1011.用函数编程计算两整数的最大值,在主函数中调用该函数计算并输出从键盘任意输入的两整数的最大值。**输入格式要求:"%d,%d"提示信息:"Inputa,b:"**输出格式要求:"max=%d\n"程序运行示例如下:Inputa,b:5,8max=8答案:#include<stdio.h>intmax(inta,intb){if(a>=b)returna;elsereturnb;}main(){inta=0,b=0;printf("Inputa,b:");scanf("%d,%d",&a,&b);printf("max=%d\n",max(a,b));}1112.利用求阶乘函数Fact(),编程计算并输出1!+2!+…+n!的值。**输入格式要求:"%u"提示信息:"Inputn(n>0):"**输出格式要求:"sum=%lu\n"答案:#include<stdio.h>intsum_s(inti);main(){unsignedintn=0;unsignedlongb=0;printf("Inputn(n>0):");scanf("%u",&n);for(b;n;n--){b=b+sum_s(n);}printf("sum=%lu\n",b);}intsum_s(inti){inta;for(a=1;i;i--){if(i>1)a=a*i;elsea=a*1;}returna;}1213.编程输出如下菜单界面(具体的输出则以下面提示中要求的输出格式为准):=======大学信息管理系统=======办公室管理财务管理教务管理图书管理科研管理设备管理人事管理后勤管理退出系统请您在上述功能中选择(0——8):提示:输出如下格式"=======大学信息管理系统=======\n""\n""1.办公室管理5.财务管理\n""2.教务管理6.图书管理\n""3.科研管理7.设备管理\n""4.人事管理8.后勤管理\n""0.退出系统\n""\n""请您在上述功能中选择(0——8):\n"答案:#include<stdio.h>main(){printf("=======大学信息管理系统=======\n");printf("\n");printf("1.办公室管理5.财务管理\n");printf("2.教务管理6.图书管理\n");printf("3.科研管理7.设备管理\n");printf("4.人事管理8.后勤管理\n");printf("0.退出系统\n");printf("\n");printf("请您在上述功能中选择(0——8):\n");}1314.利用静态变量计算n的阶乘。**输入格式要求:"%d"提示信息:"Inputn:"**输出格式要求:"%d!=%ld\n"程序运行示例如下:Inputn:101!=12!=23!=64!=245!=1206!=7207!=50408!=403209!=36288010!=3628800答案:#include<stdio.h>intsum_s(inti);main(){unsignedintn=0,b=1;printf("Inputn:");scanf("%d",&n);for(b=1;b<=n;b++){printf("%d!=%ld\n",b,sum_s(b));}}intsum_s(inti){inta;for(a=1;i;i--){if(i>1)a=a*i;elsea=a*1;}returna;}1415.写一个程序从键盘输入两个整数,然后显示输出第1个数除以第2个数的结果。例如,输入123和12,程序的输出结果格式如下:10Remainder=312)123提示:使用求余运算符获得余数,使用整数除法获得商。**输入格式要求:"%d%d"提示信息:"请输入两个整数:"**输出格式要求:"%13dRemainder=%d\n""\n""%5d)%5d"答案:#include<stdio.h>main(){inta,b,c,d;printf("请输入两个整数:");scanf("%d%d",&a,&b);c=a/b;d=a%b;printf("%13dRemainder=%d\n",c,d);printf("\n");printf("%5d)%5d",b,a);}1516.写一个程序,将接收的摄氏温度转换为对应的华氏温度。程序应显示如下的提示信息:Pleaseinputcels:然后输入一个十进制数并回车,然后程序以合适的消息形式输出转换后的华氏温度。程序使用如下的公式完成转换:摄氏温度=5.0*(华氏温度–32.0)/9.0**输入格式要求:"%lf"提示信息:"Pleaseinputcels:"**输出格式要求:"Thefahris:%.2f"答案:#include<stdio.h>main(){doublea,b;printf("Pleaseinputcels:");scanf("%lf",&a);b=(9.0*a)/5.0+32.0;printf("Thefahris:%.2f",b);}1617.写一个程序,将接收的华氏温度转换为对应的摄氏温度。程序应显示如下的提示信息:Pleaseinputfahr:然后输入一个十进制数并回车,然后程序以合适的消息形式输出转换后的华氏温度。程序使用如下的公式完成转换:摄氏温度=5.0*(华氏温度–32.0)/9.0**输入格式要求:"%lf"提示信息:"Pleaseinputfahr:"**输出格式要求:"Thecelsis:%.2f"答案:#include<stdio.h>main(){doublea,b;printf("Pleaseinputfahr:");scanf("%lf",&a);b=5.0*(a-32.0)/9.0;printf("Thecelsis:%.2f",b);}1718.编写一个程序,输入一个3位整数,要求逆序输出对应的数。例如:输入123,则输出321。**输入格式要求:"%d"提示信息:"Pleaseenterapositiveinteger:"**输出格式要求:"%d-->%d\n"程序运行示例如下:Pleaseenterapositiveinteger:345345-->543答案:#include<stdio.h>intmain(void){inta,b,c,d,e;printf("Pleaseenterapositiveinteger:");scanf("%d",&a);b=a/100;d=a%100/10;e=a%10;c=e*100+d*10+b;printf("%d-->%d",a,c);return0;}1819.计算两个数的平方和从键盘读入两个实数,编程计算并输出它们的平方和,要求使用数学函数pow(x,y)计算平方值,输出结果保留2位小数。提示:使用数学函数需要在程序中加入编译预处理命令#include<math.h>以下为程序的输出示例:Pleaseinputxandy:1.2,3.4↙result=13.00输入格式:"%f,%f"输出格式:输入提示信息:"Pleaseinputxandy:\n"输出格式:"result=%.2f\n"答案:#include<stdio.h>#include<math.h>main(){floatx,y,z;printf("Pleaseinputxandy:\n");scanf("%f,%f",&x,&y);z=pow(x,2)+pow(y,2);printf("result=%.2f\n",z);}————————————————————————————————1920.写一个程序从键盘输入两个整数,然后显示第1个整数占第二个整数的百分比,保留到小数点后1位。例如输入5和40,程序输出结果如下:5is12.5percentof40**输入格式要求:"%d%d"提示信息:"请输入两个整数:"**输出格式要求:"%dis%.1fpercentof%d"答案:#include<stdio.h>main(){inta,b;floatc;printf("请输入两个整数:");scanf("%d%d",&a,&b);c=(float)a/(float)b;c=c*100;printf("%dis%.1fpercentof%d",a,c,b);}2021.求三角形面积。输入三角形的三个边长,计算三角形的面积。设三角形的三个边长分别为a、b、c,为简单起见,我们认为输入的三个边长数据是正确的,可以组成一个三角形。**输入格式要求:"%f,%f,%f"提示信息:"Enter3floats:"**输出格式要求:"area=%.2f\n"程序运行示例如下:Enter3floats:2,2,3area=1.98答案:#include<stdio.h>#include<math.h>intmain(void){floata,b,c,s,area;printf("Enter3floats:");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;}2122.写一个程序计算长为11.5厘米,宽为2.5厘米,高为10厘米的盒子的体积和表面积。程序说明:采用直接赋值,不用输入。**输出格式要求"area=%.2f,volume=%.2f"答案:#include<stdio.h>main(){floata,b;a=(11.5*2.5+11.5*10+10*2.5)*2;b=11.5*2.5*10;printf("area=%.2f,volume=%.2f",a,b);}23.用递归方法计算整数n的阶乘n!。**输入格式要求:"%d"提示信息:"Inputn:""n<0,dataerror!\n"**输出格式要求:"%d!=%ld\n"程序运行示例如下:Inputn:55!=120答案;#include<stdio.h>intf(intn){if(n==1||n==0)return1;elsereturnn*f(n-1);}main(){intn;o:printf("Inputn:");scanf("%d",&n);while(n<0){printf("n<0,dataerror!\n");gotoo;}printf("%d!=%ld\n",n,f(n));}2324.用递归方法编程计算Fibonacci数列的前N项。其中fib(0)=0,fib(1)=1,fib(n)=fib(n-1)+fib(n-2)。**输入格式要求:"%d"提示信息:"Inputn:"**输出格式要求:"Fib(%d)=%d\n"程序运行示例如下:Inputn:10Fib(1)=1Fib(2)=1Fib(3)=2Fib(4)=3Fib(5)=5Fib(6)=8Fib(7)=13Fib(8)=21Fib(9)=34Fib(10)=55答案:#include<stdio.h>intFib(intn){if(n==0)return0;elseif(n==1)return1;elsereturnFib(n-1)+Fib(n-2);}main(){intn,a;printf("Inputn:");scanf("%d",&n);for(a=1;a<=n;a++){printf("Fib(%d)=%d\n",a,Fib(a));}}2425.利用求阶乘函数Fact(),编程计算并输出从1到n之间所有数的阶乘值。**输入格式要求:"%u"提示信息:"Inputn(n>0):"**输出格式要求:"%d!=%lu\n"程序运行示例如下:Inputn(n>0):101!=12!=23!=64!=245!=1206!=7207!=50408!=403209!=36288010!=3628800答案:#include<stdio.h>intsum_s(unsignedinti){unsignedinta;for(a=1;i;i--){if(i>1)a=a*i;elsea=a*1;}returna;}intFact(unsignedintn){unsignedinti;for(i=1;i<=n;i++){printf("%d!=%lu\n",i,sum_s(i));}}main(){unsignedinti;printf("Inputn(n>0):");scanf("%u",&i);Fact(i);}2526.爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,则最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。参考例6.15程序,编写计算这条阶梯共有多少阶的程序如下所示,其中存在一些语法和逻辑错误,请找出并改正之,然后上机运行程序并写出程序的运行结果。#include<stdio.h>main(){intx=1,find=0;while(!find);{if(x%2=1&&x%3=2&&x%5=4&&x%6=5&&x%7=0){printf("x=%d\n",x);find=1;x++;}}}答案:#include<stdio.h>main(){intx=1,find=0;while(!find){if(x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0){printf("x=%d\n",x);find=1;}x++;}}2627.从键盘任意输入一个正整数,编程判断它的奇偶性。要求输入变量定义为int类型且由用户从键盘输入。程序的运行示例1:Inputanintegernumber:4↙4isanevennumber程序的运行示例2:Inputanintegernumber:3↙3isanoddnumber输入格式:"%d"输出格式:输入信息提示:"Inputanintegernumber:\n"偶数输出格式:"%disanevennumber\n"奇数输出格式:"%disanoddnumber\n"答案:#include<stdio.h>main(){ intn,m; printf("Inputanintegernumber:\n"); scanf("%d",&n); m=n%2; if(m) printf("%disanoddnumber\n",n); else printf("%disanevennumber\n",n);}2728.用动态数组编程输入任意m个班学生(每班n个学生)的某门课的成绩,计算最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。其中,m和n的值由用户从键盘任意输入(不限定m和n的上限值)。输入提示信息:"Inputarraysizem,n:""Input%d*%darray:\n"输入格式:"%d,%d"输出提示信息和格式:"maxScore=%d,class=%d,number=%d\n"答案:#include<stdio.h>#include<stdlib.h>voidInputScore(int*p,intm,intn);intFindMax(int*p,intm,intn,int*pRow,int*pCol);intmain(){int*pScore,m,n,maxScore,row,col;printf("Inputarraysizem,n:");scanf("%d,%d",&m,&n);pScore=(int*)calloc(m*n,sizeof(int));/*申请动态存*/if(pScore==NULL){printf("Noenoughmemory!\n");exit(0);}InputScore(pScore,m,n);maxScore=FindMax(pScore,m,n,&row,&col);printf("maxScore=%d,class=%d,number=%d\n",maxScore,row+1,col+1);free(pScore);/*释放动态存*/return0;}/*函数功能:输入m行n列二维数组的值*/voidInputScore(int*p,intm,intn){inti,j;printf("Input%d*%darray:\n",m,n);for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&p[i*n+j]);}}}/*函数功能:计算任意m行n列二维数组中元素的最大值,并指出其所在行列下标值*/intFindMax(int*p,intm,intn,int*pRow,int*pCol){inti,j,max=p[0];*pRow=0;*pCol=0;for(i=0;i<m;i++){for(j=0;j<n;j++){if(p[i*n+j]>max){max=p[i*n+j];*pRow=i;/*记录行下标*/*pCol=j;/*记录列下标*/}}}returnmax;}2829.下面程序的功能是交换变量a和b中的值。找出其中的错误并改正之。#include<stdio.h>main(){inta,b,*p,*q,*t;p=&a;q=&b;printf("请输入变量a和b的值:");scanf("%d%d",&p,&q);*t=*p;*p=*q;*q=*t;printf("交换后a和b的值:a=%db=%d\n",a,b);}答案:#include<stdio.h>

main(){

int

a,b,*p,*q,*t;

p=&a;

q=&b;

printf("请输入变量a和b的值:");

scanf("%d%d",&a,&b);

*t=*p;

*p=*q;

*q=*t;

printf("交换后a和b的值:a=%db=%d\n",*p,*q);}2930.编程打印200~300之间所有素数。要求判断一个数是否是素数用函数实现,打印结果请在主函数实现。判断一个数是否是素数函数原型为:intfun(intm);参数说明:参数:m是要进行判断的数;返回值:若此数是素数,则返回值为1;否则返回值为0**输入提示信息:无**输入数据格式要求:无**输出数据格式要求:"%d\n"注:不允许使用goto语句答案:#include<stdio.h>intfun(intm);main(){inta;for(a=200;a<=300;a++){if(fum(a))printf("%d\n",a);elsecontinue;}}intfum(intm){inti;for(i=2;i<m;i++){if(m%i==0)return0;elsecontinue;}return1;}3031.输入某班学生某门课的成绩(最多不超过40人),当输入为负值时,表示输入结束,用函数编程统计成绩高于平均分的学生人数。要求按如下原型编写统计成绩在全班平均分与平均分之上的学生人数intGetAboveAver(intscore[],intn);**输入要求:"%d"**输出要求:"Totalstudentsare%d\n""Averagescoreis%d\n""Studentsofaboveaverageis%d\n"答案:#include<stdio.h>inta[40]={0},i=0;intGetAboveAver(intscore[],intn);intmain(){ for(i;i<=40;i++) { intb=0; scanf("%d",&b); if(b>=0) a[i]=b; else break; } printf("Totalstudentsare%d\n",i); GetAboveAver(a,i);}intGetAboveAver(intscore[],intn){ intsum=0,c; intd,e=0; for(c=0;c<i;c++) { sum=sum+score[c]; } d=sum/i; printf("Averagescoreis%d\n",d); for(c=0;c<i;c++) { if(score[c]>d) e++; else continue; } printf("Studentsofaboveaverageis%d\n",e); return0;}3031./*编程实现简单的计算器功能,要求用户按如下格式从键盘输入算式:操作数1运算符op操作数2计算并输出表达式的值,其中算术运算符包括:加(+)、减(-)、乘(*)、除(/)、^(次幂)。要求使其能进行浮点数的算术运算,同时允许使用字符*、x与X作为乘号,并且允许输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符。**输入格式要求:"%f%c%f"提示信息:"Pleaseentertheexpression:\n"**输出格式要求:"%f+%f=%f\n""%f-%f=%f\n""%f*%f=%f\n""%f/%f=%f\n""Divisionbyzero!\n""%f^%f=%f\n""Invalidoperator!\n"程序运行示例1如下:Pleaseentertheexpression:2.0+4.02.000000+4.000000=6.000000程序运行示例2如下:Pleaseentertheexpression:2.0-4.02.000000-4.000000=-2.000000程序运行示例3如下:Pleaseentertheexpression:2.0*4.02.000000*4.000000=8.000000程序运行示例4如下:Pleaseentertheexpression:2.0x4.02.000000*4.000000=8.000000程序运行示例5如下:Pleaseentertheexpression:2.0X4.02.000000*4.000000=8.000000程序运行示例6如下:Pleaseentertheexpression:2.0/4.02.000000/4.000000=0.5000000程序运行示例7如下:Pleaseentertheexpression:2.0/0Divisionbyzero!程序运行示例8如下:Pleaseentertheexpression:2.0^5.02.000000^5.000000=32.000000程序运行示例9如下:Pleaseentertheexpression:2.0\4.0Invalidoperator!*/#include<stdio.h>#include<math.h>intmain(){floata,b;charc; printf("Pleaseentertheexpression:\n"); scanf("%f%c%f",&a,&c,&b);if(c=='+') printf("%f+%f=%f\n",a,b,a+b);elseif(c=='-') printf("%f-%f=%f\n",a,b,a-b);elseif(c=='/') {if(b!=0) printf("%f/%f=%f\n",a,b,a/b);else printf("Divisionbyzero!"); }elseif(c=='*'||c=='x'||c=='X') printf("%f*%f=%f\n",a,b,a*b);elseif(c=='^') printf("%f^%f=%f\n",a,b,pow(a,b));else printf("Invalidoperator!\n");}3132.下面程序的功能是计算两个正整数的最小公倍数,请改正其中的错误。#include<stdio.h>intMinCommonMultiple(inta,intb)

main(){

inta,b,x;

printf("Inputa,b:");

scanf("%d,%d",a,b);

x=MinCommonMultiple(inta,intb);

printf("MinCommonMultiple=%d\n",x);}intMinCommonMultiple(inta,intb);{

inti;

for(i=1;i<a*b;i++)

{

if(i%a==0||i%b==0)

returni;

}}答案:#include<stdio.h>intMinCommonMultiple(inta,intb);intmain(){inta,b,x; printf("Inputa,b:"); scanf("%d,%d",&a,&b); x=MinCommonMultiple(a,b); printf("MinCommonMultiple=%d\n",x);}intMinCommonMultiple(inta,intb){inti;for(i=1;i<=a*b;i++) {if(i%a==0&&i%b==0)returni; }}3233.请编写函数fuc(),函数的功能是:根据以下公式求出p的值,结果由函数值返回。m,n是两个正整数,且m>n.P=m!/(n!*(m-n)!)**输入格式要求:"%d%d"提示信息:"请输入m,n的值(m>n):\n"**输出格式要求:"n项之和为:%lf\n"程序运行示例如下:请输入m,n的值(m>n):53n项之和为:10.000000答案:#include<stdio.h>intfuc(intm,intn);intsum_s(inti);intmain(){

intm,n;

printf("请输入m,n的值(m>n):\n");

scanf("%d%d",&m,&n);

printf("n项之和为:%lf\n",(double)fuc(m,n));}intfuc(intm,intn){

intp;

p=sum_s(m)/(sum_s(n)*sum_s(m-n));

returnp;

}intsum_s(inti){

ints_=1,a;

for(a=1;a<=i;a++)

{

s_=s_*a;

}

returns_;}3334.采用穷举法,按如下函数原型/*函数功能:计算a和b的最小公倍数,当a或者b为非正整数时返回-1*/intLcm(inta,intb);用函数编程实现计算两个正整数的最小公倍数(LeastCommonMultiple,LCM)的函数,在主函数中调用该函数计算并输出从键盘任意输入的两整数的最小公倍数。**输入格式要求:"%d,%d"提示信息:"Inputa,b:"**输出格式要求:"LeastCommonMultipleof%dand%dis%d\n""Inputerror!\n"程序运行示例如下:Inputa,b:16,24LeastCommonMultipleof16and24is48注:不允许使用goto语句答案:#include<stdio.h>intLcm(inta,intb);intmain(){

inta,b;

printf("Inputa,b:");

scanf("%d,%d",&a,&b);

if(Lcm(a,b)>0)

printf("LeastCommonMultipleof%dand%dis%d\n",a,b,Lcm(a,b));

else

printf("Inputerror!\n");}intLcm(inta,intb){

inti;

if(a>0&&b>0)

{

for(i=1;i<a*b;i++)

{

if((i%a==0)&&(i%b==0))

returni;

}

}

else

return-1;}3435.输入某班学生某门课的成绩(最多不超过40人),当输入为负值时,表示输入结束,用函数编程统计成绩不低于平均分的学生人数。要求:(1)按如下函数原型进行编程:intGetAboveAver(intscore[],intn);(2)在主函数中:输入学生成绩,然后调用函数GetAboveAver计算成绩不低于平均分的学生人数,最后输出该人数。要求:(1)学生成绩和平均分均定义为int类型(2)**无输入提示信息**输入格式为:"%d"**输出格式为:"Studentsofaboveaverageis%d\n"答案:#include<stdio.h>inta[40]={0},i=0;intGetAboveAver(intscore[],intn);intmain(){

for(i;i<=40;i++)

{

intb=0;

scanf("%d",&b);

if(b>=0)

a[i]=b;

else

break;

}

GetAboveAver(a,i);}intGetAboveAver(intscore[],intn){

intsum=0,c;

intd,e=0;

for(c=0;c<i;c++)

{

sum=sum+score[c];

}

d=sum/i;

for(c=0;c<i;c++)

{

if(score[c]>=d)

e++;

else

continue;

}

printf("Studentsofaboveaverageis%d\n",e);

return0;}3536.从键盘任意输入10个整数存入一个数组中,然后任意输入一个整数x,采用顺序查找法,在数组中查找该数,如果找到,则函数返回该数在数组中的下标位置,并在主函数中打印该值;如果没有找到,则返回-1,并在主函数中打印“Notfound!”。要求按如下函数原型编程实现查找功能。intSearch(inta[],intn,intx);在主函数中调用函数Search顺序查找x,然后在主函数中打印查找结果。要求必须按照题目要求和用函数编程,否则不给分。**要求输入10个整数的提示信息格式为:"Input10numbers:\n"(每输入一个数,键一次回车);**要求输入整数x的提示信息格式为:"Inputx:\n"**要求输出格式为:找到时的打印格式为"Subscriptofxis%d\n"没找到时的打印格式为"Notfound!\n"答案:#include<stdio.h>intSearch(inta[],intn,intx);intb[10]={0};intmain(){

intx,n;

printf("Input10numbers:\n");

for(x=0;x<10;x++)

{

scanf("%d",&n);

b[x]=n;

}

printf("Inputx:\n");

scanf("%d",&x);

Search(b,n,x);

if(Search(b,n,x)>0)

printf("Subscriptofxis%d\n",Search(b,n,x));

else

printf("Notfound!\n");}intSearch(inta[],intn,intx){

for(n=0;n<10;n++)

{

if(a[n]==x)

returnn;

else

continue;

}

return-1;}3637.利用一个字符数组作函数参数,实现字符串(最大长度为80个字符)的逆序存放。要求如下:(1)在子函数Inverse中实现字符串的逆序存放。函数原型为:voidInverse(charstr[]);(2)在主函数中从键盘输入字符串(使用gets函数)然后,调用Inverse函数,最后,输出逆序后的字符串。(3)**输入提示信息:"Inputastring:\n"**输出提示信息:"Inversedresults:\n"**输出格式:"%s\n"注:不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程,主函数不能使用intmain和return0。答案:#include<stdio.h>charstr_1[81];voidInverse(charstr[]);intmain(){ printf("Inputastring:\n"); gets(str_1); Inverse(str_1);}voidInverse(charstr[]){charb;inta,c;for(a=0;a<81;a++) {if(str[a]=='\0')break;elsecontinue; }for(c=0;c<(a)/2.0;c++) { b=str[c];str[c]=str[(a-1)-c];str[(a-1)-c]=b; } printf("Inversedresults:\n"); printf("%s\n",str);}3738.从键盘任意输入一个字符串,计算其实际字符个数并打印输出,即不使用字符串处理函数strlen()编程实现strlen()的功能。**输入格式要求:"%s"提示信息:"Pleaseenterastring:"**输出格式要求:"Thelengthofthestringis:%u\n"程序的运行示例如下:Pleaseenterastring:HelloChinaThelengthofthestringis:11答案:#include<stdio.h>main(){

inta;

charstr[100];

printf("Pleaseenterastring:");

gets(str);

for(a=0;a<100;a++)

{

if(str[a]=='\0')

break;

else

continue;

}

printf("Thelengthofthestringis:%u\n",a);}3839.输入一行字符,统计其中的英文字符、数字字符、空格字符,以与其他字符的个数。请找出以下程序的错误,并改正之。#include<stdio.h>#include<string.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;i<len;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);}答案:#include<stdio.h>#include<string.h>

#defineARR_SIZE80

main(){

charstr[ARR_SIZE];

int

len,i;

int

letter=0,digit=0,space=0,other=0;

printf("请输入一个字符串:");

gets(str);

len=strlen(str);

for(i=0;i<=len;i++)

{

if('a'<=str[i]&&str[i]<='z'||'A'<=str[i]&&str[i]<='Z')

{

letter++;

}

elseif('0'<=st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论