C语言程序设计实验指导答案.docx

上传人:b****5 文档编号:3163672 上传时间:2022-11-18 格式:DOCX 页数:24 大小:23.06KB
下载 相关 举报
C语言程序设计实验指导答案.docx_第1页
第1页 / 共24页
C语言程序设计实验指导答案.docx_第2页
第2页 / 共24页
C语言程序设计实验指导答案.docx_第3页
第3页 / 共24页
C语言程序设计实验指导答案.docx_第4页
第4页 / 共24页
C语言程序设计实验指导答案.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C语言程序设计实验指导答案.docx

《C语言程序设计实验指导答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验指导答案.docx(24页珍藏版)》请在冰豆网上搜索。

C语言程序设计实验指导答案.docx

C语言程序设计实验指导答案

实验二:

变量类型与输入输出

1.a=34,a=53,b=1234,b=4660☆

因为0x1234超出了字符类型的表示范围,因此打印的结果看起来奇怪。

2.输入:

a回车

输出:

****ch1=a,97****

****ch2=

10,****

解释ch2的输出:

由于输入a回车,因此ch2的值就接受了这个回车,而回车的ascii码的值等于10,因此出现这种结果。

如果要修改,需要在ch2=getchar()之前加入一句:

getchar();☆☆☆

3.把scanf(“%d”,a)改为scanf(“%f”,&a)

4.把scanf(“%f”,&a)改为scanf(“%lf”,&a),因为a是double类型的。

☆☆☆

5.42

42

123.540000

123.540000

1.235400e+002

1.235400e+002

6.正确的形式:

a=3.12,b=9.0c=10.0注意的事项是在scanf()中,””中的内容按照原样输入,尽管在实践中没有按照此题那样进行类似输入。

7.此题不用看

8.#include

#definePI3.14159

intmain()

