C语言题解Word格式文档下载.docx

上传人:b****6 文档编号:21064158 上传时间:2023-01-27 格式:DOCX 页数:56 大小:59.12KB
下载 相关 举报
C语言题解Word格式文档下载.docx_第1页
第1页 / 共56页
C语言题解Word格式文档下载.docx_第2页
第2页 / 共56页
C语言题解Word格式文档下载.docx_第3页
第3页 / 共56页
C语言题解Word格式文档下载.docx_第4页
第4页 / 共56页
C语言题解Word格式文档下载.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

C语言题解Word格式文档下载.docx

《C语言题解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言题解Word格式文档下载.docx(56页珍藏版)》请在冰豆网上搜索。

C语言题解Word格式文档下载.docx

return0;

}

4.5请写出下面程序的输出结果:

inta=5,b=7;

floatx=67.8564,y=-789.124;

charc='

A'

longn=1234567;

unsignedu=65535;

%d%d\n"

a,b);

%3d%3d\n"

%f,%f\n"

x,y);

%-10f,%-10f\n"

%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n"

x,y,x,y,x,y);

%e,%10.2e\n"

%c,%d,%o,%x\n"

c,c,c,c);

%ld,%lo,%x\n"

n,n,n);

%u,%o,%x,%d\n"

u,u,u,u);

%s,%5.3s\n"

"

COMPUTER"

);

57

57

67.856400,-789.124023

67.856400,-789.124023

67.86,-789.12,67.8564,-789.1240,67.856400,-789.124023

6.785640e+001,-7.89e+002

A,65,101,41

1234567,4553207,12d687

65535,177777,ffff,65535

COMPUTER,COM

4.6用下面的scanf函数输入数据,使a=3,b=7,x=8.5,7=71.82,c1=’A’,c2=’a’,问在键盘上如何输入?

inta,b;

floatx,y;

charc1,c2;

scanf("

%d%d%f%f%c%c"

&

a,&

b,&

x,&

y,&

c1,&

c2);

%d%d\n"

%f%f\n"

%c%c\n"

c1,c2);

4.7用下面的scanf函数输入数据,使a=10,b=20,c1=’A’,c2=’a’,x=1.5,y=-3.75,z=67.8,请问在键盘上如何输入数据?

floatx,y,z;

%d%d%c%c%f%f%f"

c2,&

z);

%f%f%f\n"

4.8设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf输入数据,然后输出计算结果。

输出时要求有文字说明并取小数点后两位数字,请编程序。

#definePi3.1415926

doubler,h;

%lf%lf"

r,&

h);

圆的周长=%.2f\n"

2*Pi*r);

圆的面积=%.2f\n"

Pi*r*r);

圆球表面积=%.2f\n"

Pi*r*r/6);

圆球体积=%.2f\n"

4*Pi*r*r*r/3);

圆柱体积=%.2f\n"

Pi*r*r*h);

4.9输入一个华氏温度的取值F,要求输出摄氏温度的取值C。

公式为

C=5(F-32)/9

输出要有文字说明,取两位小数。

#include<

stdio.h>

doubleCentigradeTemperture(doubleFahrenheit);

doubleF;

请输入华氏温度:

"

%lf"

F);

摄氏温度为%.2f\n"

CentigradeTemperature(F));

doubleCentigradeTemperature(doubleFahrenheit)

return5*(Fahrenheit-32)/9;

4.10编程序:

用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符,并思考以下问题:

(1)变量c1,c2应定义为字符型还是整型,或二者皆可?

(2)要求输出c1和c2的ASCII码,应如何处理?

用putchar函数还是printf函数?

(3)整型变量与字符变量是否在任何情况下都可以互相代替?

如:

charc1,c2;

与intc1,c2;

是否无条件等价?

c1=getchar();

c2=getchar();

putchar(c1);

putchar(c2);

\n%c%c\n"

(1)二者皆可。

(2)用printf函数将printf("

c1,c2)改成printf("

\n%d%d\n"

c1,c2)即可。

(3)不是,整型可以代替字符型,但字符无法完全替代整型。

第5章

5.1什么是算术运算?

什么是关系运算?

什么是逻辑运算?

算术运算:

+-*/%++--

关系运算:

<

>

==>

=<

=!

=

逻辑运算:

!

&

&

||

5.2C语言中如何表示真假?

系统如何判断一个量的真假?

C语言用整数1和0表示真假

5.3写出下面各逻辑表达式的值,设a=3,b=4,c=5。

(1)a+b>

c&

b==c

(2)a||b+c&

b-c

(3)!

(a>

b)&

!

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

5.4有三个整数a,b,c,由键盘输入,输出其中最大的数。

intMax3(inta,intb,intc);

inta,b,c;

%d%d%d"

c);

最大的数是%d\n"

Max3(a,b,c));

intMax3(inta,intb,intc)

inttemp;

temp=a>

b?

a:

b;

returntemp>

c?

temp:

c;

5.5有一函数:

编写一程序,输入x,输出y值。

doublefuncy(doublex);

doublex,y;

x);

y=funcy(x);

最大的数是%lf\n"

y);

doublefuncy(doublex)

if(x<

1)returnx;

else

if(x<

10)return2*x-1;

elsereturn3*x-11;

5.6给出百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。

90分以上为’A’,81~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。

doublescore;

score);

if(score>

100||score<

0)return0;

