C语言习题及解答1、输入一个华氏温度,要求输出摄氏温度。公式为#includestdio.hvoidmain(){floatC,F;printf(InputF:);scanf(%f,&F);C=5.0/9*(F-32);printf(C=%.2f\n,C);}2、编写程序,从键盘输入一个大写字母,将它转换为对应的小写字母后输出。(提示:同一个字母的大写比小写小32)#includestdio.hvoidmain(){charch;printf(Inputch:);scanf(%c,&ch);ch=ch+32;printf(“ch=%c\n,ch);}3、编写程序,输入梯形的上底、下底和高,计算并输出梯形的面积。#includestdio.hvoidmain(){floata,b,h,area;3295FCprintf(Inputa,b,h:);scanf(%f%f%f,&a,&b,&h);area=(a+b)*h/2;printf(area=%.2f\n,area);}4、编写程序,输入圆半径r,求圆周长、圆面积、圆球表面积、圆球体积。#includestdio.h#definePI3.1415926voidmain(){floatr,L,s1,s2,V;printf(Inputr:);scanf(%f,&r);L=2*PI*r;s1=PI*r*r;s2=4*PI*r*r;V=4.0/3*PI*r*r*r;printf(L=%.2f,s1=%.2f,s2=%.2f,V=%.2f\n,L,s1,s2,V);}3121111rrrr5、有三个电阻r1、r2、r3并联,编写程序计算并输出并联后的电阻r。已知电阻并联公式为:#includestdio.hvoidmain(){floatr,r1,r2,r3;printf(Inputr1,r2,r3:);scanf(%f%f%f,&r1,&r2,&r3);r=1/(1/r1+1/r2+1/r3);printf(r=%.2f\n,r);}6、由键盘输入一个10-99之间的整数,将该数分解,分别输出其个位数字和十位数字。例如,输入85,输出:5,8。提示:用算术运算中的整除和取余运算实现。#includestdio.hvoidmain(){intx,a,b;scanf(%d,&x);a=x%10;b=x/10;printf(“a=%d,b=%d\n,a,b);}7、编写程序,输入三角形的三条边,计算并输出三角形的面积。(注意输入的三条边必须要能构成一个三角形)求三角形的面积公式为其中s=(a+b+c)/2。#includestdio.h#includemath.hvoidmain()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);8、周期为T秒的人造卫星离地面的平均高度H的计算公式为:其中:M=6×1024kg是地球质量,R=6.371×106m是地球半径。编写程序,输入人造卫星的周期T,计算并输出人造卫星离地面的高度H。算法提示:求xy结果的数学函数是pow(x,y)#includestdio.h#includemath.h#definePI3.1415926voidmain(){doubleM=6E24,R=6.371E6,T,H,x;printf(InputT:);scanf(%lf,&T);x=6.67E-11*M*T*T/(4*PI*PI);H=pow(x,1.0/3)-R;printf(H=%.2E\n,H);csbsassareaRMTH3221141067.69、求任意三个整数的平均值。要求:输入数据与输出结果都应有相应的提示信息。且输出数据取小数点后两位数字显示。#includestdio.hvoidmain(){floata,b,c,ave;printf(“Input3numbers:”);scanf(%f%f%f,&a,&b,&c);ave=(a+b+c)/3;printf(“average=%.2f\n,ave);10、输入一个字符,并输出。其中有一个条件是如果该字符是小写的英文字母,则需把它转换成大写字母再输出。#includestdio.hvoidmain(){charch;printf(Inputch:);scanf(%c,&ch);if(ch='a'&&ch='z')ch=ch-32;printf(%c\n,ch);}11、输入年号,判断并输出该年是否为闰年。所谓闰年,是指能被4整除,但不能被100整除;或能被400整除的年份。#includestdio.hvoidmain(){intyear;printf(Inputyear:);scanf(%d,&year);if(year%4==0&&year%100!=0||year%400==0)printf(%disaleapyear.\n,year);elseprintf(%disnotaleapyear.\n,year);12、编写程序,输入一个字符存入变量ch中,根据该字符的ASCII码值判断并输出字符的类型,即字母(alpha)、数字(numeric)或其他字符(other)#includestdio.hvoidmain(){charch;printf(Inputch:);scanf(%c,&ch);if((ch='A'&&ch='Z')||(ch='a'&&ch='z'))printf(alpha\n);elseif(ch='0'&&ch='9')printf(numeric\n);elseprintf(other\n);}13、有一个函数,编写程序,输入x的值,计算并输出y值。13)12lg(35531312123xxexxyx 10101111xxxx#includestdio.h#includemath.hvoidmain(){doublex,y;printf(Inputx:);scanf(%lf,&x);if(x-1)y=x*x*x-1;elseif(x=1)y=-3*x+1;elseif(x=10)y=3*exp(2*x-1)+5;elsey=5*x+3*log10(2*x*x-1)-13;printf(y=%.2f\n,y);14、从键盘输入三个数,代表三条线段的长度。请编写程序,判断这三条线段组成的三角形是什么类型(等边、等腰、不等边或不能构成三角形)。#includestdio.hvoidmain(){floata,b,c;printf(Inputa,b,c:);scanf(%f%f%f,&a,&b,&c);if(a+b=c||b+c=a||c+a=b)printf(Itisnotatriangle!\n);elseif(a==b&&b==c)printf(Itisaequilateraltriangle!\n);elseif(a==b||b==c||c==a)printf(Itisaisoscelestriangle!\n);elseprintf(Itisacommontriangle!\n);15、简单选择界面的编程,要求用switch实现多分支。从键盘输入整数,输出不同的字符串:输入1,输出Goodmorning;输入2,输出Goodafternoon;输入3,输出Goodevening;输入4,输出Goodnight;输入其它数字,输出Bye-bye。#includestdio.hvoidmain(){intx;printf(Inputx:);scanf(%d,&x);switch(x){case1:printf(Goodmorning\n);break;case2:printf(Goodafternoon\n);break;case3:printf(Goodevening\n);break;case4:printf(Goodnight\n);break;default:printf(Byebye\n);}}P641从键盘输入若干整数,以0结束,判断并输出其中的最大数。#includestdio.hvoidmain(){intx,max;Scanf(“%d”,&x);max=x;While(x!=0){if(xmax)max=x;Scanf(“%d”,&x);}printf(max=%d\n,max);17、输入一行字符,以回车键作为结束标志,分别统计出大写字母、小写字母、空格、数字和其它字符的个数。while(ch!='\n')if(ch='A'&&cn='Z')a=a+1;elseif(ch='a'&&ch='z')b=b+1;elseif(ch=='')c=c+1;elseif(ch='0'&&ch='9')d=d+1;elsee=e+1;#includestdio.hvoidmain(){charch;inta=0,b=0,c=0,d=0,e=0;printf(Inputastring:);while((ch=getchar())!='\n'){if(ch='A'&&cn='Z')a=a+1;elseif(ch='a'&&ch='z')b=b+1;elseif(ch=='')//ch==32c=c+1;elseif(ch='0'&&ch='9')d=d+1;elsee=e+1;}printf(%d,%d,%d,%d,%d\n,a,b,c,d,e);}数学表达式的写法:x=6.67E-11*M*T*T/4*PI*PI;×x=6.67E-11*M*T*T/(4*PI*PI);√x=6.67E-11*M*T*T/4/PI/PI;√x=pow(6.67E-11*M*T*T/(4*PI*PI),1.0/3);√2、scanf、printf函数的格式:scanf(%f%f%f,&a,&b,&c);//双引号间不要加其它任何符号scanf(%lf%lf%lf,&a,&b,&c);//double型输入时应使用%lfprintf(area=%.2f\n,area);//printf函数中常加其它说明字符数学函数的使用方法;同时需加上#includemath.hdoublepow(doublex,doubley);4、方法一:使用scanf函数scanf(%c,&ch);//读入第一个字符while(ch!='\n'){if(…)┊scanf(%c,&ch);//读入其它字符}//循环之前读入第一个字符,以便第一次判断表达式是否成立;循环体最后读入下一个字符,以便判断循环是否继续执行5、5/9.0*(F-32)5.0/9.0*(F-32)5*(F-32)/918、分别用while、do-while和for语句计算(即求1!+2!+3!+…+20!),并试着简化程序。#includestdio.hvoidmain(){inti;doublefact,sum;i=1;sum=0;fact=1;while(i=20){fact=fact*i;sum+=fact;i++;}printf(%.0lf\n,sum);}19.计算:#includestdio.hvoidmain(){intn=1;doublesum=0;while(n=10)10123.2nnn{sum+=n*n+n-2.3;n++;}printf(%lf\n,sum);}P6520、输出所有的水仙花数。水仙花数是指一个3位数,各位数字的立方和等于该数本身,例如153=13+53+33。分析:对每一个3位数来说,分解出它们的个位、十位和百位,然后判断它们的立方和是否等于该数本身。#includestdio.hvoidma