当前位置:文档之家› c语言程序设计基本输入输出和简单程序设计

c语言程序设计基本输入输出和简单程序设计

实验3 基本输入输出和简单程序设计实验目的1.掌握常用的C语言语句,熟练应用赋值、输入、输出语句。

2.理解C语言程序的顺序结构,掌握顺序结构设计的基本方法。

3.进一步熟悉C程序的编辑、编译、连接和运行以及调试跟踪的过程。

实验内容1.准备实验环境:(1)启动Visual Studio 201X 或者Codeblocker等C程序开发的IDE (2)如果保留了实验1的工程项目,则可以直接双击工程项目文件夹中的.sln 文件打开它即可。

否则,按实验1的做法,创建一个Win32控制台应用程序(即ConsoleApplication)工程,以自己的姓名全拼音为工程名称。

可能有些同学已经忘记了,我们再指导一遍:首先新建项目:2.理解分析程序,熟悉基本的C程序输入输出。

1)给工程新建一个源程序文件,取名为"你的姓名全拼_3_1.c",并将以下程序编写进该源程序保存:#include <stdio.h>int main(){int a=25;double d = 4321.123456789012345;char c = 'T';printf("你的姓名_3_1:理解输出!\n");/* 改姓名哦*/printf("a = :%d;%5d;%-5d;%+05d!\n",a,a,a,-a);printf("a = :%5x;%o!\n",a,a);printf("d = :%f;%15f;%8.3f;%20.15f;%.2f!\n",d,d,d,d,d);printf("c = :%c;%5c;%-5c!\n",c,c,c);}运行该程序,将运行的结果截图放在下面:程序运行的结果图:根据以上运行结果回答以下实验问题:1)格式符里的“-”起什么作用?修改数值符号为负号2)格式符里的数字起什么作用?表示按规定的固定位宽输出整形数值,如果不足,则在前面补空格,如果超过,则按实际输出2)结束程序的运行,将程序按下图进行修改,再次运行,观察结果:程序运行的结果截图:回答问题:这是什么原因呢?(提示这个问题潘sir上课是特别讲过的哦!!!)数据类型有有效范围,若输入数值超过,则会溢出,按数值倒回输出结果。

3)结束程序的运行,将程序按下图进行修改,再次运行,观察结果:程序运行的结果截图:回答问题:结合这两步的结果,你得到什么结论?(数据类型)可对数据进行强制格式转换,4)将程序修改成如下代码:#include<stdio.h>int main(){int a,b,c;printf("请输入两个数:");scanf("%d%d",&a,&b);c=a/b;printf("\n结果:%d\n",c);}运行该程序,输入:50空格4,将运行的结果截图放在下面:程序运行的结果截图:回答问题:这个结果是你预期的吗?如果不是,那你认为是哪里出乎了你的意料呢?如果是,那请你写出为什么是这个结果?这个结果是我预期的由c语言除法定义可知5)重新运行该程序,输入:50,4,将运行的结果截图放在下面:程序运行的结果截图:回答问题:这个结果是你预期的吗?如果不是,那你认为是哪里出乎了你的意料呢?如果是,那请你写出为什么是这个结果?不是格式符本来没有逗号,但是输入了6)重新运行该程序,输入:50空格4.5,将运行的结果截图放在下面:程序运行的结果截图:回答问题:这个结果是你预期的吗?如果不是,那你认为是哪里出乎了你的意料呢?如果是,那请你写出为什么是这个结果?是,scanf输入格式符为%d,而输入4.5,a只能正确赋值到4,所以结果仍然为50/4的结果。

7)重新运行该程序,输入:50空格0,将运行的结果截图放在下面:程序运行的结果截图:回答问题:这个结果是你预期的吗?如果不是,那你认为是哪里出乎了你的意料呢?如果是,那请你写出为什么是这个结果?这个结果不是我预期的0不能作为除数8)将程序修改成如下代码:#include<stdio.h>int main(){double a,b,c;printf("请输入两个数:");scanf("%lf%lf",&a,&b);/* 注意这里是两个小写的L*/c=a/b;printf("\n结果:%f\n",c);}运行该程序,输入:50.0空格4.0,将运行的结果截图放在下面:程序运行的结果截图:回答问题:这个结果是你预期的吗?如果不是,那你认为是哪里出乎了你的意料呢?如果是,那请你写出为什么是这个结果?这个结果是我预期的结果a,b都为double类型数据,做除法时严格按照小数除法,不省9)将程序中的scanf中的两个%lf修改成%f,重新运行该程序,输入:50.0空格4.0,将运行的结果截图放在下面:程序运行的结果截图:回答问题:这个结果是你预期的吗?如果不是,那你认为是哪里出乎了你的意料呢?如果是,那请你写出为什么是这个结果?这个结果不是我预期的Scanf函数是通过指针指向变量的,%f告诉scanf函数在所传地址位置上存储一个float型值,而%lf告诉scanf函数在所传地址位置上存储一个double。