=90)printf("

A\n"

if(score>

=80)printf("

B\n"

else

if(score>

=70)printf("

C\n"

else

if(score>

=60)printf("

D\n"

elseprintf("

E\n"

5.7给一个不多于5位的正整数,要求:

(1)求出它是几位数;

(2)分别打印出每一位数字;

(3)按逆序打印出各位数字,例如原数为321,应输出123。

inti,k;

inta[5];

unsignedintx;

%u"

if(x>

99999||x<

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;

/*求出它的几位数*/

(1):

if(a[0])printf("

5位数\n"

if(a[1])printf("

4位数\n"

if(a[2])printf("

3位数\n"

if(a[1])printf("

2位数\n"

1位数\n"

/*计算无效0的个数*/

k=0;

while(k<

5&

a[k]==0)k++;

/*打印每一位数字*/

(2):

for(i=k;

i<

5;

i++)printf("

%d"

a[i]);

\n"

/*逆序打印每一位数字*/

(3):

for(i=4;

i>

=k;

i--)printf("

5.8企业发放的奖金根据利润提成。

利润(I)低于或等于10万元的,奖金可提10%;

利润高于10万元,低于20万元(100000<

I≤200000)时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;

当200000<

I≤400000时,高于20万元的部分按5%提成;

当400000<

I≤600000时,高于40万元的部分按3%提成;

当600000<

I≤1000000时,高于60万的部分按1.5%提成;

当I≥1000000时,超过100万元的部分按1%提成。

从键盘输入当月利润I,求应发奖金总数。

doubleI,bouns;

请输入本月利润(万元):

I);

if(I<

=10)bouns=I*0.1;

if(I<

=20)

bouns=10*0.1+(I-10)*0.75;

if(I<

=40)

bouns=10*0.1+10*0.75+(I-20)*0.05;

if(I<

=60)

bouns=10*0.1+10*0.75+20*0.05+(I-40)*0.03;

else

if(I<

=100)

bouns=10*0.1+10*0.75+20*0.05+

20*0.03+(I-60)*0.15;

else

20*0.03+40*0.15+(I-100)*0.01;

本月总奖金数为%lf万元\n"

bouns);

5.9输入四个整数,要求按大小顺序输出

#defineN4

intbubble(inta[],intk);

inti;

inta[N];

for(i=0;

N;

i++)scanf("

%d"

a[i]);

if(bubble(a,N)){

for(i=0;

4;

printf("

}

intbubble(inta[],intk)

inti,j;

intt,temp;

if(k<

1)return0;

for(i=1;

=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;

5.10有四个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1。

这四个塔的高度都为10米,塔以外无建筑物。

今输入任一点的坐标,求该点相应的高度(塔外的高度为0)。

doubleTowerHeight(doublex,doubley,doublez);

doublex,y,z;

%lf%lf%lf"

该点的高度为%lf\n"

TowerHeight(x,y,z));

doubleTowerHeight(doublex,doubley,doublez)

if((x-2)*(x-2)+(y-2)*(y-2)<

=1||

(x+2)*(x+2)+(y-2)*(y-2)<

(x-2)*(x-2)+(y+2)*(y+2)<

(x+2)*(x+2)+(y+2)*(y+2)<

=1)

returnz;

return0;

第6章

6.1输入两个正整数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);

6.2输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

#defineN100

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++;

if(*p==32)j++;

if(*p<

58&

47)k++;

elsem++;

p++;

英文字符个数为:

%d\n"

i);

空格数为:

j);

数字个数为:

k);

其它字符个数为:

m);

6.3求Sn=a+aa+aaa+…+aa…a(n个a)之值,其中a是一个数字。

longintSumOfaa(inta,intk)

if(a<

1||k<

if(k==1)returna;

return10*(SumOfaa(a,k-1)-SumOfaa(a,k-2))+a+SumOfaa(a,k-1);

6.4求

(即求1!

+2!

+3!

+…+20!

)。

longintSumOfRfact(intk)

if(k<

2)return1;

returnk*(SumOfRfact(k-1)-SumOfRfact(k-2))+SumOfRfact(k-1);

6.5求

longintSumOfk(intk)

inti,sum=0;

i++)sum+=i;

returnsum;

longintSumOfk2(intk)

i++)sum+=i*i;

doubleSumOfk1(intk)

doublesum=0.0;

i++)sum+=1.0/i;

6.6打印出所有“水仙花数”。

所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。

例如,153=13+53+33。

inti=0;

intx,y,z;

for(x=1;

x<

10;

x++)

for(y=0;

y<

y++)

for(z=0;

z<

z++)

if(x*x*x+y*y*y+z*z*z==x*100+y*10+z){

printf("

x*100+y*10+z);

i++;

}

共有%d个水仙花数\n"

6.7一个数如果恰好等于它的因子之和,这个数就称之为“完数”。

例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。

编程序找出1000之内的所有完数。

并按下面的格式输出其因子。

#defineN1000

intAllFactors(inta[],intk);

intOverNum(intk);

inti,k=0;

=N;

if(OverNum(i)){

printf("

%disOverNum\n"

k++;

}

Thereare%dOverNums\n"

/*求k的所有因子,因子保存在数组a中,返回因子的个数*/

intAllFactors(inta[],intk)

intm=1;

/*用以记录因子的个数*/

a[0]=1;

for(i=2;

k;

if(k%i==0){/*i是因子*/

a[m++]=i;

/*因子送数组保存*/

returnm;

intOverNum(intk)

inta[100];

intj,m;

intsum=0;

m=AllFactors(a,k);

/*记录因子个数*/

m;

j++)sum=sum+a[j];

/*求出各因子的累加和*/

if(k==sum)/*是完数*/

return1;

6.8有一分数序列:

求出这个序列的前20项之和。

#defineN20

doubleSumFractions(intk);

pr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 卡通动漫

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1