{

doubleradius,high,volume;

printf("pleaseinputtheradiusandhigh!

");

scanf("%lf%lf",&radius,&high);

volume=PI*radius*radius*high;

printf("thevolumeis:

%lf",volume);

return0;

}

9#include

intmain()

{

inti;

printf("pleaseinputthevalue!

");

scanf("%d",&i);

printf("%u,%o,%x",i,i,i);//分别以无符号、八进制、十六进制

return0;

}

10#include

intmain()

{

charch;

printf("pleaseinputthecharacter!

");

scanf("%c",&ch);

printf("itsASCIIcodeis:

%d",ch);/*字符型就是短整形因此用%d格式控制就可打印

asciicode*/

return0;

}

1112easy忽略

实验三:

运算符与表达式

1.输出:

a=2,b=1,i=2,这是因为++放在后面是“先使用后自加”。

☆☆☆☆☆

2.输出:

f=5.750000,(int)f=5,这是因为利用了强制类型转换(int)

3.输出:

a=3,b=2,c=3,d=3

解释:

a和b值不同的原因是在给a赋值的时刻,2,3是用括号包围的,而b没有,而逗号表达式的值等于最后面的那个值。

☆☆☆☆☆

4.输出:

-264原因是首先执行a-=a*a也就是a=12-(12*12)=-132,然后a+=a因此变为-264☆☆

5.输出:

a=2,b=0,c=2,d=1这是因为在执行b=a++&&c++时,由于首先使用a的当前值为0,而在“&&”运算符中当左侧的操作数为0时会发生“短路”现象,即不再计算右侧的”c++”直接就可以判定b=0,因此在这一步中c的值并没有发生变化,而运算完此步a=1。

而在下一步d=a++||++c中,同样会发生短路现象,因为此时首先利用a的当前值1直接就可以判定d=1,而不再执行++c☆☆☆☆☆

6.输出:

3,18

输出:

3,3还是逗号运算符和赋值运算符的问题☆☆☆☆☆

7.把s=1/2*a*b改为s=1.0/2*a*b千万不要忘了在c语言中1/2=0☆☆☆☆☆

8.easy!

9.#include

intmain()

{

charch;

printf("pleaseinputthelowercharacter!

");

ch=getchar();

ch-=32;

putchar(ch);

return0;

}

101112easy!

!

实验四:

顺序结构程序设计

1.其中的两处错误发生在:

scanf(“%d”,r)应该改为scanf(“%f”&r);另外一处发生在语句s=3.14*r*r和语句scanf(“%d”,r)次序颠倒,因为一个变量只有先有值之后才能使用。

2.执行结果为3,5,8,-858993444,因为d没有赋初值因此打印出一个看起来非常奇怪的值。

☆☆☆☆

3.输出7

4.输入27输出27,这是因为ch1=’2’,ch2=’7’

输入27输出4,这是因为ch1=’2’,ch2=’‘(空格),而空格的ascii码为32,’0’的ascii码为48因此算出结果为4

5输出1,1☆

6.输出6,7,只需要知道++的前缀和后缀的区别即能做出此题。

☆☆☆☆

7.sum=d1+d2+d3+d4+d5;

avg=(float)sum/5;/*需要强制类型转换*/

8.#include

intmain()

{

inta,b,c,max;

printf("pleaseinputthevaluesofa,bandc!

");

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

max=a>b?

a:

b;

max=max>c?

max:

c;

printf("themaxvalueofa,bandcis:

%d",max);

return0;

}

9.#include

#include

intmain()

{

doublea,b,c,alpha;

printf("pleaseinputthevaluesoftwoedgesandangle");

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

c=sqrt(a*a+b*b-2*a*b*cos(alpha));

printf("thevalueofthirdedgeis%f",c);

return0;

}

本程序用到sqrt和cos函数,它们位于头文件,因此在使用它们之前首先要包含此头文件。

另外,cos函数接受的弧度,而不是角度。

10

程序如下:

#include

intmain()

{

doubleF,C;

printf("pleaseinputtheFahrenheit!

");

scanf("%lf",&F);

C=(double)5/9*(F-32);

printf("theCelsiusis:

%f",C);

return0;

}

本程序中要注意因为整数相除仍为整数,因此5/9永远为0,为了得到正确的结果,首先进行强制类型转换。

☆☆☆☆☆

实验五:

选择结构程序设计

1.2easy忽略

3.-1此题简单

4.判定一个数位于一个区间,绝对不能出现60<=score<70的情况应该(score>=60&&score<70)

此程序修改为:

#include

voidmain()

{

intscore;

if(score>=90&&score<=120)

printf(“优”);

elseif(score>=80&&score<90)

printf(“良”);

elseif(score>=70&&score<80)

printf(“中”);

elseif(score>=60&&score<70)

printf(“及格”);

else

printf(“不及格”);

}

5.注意switchcase中的“fallthrought”现象,也就是在没有break的情况下,程序根据匹配的入口一直向下执行,知道碰到break或者}终止。

修改时只需要在每个case后面的printf语句后面加上break即可。

☆☆☆☆☆

6.else为if(b>0)的分支,应该改为:

#include

intmain()

{

inta=2,b=-3;

if(a>0)

if(b>0)

printf("a,b>0");

else

printf("a>0,b<0");

else

printf("a<0");

return0;

}

7.#include

intmain()

{

charc;

c=getchar();

if(c>='a'&&c<='z')

c-=32;

elseif(c>='A'&&c<='Z')

c+=32;

else

c=c;

putchar(c);

return0;

}

注意在此程序中有两点容易发生错误:

第一if(c>='a'&&c<='z')写成if(‘a’<=c<=’z’)。

第二就是if(c>='A'&&c<='Z')语句前应该加else,如果不加else,可以考虑当输入小写字符if(c>='a'&&c<='z')满足,执行c-=32此时c变成大写字母,再继续判断if(c>='A'&&c<='Z')又满足执行c+=32又回到小写。

☆☆☆☆☆

8if(a==5)

9添加的代码为if((x>=0&&x<=5)||x>=10)

10easy

11easy!

但是要注意a=0&&b!

=0时,此时有一个根。

12#include

intmain()

{

intbirthYear,age;

printf(“pleaseinputtheyearofyourbirth!

”);

scanf(“%d”,&birthYear);

age=2006-birthYear;

       age=age>=0?

age:

12-(-age%12);

switch(age%12)

{

case0:

printf(“属狗”);

break;

case1:

printf(“属鸡”);

break;

case2:

printf(“属猴”);

break;

case3:

printf(“属羊”);

break;

case4:

printf(“属马”);

break;

case5:

printf(“属蛇”);

break;

case6:

printf(“属龙”);

break;

case7:

printf(“属兔”);

break;

case8:

printf(“属虎”);

break;

case9:

printf(“属牛”);

break;

case10:

printf(“属鼠”);

break;

case11:

printf(“属猪”);

break;

}

return0;

}

13#include

intmain()

{

intscore;

printf("pleaseinputthescore!

");

scanf("%d"

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

当前位置:首页 > 幼儿教育 > 少儿英语

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

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