张志航等编著C语言key 清华大学出版社.docx

上传人:b****2 文档编号:23107440 上传时间:2023-04-30 格式:DOCX 页数:117 大小:39.17KB
下载 相关 举报
张志航等编著C语言key 清华大学出版社.docx_第1页
第1页 / 共117页
张志航等编著C语言key 清华大学出版社.docx_第2页
第2页 / 共117页
张志航等编著C语言key 清华大学出版社.docx_第3页
第3页 / 共117页
张志航等编著C语言key 清华大学出版社.docx_第4页
第4页 / 共117页
张志航等编著C语言key 清华大学出版社.docx_第5页
第5页 / 共117页
点击查看更多>>
下载资源
资源描述

张志航等编著C语言key 清华大学出版社.docx

《张志航等编著C语言key 清华大学出版社.docx》由会员分享,可在线阅读,更多相关《张志航等编著C语言key 清华大学出版社.docx(117页珍藏版)》请在冰豆网上搜索。

张志航等编著C语言key 清华大学出版社.docx

张志航等编著C语言key清华大学出版社

习题1答案

1.答案:

三代。

第一代为机器语言,用二进制代码表示机器指令,机器语言程序可直接运行。

第二代为汇编语言,用助记符表示一条指令,汇编语言程序必须经过汇编才能执行。

第三代为高级语言,用预先规定好的类似于数学语言的语句编写程序,高级语言程序必须经过编译连接才能执行。

2.答案:

所谓移植,是指将在一种计算机系统下编写的程序,经过改动放在另一种计算机系统中运行,要求运行结果一样。

改动越少,可移植性越好;反之,可移植性越差。

3.答案:

见1.2节。

4.答案:

C语言程序是由若干函数构成,其中必须有一个主函数。

每个函数由函数名和函数体构成。

在函数体中有若干语句构成。

注释语句的形式,在“/*”和“*/”之间加文字说明,注释可以跨多行书写。

5.答案:

四个步骤。

编辑:

输入修改源程序。

编译:

将源程序翻译成目标代码。

连接:

将目标代码和库程序连接生成可执行代码。

运行:

执行可执行代码。

若后三步出错,可以回退到源代码编辑阶段。

6.答案:

7.答案:

main()

{printf("************************************\n");

printf("*TurboCVersion2.0*\n");

printf("************************************\n");}

8.答案:

intaverage(intx,inty,intz)

{return((x+y+z)/3);}

main()

{inta,b,c,d;

a=3;b=5;c=7;

d=average(a,b,c);

printf("average=%d\n",d);}

习题2答案

1.答案:

以下合法常量已做标注,其余为非法常量

65535(合法)3.5U66L(合法)1.24e-2(合法)

6e1.2'@'(合法)'abc'"abc"(合法)

"?

"(合法)892.(合法).123(合法)-0xAB(合法)

2.答案:

以下合法的用户标识符已做标注,其余为不合法的

Max(合法)_301(合法)4_5M-1

Char(合法)intmynameM.D.Jhon

3.答案:

x:

0000000000001100

y:

0000000001001101

z:

1111111110001100

4.答案:

运算结果:

3.5结果表达式类型:

double型

5.答案:

运算结果:

2.5结果表达式类型:

double型

6.答案:

表达式序号a的值n的值表达式的值

(1)16516

(2)656

(3)40540

(4)050

(5)010

(6)050

(7)15560

(8)31818

(9)3318

(10)151

7.答案:

00010101,ch的值是21。

8.答案:

1111111111111001,i的值为-7。

9.答案:

0000000011111001,i的值为249。

10.答案:

表达式序号

(1)

(2)(3)(4)(5)(6)(7)(8)

表达式运算结果01101101

11.答案:

a和b的值分别为8和5。

结论是,此三个运算实现a和b两个变量值的交换。

如果a和b的值发生了变化,结论依然成立。

即无论a和b的初值是什么,连续做a=a+b;b=a-b;a=a-b;后,结果a和b的值做了交换。

12.答案:

a和b的值分别为8和5。

结论是,此三个运算实现a和b两个变量值的交换。

如果a和b的值发生了变化,结论依然成立。

(与11题答案相同)

13.答案:

(x*x+y*y)>1&&-2

习题3答案

1.答案:

#include

main()

