实验2优秀作业1_第1页
实验2优秀作业1_第2页
实验2优秀作业1_第3页
实验2优秀作业1_第4页
实验2优秀作业1_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验02数据类型、运算符和简单的输入输出班级:学号:姓名:一、实验目的1掌握(1) C语言的数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法;(2) 学会C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减(-)运算符的使用。(3) 输入输出函数的应用2了解字符型数据和整型数据的内在关系。3. 进一步熟悉C程序的编辑、编译、连接、运行和调试的过程。二、实验要求1. 请在实验课前复习课堂上所讲授的第三章的内容;2. 请在实验课前将本实验要求编写的程序打好草稿(将设计好的程序直接写在该文档相应题目的后面即可),课前提交预习报告;3. 实验课后请将该文档和最后一题的源程序文件(文件名为exp2_4_3.c)压缩为一个文件(文件名改为:学号姓名.rar),并在作业空间提交。三、实验内容和步骤 1. 输入并运行教材第3章第4题给出的程序:#includeint main()char c1, c2;c1 =97; c2 =98; printf(“%c %cn”,c1,c2);printf(“%d %dn”,c1,c2);return 0; (1) 运行以上程序,分析为什么会输出这些信息。结果是:a b97 98原因:分别按照两种形式输出,第一行输出字符型,第二行输出十进制整数型(2) 如果将程序第5,6行改为:c1=197;c2=198;运行程序并分析结果。结果是:?-59 -58原因:定义c为字符型变量并使初始值为字符?没有初始化,只是超出标准ASCII范围,结果会变得和机器有关。,197和198超过了char变量的数值允许范围 (3) 如果将程序第4行改为 int c1, c2;运行程序并分析结果。结果是:?197 198原因:C1和c2被定义为整型变量2. 输入第3章第5题的程序。即:用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=A,c2=a。问在键盘上如何数入?#include int main()int a,b;float x,y;char c1,c2;scanf(“a=%d b=%d”,&a,&b);/“%d”和“b”中间有一个空格scanf(“%f%e”,&x,&y); /a改为xscanf(“%c%c”,&c1,&c2);printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn”,a,b,x,y,c1,c2);return 0;运行时分别按以下方式输入数据,观察输出结果,分析原因。(1) a=3,b=7,x=8.5,y=71.82,A,a/逗号分隔(2) a=3 b=7 x=8.5 y=71.82 A a/空格分隔(3) a=3 b=7 8.5 71.82 A a /空格分隔(4) a=3 b=7 8.5 71.82Aa/71.82Aa为连续输入,其他空格分隔(5) 3 7 8.5 71.82Aa/71.82Aa为连续输入,其他空格分隔(6) a=3 b=7/空格分隔8.5 71.82/空格分隔Aa(7) a=3 b=7/空格分隔8.5 71.82/空格分隔Aa/无分隔符(8) a=3 b=7/空格分隔8.5 71.82Aa/71.82Aa为连续输入,其他空格分隔通过此题,总结输入数据的规律和容易出错的地方。总结:在格式字符串中除了有格式声明外,还有一些普通字符。在赋值时应按指定格式输入;在输入数据时,应在对应位置上输入同样的字符;如果scanf函数中两个%d之间有两个空格,输入时,两个数据间应有两个或更多的空格字符;不同语句中间应有;语句的结束标志,而非分隔符。分割。3. 输入以下程序#includeint main( )int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(“%d,%d,%d,%dn”,i , j , m , n);return 0;(1) 运行程序,注意i、j、m、n各变量的值。结果:9,11,9,10原因:第六行和第七行分别表示i+1赋给i,再将i的值赋给m,所以m=i=9;将j的值赋给n,再将j+1赋给j.(2) 将第6、7行改为: mi+; n+j;再编译运行。结果:9,11,8,11原因:第六行和第七行分别表示将i的值赋给m,再将i+1赋给i;将j+1赋给j,再将j的值赋给n(3) 将程序改为:#includeint main()int i , j;i=8;j=10;printf(“%d,%dn”,i+,j+);return 0;结果:8,10原因:先输出了i和j,才将i和j的值分别加1(4) 在(3)的基础上,将printf语句改为: printf(%d,%dn,+i,+j);结果:9,11原因:先将i和j分别加1,再输出i和j(5) 再将printf语句改为: printf(%d,%d,%d,%d, i, j, i+, j+);结果:8,10,8,10原因:输出原始i和j的值,和i与j 的值,最后再使i和j 的值分别加1(6) 将程序改为:#includeint main()int i , j , m=0 , n=0;i=8;j=10;m+=i+; n -= -j ;printf(“i=%d,j=%d,m=%d,n=%dn”,i,j,m,n);return 0;结果:i=9,j=9,m=8,n=-9原因:程序第六行表示m=i,i=i+1,j=j-1,n=j应该是等价如下顺序执行的语句m=m+i;i=i+1;j=j-1;n=n-j;注意复合赋值的运算注意:在本题的(3)(4)(5)步中关于printf函数中使用自增或自减的表达式作为参数的使用形式,其输出结果和编译器有关,故提醒大家在自己写程序时不要这样写!这三步仅供大家了解一下VC中printf函数对自增减表达式和参数的调用顺序的处理方式,无须过深追究!4. 假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值是现在的多少倍。编写程序。(第3章第1题)计算公式为:p=(1+r)nr为增长率,n为年数,p为与现在相比的倍数。(1) 输入自己已编好的程序,编译并运行。分析运行结果。程序:exp2_4_1.c#includeint main()float p,r,n;p=1;n=1;r=0.09;while (n11)p=p*(1+r); n=n+1;写的非常好!或者用pow函数p=pow(1+r,n);文件开始需要包含数学函数原型对应的头文件:#includeprintf(p=%fn,p);return 0;(2) 年增长率不再程序中指定,改用scanf函数语句输入,分别输入7%,8%,10%。观察结果。程序:exp2_4_2.c#includeint main()float p,r,n;p=1;n=1;scanf(%f,&r);while (n11)p=p*(1+r); n=n+1;printf(p=%fn,p);return 0;(3) 在程序中增加printf函数语句,用来提示输入什么数据和说明输出的是什么数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论