实验2优秀作业1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C 语言程序设计》上机实验
实验 02
班级: 学号: 姓名:
数据类型、运算符和简单的输入输出
一、实验目的
1.掌握 (1) C 语言的Fra Baidu bibliotek据类型,熟悉如何定义一个整型、字符型和实型的变量, 以及对它们赋值的方法; (2) 学会 C 的有关算术运算符,以及包含这些运算符的表达式,特别是自 加(++)和自减(--)运算符的使用。 (3) 输入输出函数的应用 2.了解字符型数据和整型数据的内在关系。 3. 进一步熟悉 C 程序的编辑、编译、连接、运行和调试的过程。
注意:在本题的(3) (4) (5)步中关于 printf 函数中使用自增或自减的表 达式作为参数的使用形式,其输出结果和编译器有关,故提醒大家在自己写 程序时不要这样写!这三步仅供大家了解一下 VC 中 printf 函数对自增减表 达式和参数的调用顺序的处理方式,无须过深追究! 4. 假如我国国民生产总值的年增长率为 9%,计算 10 年后我国国民生产总 值是现在的多少倍。编写程序。 (第 3 章第 1 题) 计算公式为:p = (1 + r)������ r 为增长率,n 为年数,p 为与现在相比的倍数。 (1) 输入自己已编好的程序,编译并运行。分析运行结果。 程序:exp2_4_1.c
第 2 页共 6 页
//逗号分隔
《C 语言程序设计》上机实验
(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 隔 (5) 3 7 8.5 71.82Aa 格分隔 (6) a=3 b=7↙ 8.5 71.82↙ A↙ a↙ (7) a=3 b=7↙ 8.5 71.82↙ Aa↙ (8) a=3 b=7↙ 8.5 71.82Aa↙
第 1 页共 6 页
实验 02
数据类型、运算符和表达式
结果是: a b 97 98 原因: 分别按照两种形式输出, 第一行输出字符型, 第二行输出十进 制整数型 (2) 如果将程序第 5,6 行改为: c1=197; c2=198; 运行程序并分析结果。 结果是: ?? -59 -58 原因: 定义 c 为字符型变量并使初始值为字符‘?’ ,197 和 198 超 过了 char 变量的数值允许范围 (3) 如果将程序第 4 行改为 int c1, c2; 运行程序并分析结果。 结果是: ?? 197 198 原因: C1 和 c2 被定义为整型变量
第 4 页共 6 页
《C 语言程序设计》上机实验
i=8; j=10; m+=i++; n -= --j ; printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n); return 0; } 结果: 原因: i=9,j=9,m=8,n=-9 程序第六行表示 m=i,i=i+1,j=j-1,n=j
三、实验内容和步骤
1. 输入并运行教材第 3 章第 4 题给出的程序: #include<stdio.h> intmain() { char c1, c2; c1 =97; c2 =98; printf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); return 0; } (1) 运行以上程序,分析为什么会输出这些信息。
第 5 页共 6 页
实验 02
数据类型、运算符和表达式
程序:exp2_4_2.c
#include<stdio.h> int main() { float p,r,n; p=1; n=1; scanf("%f",&r); while (n<11) { p=p*(1+r); n=n+1; } printf("p=%f\n",p); return 0; }
//空格分隔
//空格分隔 //71.82Aa 为连续输入,其他空格分
//71.82Aa 为连续输入,其他空
//空格分隔 //空格分隔
//空格分隔 //空格分隔 //无分隔符 //空格分隔 //71.82Aa 为连续输入,其他空格分隔
通过此题,总结输入数据的规律和容易出错的地方。 总结: 在格式字符串中除了有格式声明外,还有一些普通字符。在赋值 时应按指定格式输入;在输入数据时,应在对应位置上输入同样 的字符;如果 scanf 函数中两个%d 之间有两个空格,输入时, 两个数据间应有两个或更多的空格字符;不同语句中间应有‘; ’ 分割。 3. 输入以下程序 #include<stdio.h> intmain() { inti,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d\n”,i , j , m , n); return 0; } (1) 运行程序,注意 i、j、m、n 各变量的值。
第 3 页共 6 页
实验 02
数据类型、运算符和表达式
结果: 原因:
9,11,9,10 第六行和第七行分别表示 i+1 赋给 i,再将 i 的值赋给 m,所以 m=i=9;将 j 的值赋给 n,再将 j+1 赋给 j.
(2) 将第 6、7 行改为: m=i++; n=++j; 再编译运行。 结果: 原因: 9,11,8,11 第六行和第七行分别表示将 i 的值赋给 m, 再将 i+1 赋给 i; 将 j+1 赋给 j,再将 j 的值赋给 n (3) 将程序改为: #include<stdio.h> intmain() { int i , j; i=8; j=10; printf(“%d,%d\n”,i++,j++); return 0; } 结果: 原因: 8,10 先输出了 i 和 j,才将 i 和 j 的值分别加 1
(3) 在程序中增加 printf 函数语句,用来提示输入什么数据和说明输出的 是什么数据。 程序:exp2_4_3.c
#include<stdio.h> int main() { float p,r,n; p=1; n=1; printf("请输入年增长率 r="); scanf("%f",&r); while (n<11) { p=p*(1+r); n=n+1; } printf("十年后国民生产总值与十年前的比值 p=%f\n",p); return 0; }
第 6 页共 6 页
二、实验要求
1. 请在实验课前复习课堂上所讲授的第三章的内容; 2. 请在实验课前将本实验要求编写的程序打好草稿(将设计好的程序直接 写在该文档相应题目的后面即可) ,课前提交预习报告; 3. 实验课后请将该文档和最后一题的源程序文件(文件名为 exp2_4_3.c)压 缩为一个文件(文件名改为:学号姓名.rar) ,并在作业空间提交。
2. 输入第 3 章第 5 题的程序。即: 用下面的 scanf 函数输入数据,使 a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问在键盘上如何数入? #include <stdio.h> int main() { inta,b; floatx,y; char c1,c2; scanf(“a=%db=%d”,&a,&b); //“%d”和“b”中间有一个空格 scanf(“%f%e”,&x,&y); //a 改为 x scanf(“%c%c”,&c1,&c2); printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n”,a,b,x,y,c1,c2); return 0; } 运行时分别按以下方式输入数据,观察输出结果,分析原因。 (1) a=3,b=7,x=8.5,y=71.82,A,a
(4) 在(3)的基础上,将 printf 语句改为: printf("%d,%d\n",++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) 将程序改为: #include<stdio.h> int main() { int i , j , m=0 , n=0;
#include<stdio.h> int main() { float p,r,n; p=1; n=1; r=0.09; while (n<11) { p=p*(1+r); n=n+1; } printf("p=%f\n",p); return 0; }
(2) 年增长率不再程序中指定,改用 scanf 函数语句输入,分别输入 7%,8%,10%。观察结果。
相关文档
最新文档