C语言习题及解答.docx
- 文档编号:10360501
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:39
- 大小:50.60KB
C语言习题及解答.docx
《C语言习题及解答.docx》由会员分享,可在线阅读,更多相关《C语言习题及解答.docx(39页珍藏版)》请在冰豆网上搜索。
C语言习题及解答
C语言习题及解答
1、输入一个华氏温度,要求输出摄氏温度。
公式为#include
voidmain()
{floatC,F;
printf("InputF:
");
scanf("%f",&F);
C=5.0/9*(F-32);
printf("C=%.2f\n",C);}
2、编写程序,从键盘输入一个大写字母,将它转换为对应的小写字母后输出。
(提示:
同一个字母的大写比小写小32)
#include
voidmain()
{charch;
printf("Inputch:
");
scanf("%c",&ch);
ch=ch+32;
printf(“ch=%c\n",ch);}
3、编写程序,输入梯形的上底、下底和高,计算并输出梯形的面积。
#include
voidmain()
{floata,b,h,area;
printf("Inputa,b,h:
");
scanf("%f%f%f",&a,&b,&h);
area=(a+b)*h/2;
printf("area=%.2f\n",area);
}
4、编写程序,输入圆半径r,求圆周长、圆面积、圆球表面积、圆球体积。
#include
#definePI3.1415926
voidmain()
{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);
}
5、有三个电阻r1、r2、r3并联,编写程序计算并输出并联后的电阻r。
已知电阻并联公式为:
#include
voidmain()
{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。
提示:
用算术运算中的整除和取余运算实现。
#include
voidmain()
{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。
#include
#include
voidmain()
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)
#include
#include
#definePI3.1415926
voidmain()
{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);
9、求任意三个整数的平均值。
要求:
输入数据与输出结果都应有相应的提示信息。
且输出数据取小数点后两位数字显示。
#include
voidmain()
{floata,b,c,ave;printf(“Input3numbers:
”);
scanf("%f%f%f",&a,&b,&c);
ave=(a+b+c)/3;
printf(“average=%.2f\n",ave);
10、输入一个字符,并输出。
其中有一个条件是如果该字符是小写的英文字母,则需把它转换成大写字母再输出。
#include
voidmain()
{charch;
printf("Inputch:
");
scanf("%c",&ch);
if(ch>='a'&&ch<='z')
ch=ch-32;
printf("%c\n",ch);
}
11、输入年号,判断并输出该年是否为闰年。
所谓闰年,是指能被4整除,但不能被100整除;或能被400整除的年份。
#include
voidmain()
{intyear;
printf("Inputyear:
");
scanf("%d",&year);if(year%4==0&&year%100!
=0||year%400==0)
printf("%disaleapyear.\n",year);
else
printf("%disnotaleapyear.\n",year);
12、编写程序,输入一个字符存入变量ch中,根据该字符的ASCII码值判断并输出字符的类型,即字母(alpha)、数字(numeric)或其他字符(other)
#include
voidmain()
{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");
else
printf("other\n");
}
13、有一个函数,编写程序,输入x的值,计算并输出y值。
#include
#include
voidmain()
{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、从键盘输入三个数,代表三条线段的长度。
请编写程序,判断这三条线段组成的三角形是什么类型(等边、等腰、不等边或不能构成三角形)。
#include
voidmain()
{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");
else
printf("Itisacommontriangle!
\n");
15、简单选择界面的编程,要求用switch实现多分支。
从键盘输入整数,输出不同的字符串:
输入1,输出Goodmorning;
输入2,输出Goodafternoon;
输入3,输出Goodevening;
输入4,输出Goodnight;
输入其它数字,输出Bye-bye。
#include
voidmain()
{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");
}
}
16、从键盘输入若干整数,以0结束,判断并输出其中的最大数。
#include
voidmain()
{intx,max;
Scanf(“%d”,&x);max=x;
While(x!
=0)
{if(x>max)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;
else
e=e+1;
#include
voidmain()
{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==32
c=c+1;
elseif(ch>='0'&&ch<='9')
d=d+1;
else
e=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型输入时应使用%lf
printf("area=%.2f\n",area);//printf函数中常加其它说明字符
数学函数的使用方法;同时需加上#include
doublepow(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)/9
18、分别用while、do-while和for语句计算(即求1!
+2!
+3!
+…+20!
),并试着简化程序。
#include
voidmain()
{
inti;
doublefact,sum;
i=1;sum=0;
fact=1;
while(i<=20)
{
fact=fact*i;
sum+=fact;
i++;
}
printf("%.0lf\n",sum);
}
19.计算:
#include
voidmain()
{
intn=1;
doublesum=0;
while(n<=10)
{
sum+=n*n+n-2.3;
n++;
}
printf("%lf\n",sum);
}
20、输出所有的水仙花数。
水仙花数是指一个3位数,各位数字的立方和等于该数本身,例如153=13+53+33。
分析:
对每一个3位数来说,分解出它们的个位、十位和百位,然后判断它们的立方和是否等于该数本身。
#include
voidmain()
{inti,a,b,c;
printf("Thenarcissusnumbersare:
");
for(i=100;i<=999;i++)
{
a=i/100;
b=i%100/10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
printf("%d",i);
}
}
21.
之和。
#include
voidmain()
{
inti;
doublea,b,sum=0;
a=2;b=1;
for(i=1;i<=20;i++)
{
sum+=a/b;
a=a+b;
b=a-b;
}
printf("sum=%lf\n",sum);
}
22、用循环语句编写程序,输出如下图案:
******
*****
****
***
**
*
#include
voidmain()
{
inti,j;
for(i=1;i<=6;i++)//输出一行
{
for(j=1;j<=i-1;j++)//输出空格
printf("");
for(j=1;j<=7-i;j++)//输出*
printf("*");//*后有个空格
printf("\n");
}
}
23.
a和n均由键盘输入。
#include
voidmain()
{
inta,n,i;
doublex=0,sum=0;
printf("Inputa,n:
");
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++)
{x=x*10+a;
sum+=x;
}
printf("sum=%.0lf\n",sum);
}
24、输出3~100之间的全部素数
#include
#include
voidmain()
{intm,k,i;
for(m=3;m<=100;m+=2)
{k=sqrt(m);
for(i=2;i<=k;i++)
{if(m%i==0)break;
}
if(i==k+1)
printf("%-5d",m);
}
}
25、从键盘输入10个整数存放在一个一维数组中,找出最大的数并输出该数及其下标。
#include
voidmain()
{
inta[10],i,max,k;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];k=0;
for(i=1;i<10;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题 解答