输入时,float型用%f,double型用%lf3.补充完善程序。

1)将"你的姓名全拼_3_1.c"从工程中排除出去,然后给工程新建一个源程序文件,取名为"你的姓名全拼_3_2.c"。

程序的功能是输入一个小写字母,输出其大写字母。

但程序并不完整,请将其补充完整。

请勿改动程序的任何内容,仅将程序中的横线改成所需的表达式或语句。

提示:字母都是ASCII码表示的,且字母的ASCII码顺序是按其字典序排列的。

’A’的ASCII码是65,’a’的ASCII码是97,那我们很容易发现它们之间的关系了。

#include<stdio.h>int main(void){char c;printf("你的姓名_3_2:小写转大写!\n"); /* 改姓名哦*/ printf("lowercase character:");scanf(_____%c,&c______); /* 键盘输入一个字母存入c*/printf("uppercase character is :__”%c”__", ___c-32___);}程序的运行结果参考如下:运行你的程序,输入t的运行结果:(应该输出T)运行你的程序,输入g的运行结果:(应该输出G)4.学习扩展程序。

1)将"你的姓名全拼_3_2.c"从工程中排除出去,然后给工程新建一个源程序文件,取名为"你的姓名全拼_3_3.c"。

程序的功能是输出一个随机整数序列。

#include<stdio.h>#include<time.h>#include<stdlib.h>int main(){printf("你的姓名_3_3:随机数应用!\n"); /* 改姓名哦*//* srand是用随机种子来初始化随机数发生器 *//* 以免每次都是同一个随机序列 */srand((unsigned)time( NULL ));/* 每一个rand()就产生一个随机整数 */printf("a random number:%d\n",rand()%(n-100)+100);printf("a random number:%d\n",rand());printf("a random number:%d\n",rand());printf("a random number:%d\n",rand());printf("a random number:%d\n",rand());printf("a random number:%d\n",rand());printf("a random number:%d\n",rand());printf("a random number:%d\n",rand());printf("a random number:%d\n",rand());printf("a random number:%d\n",rand());}至少运行该程序3次,记录3次的输出结果你的程序及运行结果:2)将程序中的srand那行注释掉。

再运行3次程序,观察结果不用截屏了,回答这3次的结果你看到了什么,跟其它同学的一样吗?三次运行的结果是一样的,每次都是同一个随机数列。

3)取消srand那行的注释,恢复到第1步的状态。

现在我们希望程序输出10个随机的0~999的整数,请你改造程序实现。

(提示:取一个0~X之间的整数,就是一个简单的数学方法,简单得来不得了)你的程序及运行结果:#include<stdio.h>#include<time.h>#include<stdlib.h>int main(){printf("丁家雄:随机数应用!\n"); /* 改姓名哦 *//* srand是用随机种子来初始化随机数发生器 *//* 以免每次都是同一个随机序列 */srand((unsigned)time( NULL ));/* 每一个rand()就产生一个随机整数 */printf("a random number:%d\n",rand()%1000+0);printf("a random number:%d\n",rand()%1000+0);printf("a random number:%d\n",rand()%1000+0);printf("a random number:%d\n",rand()%1000+0);printf("a random number:%d\n",rand()%1000+0);printf("a random number:%d\n",rand()%1000+0);printf("a random number:%d\n",rand()%1000+0);printf("a random number:%d\n",rand()%1000+0);printf("a random number:%d\n",rand()%1000+0);printf("a random number:%d\n",rand()%1000+0);}4)再来,现在我们希望程序输出10个随机的3位整数(即100~999),请你改造程序实现。

相关主题