{

printf("Thesizeoffundamentaltypesiscomputed.\n\n");

printf("char:

%3ubyte\n",sizeof(char));

printf("short:

%3ubytes\n",sizeof(short));

printf("int:

%3ubytes\n",sizeof(int));

printf("long:

%3ubytes\n",sizeof(long));

printf("unsigned:

%3ubytes\n",sizeof(unsigned));

printf("float:

%3ubytes\n",sizeof(float));

printf("double:

%3ubytes\n",sizeof(double));

}

运行状况:

Thesizeoffundamentaltypesiscomputed.

char:

1byte

short:

2bytes

int:

2bytes

long:

4bytes

unsigned:

2bytes

float:

4bytes

double:

8bytes

2.答案:

在TurboC2.0环境中,用printf函数输出时,做四舍五入处理;赋给整型变量时,做截断处理。

#include

main()

{

doubled=23.176;

inti=2.999;

printf("%.2f,%d\n",d,i);

}

运行结果:

23.18,2

3.答案:

#include

main()

{

charc1,c2;

c1=getchar();c2=getchar();

putchar(c1);putchar(c2);putchar('\n');

printf("%c%c\n",c1,c2);

}

问题回答:

(1)两种都可以;定义成char型较好,因为用char型量意义明确,且占用字节数少。

(2)只能使用printf函数,具体语句是printf("%d%d\n",c1,c2);

(3)不是在任何情况下都可以互相代替,两种变量的值域不一样。

char型量的值域为-128~+127,int型量的值域为-32768~+32767。

一般地,可用int型量代替char型量,反之不然。

本质上,int型量是两个字节长度的整数,char型量是一个字节长度的整数。

8.答案:

c,b,a

9.答案:

#include

main()

{

longm,n;

intb3;

doubleq;

printf("Pleaseinputm&n:

");

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

q=(double)m/n;

b3=(int)(q*1000)%10;

printf("quotient=%.4f,b3=%d\n",q,b3);

}

运行状况:

Pleaseinputm&n:

188639100000

quotient=1.8864,b3=6

10.答案:

#include

#defineM_TO_K1.6093

#defineM_TO_Y1760

main()

{

doublekilo;

intmile,yard;

printf("Pleaseinputkilometers:

");

scanf("%lf",&kilo);

mile=kilo/M_TO_K;

yard=(kilo/M_TO_K-mile)*M_TO_Y+0.5;

printf("miles=%d,yards=%d\n",mile,yard);

}

运行状况:

Pleaseinputkilometers:

10

miles=6,yards=376

11.答案:

#include

main()

{

intreal1,image1,real2,image2;

printf("Pleaseinputcomplex1:

");

scanf("%d+%di",&real1,&image1);

printf("Pleaseinputcomplex2:

");

scanf("%d+%di",&real2,&image2);

printf("TheSumis=%d+%di\n",real1+real2,image1+image2);

}

运行状况:

Pleaseinputcomplex1:

3+5i

Pleaseinputcomplex2:

8+9i

TheSumis=11+14i

12.答案:

#include

main()

{

inthour,minute,second,year,month,day;

printf("Pleaseinputtime(hh:

mm:

ss):

");

scanf("%d:

%d:

%d",&hour,&minute,&second);

printf("Timeis=%02d:

%02d:

%02d\n",hour,minute,second);

printf("Pleaseinputdate(yyyy-mm-dd):

");

scanf("%d-%d-%d",&year,&month,&day);

printf("Dateis=%04d-%02d-%02d\n",year,month,day);

}

运行状况:

Pleaseinputtime(hh:

mm:

ss):

5:

3:

8

Timeis=05:

03:

08

Pleaseinputdate(yyyy-mm-dd):

2006-12-8

Dateis=2006-12-08

13.答案:

#include

main()

{

inthours,minutes,seconds;

longtotseconds;

printf("Pleaseinputtotalseconds:

");

scanf("%ld",&totseconds);

hours=totseconds/3600;

minutes=(totseconds-hours*3600)/60;

seconds=totseconds-hours*3600-minutes*60;

printf("equalto%dhours,%dminutes,%dseconds\n",hours,minutes,seconds);

}

运行状况:

Pleaseinputtotalseconds:

3753

equalto1hours,2minutes,33seconds

14.答案:

#include

main()

{

unsignedintnum,low,high;

printf("Pleaseinputahexnumber:

");

scanf("%X",&num);

low=num&0x00ff;

high=num>>8;

printf("%2X,%2X\n",low,high);

}

运行状况:

Pleaseinputahexnumber:

A8BD

BD,A8

习题4答案

1.#include

main()

{

doublea,b,c,max;

printf("Pleaseinputthreenumbers:

\n");

scanf("%lf%lf%lf",&a,&b,&c);

if(a>b)max=a;

elsemax=b;

if(max

printf("Themaxnumberis:

%f\n",max);

}

2.#include

main()

{

intyear;

printf("Pleaseinputayear:

");

scanf("%d",&year);

if((year%4==0&&year%100!

=0)||year%400==0)

printf("%disaleapyear.\n",year);

else

printf("%disnotaleapyear.\n",year);

}

4.#include

main()

{

inti,count=0;

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

if(i%9==0&&i%11==0)

{

printf("%d\t",i);

count++;

if(count%5==0)printf("\n");

}

}

5.If-else语句答案:

#include

main()

{

intscore;

printf("Pleaseinputscore(0~100):

");

scanf("%d",&score);

if(score>100||score<0)

printf("Thescoreerror!

\n");

else

{

printf("\nThegradeis(A~E):

");

if(score>=90)printf("A\n");

elseif(score>=80)printf("B\n");

elseif(score>=70)printf("C\n");

elseif(score>=60)printf("D\n");

elseprintf("E\n");

}

}

Switch语句答案:

#include

main()

{

intscore;

printf("Pleaseinputscore(0~100):

");

scanf("%d",&score);

if(score>100||score<0)

printf("Thescoreerror!

\n");

else

{

printf("\nThegradeis(A~E):

");

switch(score/10){

case10:

case9:

printf("A\n");break;

case8:

printf("B\n");break;

case7:

printf("C\n");break;

case6:

printf("D\n");break;

default:

printf("E\n");

}

}

}

6.#include

main()

{

intbase1,base2,base3,base4,base5,base6,base7,base8;

floatmoney,tax;

base1=0.05*500;

base2=base1+0.1*1500;

base3=base2+0.15*3000;

base4=base3+0.2*15000;

base5=base4+0.25*20000;

base6=base5+0.3*20000;

base7=base6+0.35*20000;

base8=base7+0.4*20000;

printf("Pleaseinputtheincome:

");

scanf("%f",&money);

if(money<0)

printf("Inputisnegative,error!

\n");

else

{

money=money-800;

if(money<=0)tax=0;

elseif(money<=500)tax=money*0.05;

elseif(money<=2000)tax=base1+(money-500)*0.1;

elseif(money<=5000)tax=base2+(money-2000)*0.15;

elseif(money<=20000)tax=base3+(money-5000)*0.2;

elseif(money<=40000)tax=base4+(money-20000)*0.25;

elseif(money<=60000)tax=base5+(money-40000)*0.3;

elseif(money<=80000)tax=base6+(money-60000)*0.35;

elseif(money<=100000)tax=base7+(money-80000)*0.4;

elsetax=base8+(money-100000)*0.45;

printf("\nThetaxis:

%f\n",tax);

}

}

7.#include

main()

{

inti,a,b,c,d;

for(i=1000;i<10000;i++)

{

a=i/1000;/*千位*/

b=i%1000/100;/*百位*/

c=i%100/10;/*十位*/

d=i%10;/*个位*/

if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d==i)

printf("%d\t",i);

}

printf("\n");

}

8.#include

#include

main()

{

inti,j,m;

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

{

m=sqrt(i);

for(j=2;j<=m;j++)

if(i%j==0)break;

if(j>=m+1)

printf("%d\t",i);

}

printf("\n");

}

9.#include

main()

{

intbeginCol=5,i,j,m;

for(i=7,j=4;j>0;j--,i-=2)

{

for(m=0;m

printf("");

for(m=0;m

printf("*");

printf("\n");

}

for(i=3,j=2;j<=4;j++,i+=2)

{

for(m=0;m

printf("");

for(m=0;m

printf("*");

printf("\n");

}

printf("\n");

}

10.#include

main()

{

inti,x,y,z;

for(x=1;x<=9;x++)

for(y=0;y<=9;y++)

for(z=0;z<=9;z++)

if(x!

=y&&y!

=z&&z!

=x&&(x*100+y*10+z)%11==0)

printf("%d\t",x*100+y*10+z);

printf("\n");

}

11.#include

main()

{

inti;

floatm,n,sum=0;

for(i=0,m=1,n=2;i<30;i++)

{

sum+=n/m;

n=n+m;

m=n-m;

}

printf("%f\n",sum);

}

12.#include

main()

{

intm,i,j,k,total;

printf("PleaseinputN(1<=N<=1000):

");

scanf("%d",&m);

total=0;/*初始化*/

for(i=1;i<=100;i++)/*5块钱组合*/

for(j=1;j<=500;j++)/*2块钱组合*/

for(k=1;k<=1000;k++)/*1块钱组合*/

if(i*5+j*2+k==m)

{

printf("%d=%d*5+%d*2+%d*1\n",m,i,j,k);

total++;

}

printf("total=%d\n",total);/*组合次数*/

}

13.#include

main()

{

longtotal;

inti;

total=1;/*初始化*/

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

if(i%3==0)

total*=i;

printf("total=%ld\n",total);

}

14.#include

main()

{

charc;

inti;

c=0;i=0;

while(c!

=10&&c!

=13)

{

scanf("%c",&c);

if(c=='c')

i++;

}

printf("result=%d",i);

}

15.#include

main()

{

longnum=0,sum=0;

inta,n,i;

printf("Pleaseinputa:

");

scanf("%d",&a);

printf("Pleaseinputn:

");

scanf("%d",&n);

for(i=0;i

{

num=num*10+a;

sum=sum+num;

}

printf("sum=%ld\n",sum);

}

16.#include

main()

{

charc;

intCnum,cnum,digit,space,other;

Cnum=cnum=digit=space=other=0;

printf("Pleaseinputastring:

");

while((c=getchar())!

='\n')

{

if(c>='A'&&c<='

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

当前位置:首页 > 初中教育 > 语文

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

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