C语言题解49.docx
- 文档编号:27797865
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:44
- 大小:52.20KB
C语言题解49.docx
《C语言题解49.docx》由会员分享,可在线阅读,更多相关《C语言题解49.docx(44页珍藏版)》请在冰豆网上搜索。
C语言题解49
第4章
4.1C语言中的语句有哪几类C语句与其他语言中的语句有哪些不同
(1)控制语句
(2)函数调用语句
(3)表达式语句
(4)空语句
(5)复合语句
C语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求,而其他语言一般对书写格式有严格要求。
怎样区分表达式和表达式语句C语言为什么要设表达式语句什么时候用表达式,什么时候用表达式语句
表达式没有分号,语句是有分号的,将表达式加上一个分号就成了表达式语句。
两者最大的区别是,表达式只是一个值,而表达式语句是指令,完成指定的操作。
C语言设表达式语句的作用是用简短的指令代替了复杂的函数运算,程序运行效率高。
表达式是为了进行求值运算而设定的计算公式,用于语句中,但不构成完整的语句。
如果要完成该运算,必须使用表达式语句。
4.3C语言为什么要把输入输出的功能用函数来实现,而不作为语言的基本部分
因为输入输出的对象是数据,而数据是以介质为载体的,因此进行输入输出就要与各种外部设备打交道。
由于不同的系统进行输入输出的差异较大,所以必须使用函数和操作系统进行交互,以便存取不同的设备文件。
若a=3,b=4,c=5,x=,y=,z=,u=51274,n=128765,c1=‘a’,c2=‘b’。
想得到以下的输出格式和结果,请写出程序。
要求输出结果如下:
a=3b=4c=5
x=,y=,z=
x+y=y+z=z+x=
u=51274n=128765
c1=’a’or97(ASCII)
c2=’b’or98(ASCII)
intmain()
{
inta=3,b=4,c=5;
doublex=,y=,z=;
unsignedintu=51274,n=128765;
charc1='a',c2='b';
printf("a=%2db=%2dc=%2d\n",a,b,c);
printf("x=%f,y=%f,z=%f\n",x,y,z);
printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6un=%10u\n",u,n);
printf("c1=%cor%d(ASCII)\n",c1,c1);
printf("c2=%cor%d(ASCII)\n",c2,c2);
return0;
}
请写出下面程序的输出结果:
intmain()
{
inta=5,b=7;
floatx=,y=;
charc='A';
longn=1234567;
unsignedu=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n",x,y);
printf("%-10f,%-10f\n",x,y);
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%ld,%lo,%x\n",n,n,n);
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%\n","COMPUTER","COMPUTER");
return0;
}
57
57
,,,,
+001,+002
A,65,101,41
1234567,4553207,12d687
65535,177777,ffff,65535
COMPUTER,COM
用下面的scanf函数输入数据,使a=3,b=7,x=,7=,c1=’A’,c2=’a’,问在键盘上如何输入
intmain()
{
inta,b;
floatx,y;
charc1,c2;
scanf("%d%d%f%f%c%c",&a,&b,&x,&y,&c1,&c2);
printf("%d%d\n",a,b);
printf("%f%f\n",x,y);
printf("%c%c\n",c1,c2);
return0;
}
用下面的scanf函数输入数据,使a=10,b=20,c1=’A’,c2=’a’,x=,y=,z=,请问在键盘上如何输入数据
intmain()
{
inta,b;
charc1,c2;
floatx,y,z;
scanf("%d%d%c%c%f%f%f",&a,&b,&c1,&c2,&x,&y,&z);
printf("%d%d\n",a,b);
printf("%f%f%f\n",x,y,z);
printf("%c%c\n",c1,c2);
return0;
}
设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,然后输出计算结果。
输出时要求有文字说明并取小数点后两位数字,请编程序。
#definePi
intmain()
{
doubler,h;
scanf("%lf%lf",&r,&h);
printf("圆的周长=%.2f\n",2*Pi*r);
printf("圆的面积=%.2f\n",Pi*r*r);
printf("圆球表面积=%.2f\n",Pi*r*r/6);
printf("圆球体积=%.2f\n",4*Pi*r*r*r/3);
printf("圆柱体积=%.2f\n",Pi*r*r*h);
return0;
}
输入一个华氏温度的取值F,要求输出摄氏温度的取值C。
公式为
C=5(F-32)/9
输出要有文字说明,取两位小数。
#include<>
doubleCentigradeTemperture(doubleFahrenheit);
intmain()
{
doubleF;
printf("请输入华氏温度:
");
scanf("%lf",&F);
printf("摄氏温度为%.2f\n",CentigradeTemperature(F));
return0;
}
doubleCentigradeTemperature(doubleFahrenheit)
{
return5*(Fahrenheit-32)/9;
}
编程序:
用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符,并思考以下问题:
(1)变量c1,c2应定义为字符型还是整型,或二者皆可
(2)要求输出c1和c2的ASCII码,应如何处理用putchar函数还是printf函数(3)整型变量与字符变量是否在任何情况下都可以互相代替如:
charc1,c2;
与intc1,c2;
是否无条件等价
intmain()
{
charc1,c2;
c1=getchar();
c2=getchar();
putchar(c1);
putchar(c2);
printf("\n%c%c\n",c1,c2);
return0;
}
(1)二者皆可。
(2)用printf函数将printf("\n%c%c\n",c1,c2)改成printf("\n%d%d\n",c1,c2)即可。
(3)不是,整型可以代替字符型,但字符无法完全替代整型。
第5章
什么是算术运算什么是关系运算什么是逻辑运算
算术运算:
+-*/%++--
关系运算:
<>==>=<=!
=
逻辑运算:
!
&&||
5.2C语言中如何表示真假系统如何判断一个量的真假
C语言用整数1和0表示真假
写出下面各逻辑表达式的值,设a=3,b=4,c=5。
(1)a+b>c&&b==c
(2)a||b+c&&b-c
(3)!
(a>b)&&!
c&&!
1
(4)!
(x=a)&&(y=b)&&0
(5)!
(a+b)+c-1&&b+c/2
(1)0
(2)1(3)0(4)0(5)1
有三个整数a,b,c,由键盘输入,输出其中最大的数。
intMax3(inta,intb,intc);
intmain()
{
inta,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("最大的数是%d\n",Max3(a,b,c));
return0;
}
intMax3(inta,intb,intc)
{
inttemp;
temp=a>ba:
b;
returntemp>ctemp:
c;
}
有一函数:
编写一程序,输入x,输出y值。
doublefuncy(doublex);
intmain()
{
doublex,y;
scanf("%lf",&x);
y=funcy(x);
printf("最大的数是%lf\n",y);
return0;
}
doublefuncy(doublex)
{
if(x<1)returnx;
else
if(x<10)return2*x-1;
elsereturn3*x-11;
}
给出百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。
90分以上为’A’,81~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。
intmain()
{
doublescore;
scanf("%lf",&score);
if(score>100||score<0)return0;
if(score>=90)printf("A\n");
else
if(score>=80)printf("B\n");
else
if(score>=70)printf("C\n");
else
if(score>=60)printf("D\n");
elseprintf("E\n");
return0;
}
给一个不多于5位的正整数,要求:
(1)求出它是几位数;
(2)分别打印出每一位数字;(3)按逆序打印出各位数字,例如原数为321,应输出123。
intmain()
{
inti,k;
inta[5];
unsignedintx;
scanf("%u",&x);
if(x>99999||x<0)return0;
a[0]=x/10000;
a[1]=(x-a[0]*10000)/1000;
a[2]=(x-a[0]*10000-a[1]*1000)/100;
a[3]=(x-a[0]*10000-a[1]*1000-a[2]*100)/10;
a[4]=x-a[0]*10000-a[1]*1000-a[2]*100-a[3]*10;
/*求出它的几位数*/
printf("
(1):
");
if(a[0])printf("5位数\n");
else
if(a[1])printf("4位数\n");
else
if(a[2])printf("3位数\n");
else
if(a[1])printf("2位数\n");
elseprintf("1位数\n");
/*计算无效0的个数*/
k=0;
while(k<5&&a[k]==0)k++;
/*打印每一位数字*/
printf("
(2):
");
for(i=k;i<5;i++)printf("%d",a[i]);
printf("\n");
/*逆序打印每一位数字*/
printf("(3):
");
for(i=4;i>=k;i--)printf("%d",a[i]);
printf("\n");
return0;
}
企业发放的奖金根据利润提成。
利润(I)低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元(100000
从键盘输入当月利润I,求应发奖金总数。
intmain()
{
doubleI,bouns;
printf("请输入本月利润(万元):
");
scanf("%lf",&I);
if(I<0)return0;
if(I<=10)bouns=I*;
else
if(I<=20)
bouns=10*+(I-10)*;
else
if(I<=40)
bouns=10*+10*+(I-20)*;
else
if(I<=60)
bouns=10*+10*+20*+(I-40)*;
else
if(I<=100)
bouns=10*+10*+20*+
20*+(I-60)*;
else
bouns=10*+10*+20*+
20*+40*+(I-100)*;
printf("本月总奖金数为%lf万元\n",bouns);
return0;
}
输入四个整数,要求按大小顺序输出
#defineN4
intbubble(inta[],intk);
intmain()
{
inti;
inta[N];
for(i=0;i if(bubble(a,N)){ for(i=0;i<4;i++)printf("%d",a[i]); printf("\n"); } return0; } intbubble(inta[],intk) { inti,j; intt,temp; if(k<1)return0; for(i=1;i<=k-1;i++){ t=k-i; for(j=0;j<=t-1;j++) if(a[j]>a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } return1; } 有四个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1。 这四个塔的高度都为10米,塔以外无建筑物。 今输入任一点的坐标,求该点相应的高度(塔外的高度为0)。 doubleTowerHeight(doublex,doubley,doublez); intmain() { doublex,y,z; scanf("%lf%lf%lf",&x,&y,&z); printf("该点的高度为%lf\n",TowerHeight(x,y,z)); return0; } doubleTowerHeight(doublex,doubley,doublez) { if((x-2)*(x-2)+(y-2)*(y-2)<=1|| (x+2)*(x+2)+(y-2)*(y-2)<=1|| (x-2)*(x-2)+(y+2)*(y+2)<=1|| (x+2)*(x+2)+(y+2)*(y+2)<=1) returnz; else return0; } 第6章 输入两个正整数m和n,求其最大公约数和最小公倍数。 intGreatestCommonDivisor(intm,intn)/*返回最大公约数*/ { intu,v,r; if(m==0||n==0)return0; u=m; v=n; while(r=u%v){ u=v; v=r; } returnv; } intLeastCommonMultiple(intm,intn)/*返回最小公倍数*/ { intu; u=GreatestCommonDivisor(m,n); if(! u)return0; returnu*(m/u)*(n/u); } 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 #defineN100 intmain() { chars[N]; char*p; inti=0,j=0,k=0,m=0; gets(s); p=s; while(*p! ='\0'){ if(*p<123&&*p>64)i++; else if(*p==32)j++; else if(*p<58&&*p>47)k++; elsem++; p++; } printf("英文字符个数为: %d\n",i); printf("空格数为: %d\n",j); printf("数字个数为: %d\n",k); printf("其它字符个数为: %d\n",m); return0; } 求Sn=a+aa+aaa+…+aa…a(n个a)之值,其中a是一个数字。 longintSumOfaa(inta,intk) { if(a<1||k<1)return0; if(k==1)returna; else return10*(SumOfaa(a,k-1)-SumOfaa(a,k-2))+a+SumOfaa(a,k-1); } 求 (即求1! +2! +3! +…+20! )。 longintSumOfRfact(intk) { if(k<1)return0; else if(k<2)return1; else returnk*(SumOfRfact(k-1)-SumOfRfact(k-2))+SumOfRfact(k-1); } 求 longintSumOfk(intk) { inti,sum=0; if(k<1)return0; for(i=1;i<=k;i++)sum+=i; returnsum; } longintSumOfk2(intk) { inti,sum=0; if(k<1)return0; for(i=1;i<=k;i++)sum+=i*i; returnsum; } doubleSumOfk1(intk) { inti; doublesum=; if(k<1)return0; for(i=1;i<=k;i++)sum+=i; returnsum; } 打印出所有“水仙花数”。 所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。 例如,153=13+53+33。 intmain() { inti=0; intx,y,z; for(x=1;x<10;x++) for(y=0;y<10;y++) for(z=0;z<10;z++) if(x*x*x+y*y*y+z*z*z==x*100+y*10+z){ printf("%d\n",x*100+y*10+z); i++; } printf("共有%d个水仙花数\n",i); return0; } 一个数如果恰好等于它的因子之和,这个数就称之为“完数”。 例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。 编程序找出1000之内的所有完数。 并按下面的格式输出其因子。 #defineN1000 intAllFactors(inta[],intk); intOverNum(intk); intmain() { inti,k=0; for(i=1;i<=N;i++){ if(OverNum(i)){ printf("%disOverNum\n",i); k++; } } printf("Thereare%dOverNums\n",k); return0; } /*求k的所有因子,因子保存在数组a中,返回因子的个数*/ intAllFactors(inta[],intk) { inti; intm=1;/*用以记录因子的个数*/ if(k<1)return0; a[0]=1; for(i=2;i if(k%i==0){/*i是因子*/ a[m++]=i;/*因子送数组保存*/ } } returnm; } intOverNum(intk) { inta[100]; intj,m; intsum=0; m=AllFactors(a,k);/*记录因子个数*/ for(j=0;j if(k==sum)/*是完数*/ return1; else return0; } 有一分数序列: … 求出这个序列的前20项之和。 #defineN20 doubleSumFractions(intk); intmain() { printf("%lf\n",SumFractions(N)); return0; } doubleSumFractions(intk) { inti; doublesum=; doublea=,b=,temp; for(i=0;i sum=sum+a/b; temp=a; a=a+b; b=temp; } returnsum; } 一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。 求它在第10次落地时,共经过多少米第10次反弹多高 doubleTotalDistance(doubleHeight,doubleTimes,doubleRatio); doubleReboundingDistance(doubleHeight,doubleTimes,doubleRatio); intm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 题解 49