C程序设计实验报告2——数据类型、运算符和简单的输入输出

1.实验目的

(1)掌握C语言数据类型,了解字符型数据和整型数据的内在关系。

(2)掌握对各种数值型数据的正确输入方法。

(3)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(十十)和自减(—一)运算符的使用。

(4)学会编写和运行简单的应用程序。

(5)进一步熟悉C程序的编辑、编译

2.实验内容和步骤

1输入并运行教材第3章第4题给出的程序;

 运行以上的程序,分析为什么会输出这些信息。

如果将程序第4,5行改为

C1=197;

C2=198;

运行时会输出什么信息?为什么?

 如果将程序第3行改为

Int c1,c2;

运行时会输出什么信息?为什么?

 2输入第3章第5题的程序。即:用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=A,c2=a.问在键盘上如何输入?

 

 运行时分别按下方式输入数据,观察输出结果,分析原因。

 

 

 

 

 

 

 

 

 

通过此题,总结输入数据的规律和容易出错的地方。

(3)输入以下程序:

 

编译和运行程序,注意i,j,m,n各变量的值。

 

将第6,7行改为

m=i++;

n=++j;

在编译和运行,分析结果。

 程序改为

 

再编译和运行,分析结果。

的基础上,将printf语句改为

printf(%d,%d\n,++i,++j);

再编译和运行。

 

 

再将printf语句改为

printf(%d,%d,%d,%d\n,i,j,i++,j++);

再编译和运行,分析结果。

 

 

程序改为:

 

再编译和运行,分析结果。

  1. 假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。编写程序。

 

 

①输入自己编好的程序,编译并运行,分析运行结果。

年增长率不在程序中指定,改用scanf函数语句输入,分别输入7%,8%,10%。观察结果。

 

 

 

 

在程序中增加printf函数语句,用来提示输入什么数据,说明输出的是什么数据。

3.实验结果

运行结果为:如上面的所有所附带的图片可得

4.分析讨论

1运用了char这个字符型这个数据类型,将整数通过ASCII中的编码转化成特定的字符。而%c为我新学到的格式化字符,可以将输入的数字按照ASCII码相应的转化为对应的字符。这边其实不难发现,char所定义的变量内其实是存贮着整数,然后通过%c,才输出了相应的字符。

     中由于ASCII的数值范围为-128~127,就拿197举例,它的值已经超过了127,又因为197的原码为11000101,我们所要输出的用“%d”来说明了,变成了要强制用int类型来输出数据。又因为Int在内存中占用4个字节,而char只占用1个字节,故需要再其前面在补充3个字节,于是其内存补码便变为了11111111 11111111 11111111 11000101,然后又根据补码变为原码的规则(一.如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。二.如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,除符号外其余各位取反,然后再整个数加1)于是其原码便变为了10000000 00000000 00000000 00111011转化成十进制变为-59,所以导致了c1这个变量中存储了-59这个整数。而之所以通过“%c”输出了“牌”这个汉字,是因为汉字是双字节,运用了unsigned char 这个数值范围,用两个单字节的char所定义的变量所编码成了一个汉字。

通过这个实验案例,让我更深一步的了解了ASCII表以及char,%c的用法与技巧。

(2)中一开始我编写的程序没有问题,但在调用scanf的时候,我输入数据为3 7 8.5 71.82 Aa,打完之后发现a b 所对应的值不是理想中的值,还有c1所对应的值变成了“,”,后来经过询问发现是自己的基础知识不够牢固,应该把3 7 改为a=3 b=7 ,还有char是字符型的数据类型,空格还有回车都有所对应的数据。做完之后,我为我能发现自己的遗漏知识点而感到欣慰。

(3)中其实主要来区别i++,++i的区别,++ i 是先加后赋值;i ++ 是先赋值后加;++i和i++都是分两步完成的。因为++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i = a =b,即 ++i 是一个左值;i++ 的后面一步是自增,不是左值。形象的理解可以是i++先做别的事,再自己加1,++i先自己加1,再做别的事情。理解完这个以后,这些代码的打出以及结果的理解就十分轻松了。

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值