目录实验1 运行简单的C程序 (1)实验2 练习使用基本数据类型和算术运算符 (5)实验3 使用输入、输出函数 (7)实验4 选择结构程序设计 (11)实验5 分支语句的使用-模拟ATM取款机界面 15实验6 循环语句的使用——猜数字游戏 (17)实验7 一维数组的应用 (19)实验8 二维数组的应用 (22)实验9 建立和使用函数 (24)实验10 函数参数的传递 (26)实验11 嵌套与递归调用的实现 (29)实验12 练习多文件程序的编译和运行 (30)实验13 结构体和共用体 (32)实验14 文件 (34)实验1 运行简单的C程序一.实训目的:1.熟悉TC运行环境2.练习简单C程序的编写3.熟练掌握C程序的上机运行步骤二.实训内容:1.实验要求:编程求37+29的值,熟悉TC运行环境2.分析与设计:编写一个main()函数,将数据37和29分别用变量保存,然后用另一个变量存放两个变量的和,最后将和变量的值输出。
3.源代码:有下面的C程序,目的是想计算两个整数的和。
:main(){int a,b;sum;a=37;b=29;sum=a+bprintf(“sum=%d”,s);调试:1、静态地检查上述程序,改正程序中的错误。
2、在编辑状态下照原样键入上述程序。
3、编译并运行上述程序,记下所给出的出错信息。
4、按照事先静态检查后所改正的情况,进行纠错。
5、再编译执行纠错后的程序。
如还有错误,再编辑改正,直到不出现语法错误为止。
6、标识符和程序的逻辑错误。
修改上面的程序,观察运行结果:⑴将程序中的表达式“a+b”的“a”改为“A”,然后运行程序。
⑵将程序中的表达式“a+b”修改为“a-b”,然后运行程序。
第一项内容用于验证C语言中标识符的特性,当用“A”取代“a”后,程序将不能运行,说明作为标识符“A”和“a”是不等价的。
请读者自己进行类似的替换,然后察看程序的运行结果。
如,将程序中的“printf”改为“PRINTF”,然后运行程序看结果。
第二项实验内容说明了程序的逻辑错误情况。
若把“a+b”误写为“a-b”,程序会顺利编译运行,但显然不是加法运算的结果。
附Turbo C 2.0集成环境的使用:在主教材的第1章,我们介绍了使用TC2.0上机实现一个C语言程序的一般步骤:编辑--编译--连接--运行。
按照所述步骤,操作如下:⑴启动TC 2.0。
⑵使用“File→New”命令或直接使用“Edit”命令,使TC 2.0进入编辑状态,录入编辑上面的源程序。
⑶源程序录入完毕后,使用“Comple→Compile to OBJ”对源程序进行编译,如果源程序存在语法错误,这时编译系统会把程序中的错误指示出来。
发现错误后,需要立即修改源程序,然后重新编译。
编译⑷编译无误后,使用“Comple→Link EXE file”连接目标代码,生成可执行文件,这个文件将由运行命令“Run”运行。
上面的⑶、⑷两个步骤,也可以使用“Comple→Build all”或“F9”功能键一步完成。
连接目标代码⑸连接完成后,使用“Run”命令,或者使用“Ctrl+F9”组合键运行程序。
运行最后程序运行过程瞬间结束,要察看程序运行结果,需要切换到运行屏幕,用组合健“Alt+F5”实现。
按Alt+F5后将看到屏幕显示如下结果:按任意键,屏幕返回程序状态。
小技巧:对一个未经编译和连接的源程序,TC2.0也可以直接运行它,因此,运行一个C语言程序时,编译和连接的操作步骤可以省略,即编辑好一个源程序后,直接使用Run命令运行它。
此时,并非编译、连接过程不存在了,而是“Run”命令运行程序时,因找不到当前程序的可执行文件,而自动启动编译命令和连接命令。
只有当编译、连接正常进行后,程序才会被运行。
因此,上面的过程可以简化为两个操作步骤:⑴启动TC2.0,录入编辑源程序。
⑵按“Ctrl+F9”组合键运行程序。
特别提示:⑴保存源程序是一个重要的操作环节。
在编辑源程序的过程中或源程序编辑完成后,及时保存源程序是十分必要的,但初学者往往忽视这一环节。
操作步骤如下:①按“F2”功能键,出现图1-1所示屏幕。
白色背景窗口显示了系统为当前程序设定的默认存储位置(c:\myc,该存储位置因系统而异,可以改变),将默认文件名NONAME.C改为自己命名的f1.c。
实验2 练习使用基本数据类型和算术运算符一.实训目的:1.练习使用基本类型的变量进行编程2.练习使用C的运算符二.实训内容:1.实验要求:熟练使用运算符(%,++,--)2.分析与设计:求余运算符要求两个操作数都必须是整数;++和-- 要看清是先使用还是先自增(减)3.源代码:程序1:取出一个三位整数的各个位,并输出main(){int x=123; int c1,c2,c3;c1=x%10;c2=x/10%10;c3=x/100;printf(“%d,%d,%d\n”,c3,c2,c1);}运行结果为:1,2,3调试:1)若将最后一句改为printf(“%d%d%d”,c3,c2,c1);结果会是什么?与printf(“%d”,x);输出的结果有什么不同.程序2:练习自增和自减运算符的使用main(){int x=2,y,z;y=(++x)+(x++)+(++x);z=(x--)+(--x)+(x--);printf(“x=%d,y=%d,z=%d\n”,x,y,z);}运行结果:x=2,y=12,z=12调试:如果再加一句printf(“%d,%d,%d\n”,++z,z++,++z);运行结果是什么:这一句用于验证,printf 函数输出表列中的求值顺序。
不同的编译系统不一定相同,可以从左到右,也可从右到左。
Turbo C 是按从右到左进行的实验3 使用输入、输出函数一.实训目的:熟练使用格式输出函数printf()和格式输入函数scanf()二.实训内容:1.实验要求: 格式输入函数scanf()和格式输出函数printf()的使用2.分析与设计: 输入函数中的普通字符需要原样输入,并注意分隔符的使用;输出函数中的格式控制符和输出项数要一一对应。
3.源代码:程序1:为使得a=1,b=2,c=‘A’,d=5.5,在键盘上如何输入?#include <stdio.h>main(){int a,b;char c;float d;scanf(“a=%d b=%d”,&a,&b);scanf(“%c %e”,&c,&d);}调试:1)加上输出函数语句,以帮助核对输出结果,输出语句为:printf(“a=%d,b=%d,c=%c,d=%f”,a,b,c,d);2)运行程序,输入:a=1 b=2A 5.5会产生什么结果,和要求值是否相同?3)若输入a=1 b=2A 5.5会产生什么结果,和要求值是否相同?程序2:编辑运行下面的程序,并根据执行结果分析程序中各个语句的作用#include <stdio.h>main(){int a, b;float d, e;char c1, c2;double f, g;long m, n;unsigned int p, q;a=61; b=62; /*第十行*/c1='a'; c2='b';d=5.67; e=-6.78;f=1234.56789; g=0.123456789;m=50000; n=-60000;p=32768; q=40000;printf("a=%d,b=%d\nc1=%c,c2=%c\n",a,b,c1,c2);printf("d=%6.2f,e=%6.2f\n",d,e);printf("f=%15.6f,g=%15.10f\n",f,g);printf("m=%ld,n=%ld\np=%u,q=%u\n",m,n,p,q);}调试:⑴运行所给出的源程序,对照结果分析各语句的作用。
⑵将程序中的第二、第三个printf语句修改为如下形式,然后运行程序,察看结果。
printf("d=%-6.2f,e=%-6.2f\n",d,e);printf("f=%-15.6f,g=%-15.10f\n",f,g);⑶将上述两个printf语句进一步修改为如下形式,然后运行程序,察看结果。
printf("d=%-6.2f\te=%-6.2f\n",d,e);printf("f=%-15.6f\tg=%-15.10f\n",f,g);⑷将程序的第10-15行修改为如下语句:a=61;b=62;c1='a';c2='b';f=1234.56789;g=0.123456789;d=f;e=g;p=a=m=50000;q=b=n=-60000;运行程序,并分析结果。
⑸修改⑴中的程序,不使用赋值语句,而用下面的scanf语句为a、b、c1、c2、d、e输入数据:scanf("%d%d%c%c%f%f",&a,&b,&c1,&c2,&d,&e);①请按照程序原来中的数据,选用正确的数据输入格式,为上述变量提供数据。
②使用如下数据输入格式,为什么得不到正确的结果?输入数据:61 62 a b 5.67 -6.78⑹进一步修改⑸中使用的程序,使f和g的值用scanf()函数输入。
⑺进一步修改上面的程序,使其他所有变量的值都改用scanf()函数输入。
①参考程序#includevoid main(){int a, b;float d, e;char c1, c2;double f, g;long m, n;unsigned int p, q;printf("Input(a,b,c1,c2,d):");scanf("%d%d%c%c%f%f",&a,&b,&c1,&c2,&d,&e);printf("Input(f,g):");scanf("%lf%lf",&f,&g);printf("Input(m,n,p,q):");scanf("%ld%ld%u%u",&m,&n,&p,&q);printf("a=%d,b=%d\nc1=%c,c2=%c\n",a,b,c1,c2);printf("d=%-6.2f,e=%-6.2f\n",d,e);printf("f=%-15.6f,g=%-15.10f\n",f,g);printf("m=%ld,n=%ld\np=%u,q=%u\n",m,n,p,q);}②数据输入格式Input(a,b,c1,c2,d):61 62ab5.67 -6.78Input(f,g):1234.567890 0.1234567890Input(m,n,p,q):50000 -60000 32678 40000⑻修改⑺中的程序,使c1、c2的数据用getchar()函数输入,用 putchar()函数输出。