C语言上机指导 指导教师:李辉李晓丽 东北电力大学 电气工程学院 2006年3月
C 语言上机指导 指导教师:李辉 李晓丽 东北电力大学 电气工程学院 2006 年 3 月
实验2数据类型、运算符和表达式 1.实验目的 ◆掌握c语言数据类型,熟悉如何定义一个整形、字符型和实型的变量, 以及对他们赋值的方法。 ◆掌握不同的类型数据之间赋值的规律 ◆学会使用c的有关算术运算符,以及包含这些运算符的表达式,特别是 目 加(++)和自减(-)运算符的使用 ◆进一步熟悉C程序的编辑、编译、连接和运行的过程 2.实验内容和步骤 输入并运行下面的程序 include void maino char c1 c2: C1=a printf((“%c%cⅦn”,c1,c2); (1).运行此程序 2).在此基础上增加一个语句: printf("d%dn",c1, C2); 再运行并分析结果。 (3),再将第2行改为 int cl c2: 再使之运行并观察结果。 (4).再将第3、4行改为: c1=a; *不用单撤号 c2=b 再使之运行分析其运行结果
实验 2 数据类型、运算符和表达式 1. 实验目的 掌握 C 语言数据类型,熟悉如何定义一个整形、字符型和实型的变量, 以及对他们赋值的方法。 掌握不同的类型数据之间赋值的规律。 学会使用 C 的有关算术运算符,以及包含这些运算符的表达式,特别是 自加(++)和自减(--)运算符的使用。 进一步熟悉 C 程序的编辑、编译、连接和运行的过程。 2. 实验内容和步骤 输入并运行下面的程序 #include void main() { char c1, c2; c1 = 'a'; c2 = ‘b’; printf (“%c %c\n”, c1, c2); } (1). 运行此程序。 (2). 在此基础上增加一个语句: printf(“%d%d\n”,c1,c2); 再运行,并分析结果。 (3). 再将第 2 行改为: int c1,c2; 再使之运行,并观察结果。 (4). 再将第 3、4 行改为: c1 = a; /* 不用单撇号 */ c2 = b; 再使之运行,分析其运行结果
(5).再将第3、4行改为: 用双撒号 c2="b”; 再使之运行分析其运行结果。 (6)再将第3、4行改为: c1=300 /*用大于255的整数 再使之运行分析其运行结果 ◆输入并运行教材第3章习题36给出的程序 include void maino char c1=a’,c2=“b’,c3=c,c4=101,c5=1116’; printf(“a%cb%cltc% cItabc\n”,c1,c2,c3) printf("tIb%c%c",c4, c5); 在上机前先用人工分析程序,写出应得结果,上机后将二者对照 ◆输入并运行下面的程序 include void main( t a b unsigned c, d long e, f a=100 e=50000 f=32767; c= a d= b: printf("%d, %dIn", a, b); f(“%u%uin",a,b); printf(%u,%uln”,c,b) c=a=e d= b= f printf("%d, %dIn", a, b); printf("%u, uIn",, d); 请对照程序和运行结果分析 (1).将一个负整数赋给一个无符号的变量,会得到什麽结果。画出它们在内存中 的表示形式。 (2),将一个大于32765的长整数赋给整形变量,会得到什麽结果。画出它们在 内存中的表示形式 (3)将一个长整数赋给无符号的变量,会得到什麼结果(分别考虑该长整数的值 大于或等于65535以及小于65535的情况)。画出它们在内存中的表示形式。 同学们可以改变程序中各变量的值以便比较例如:a=65580,b=40000 e=65535,f=65580 输入习题310
(5). 再将第 3、4 行改为: c1 = ”a”; /* 用双撇号 */ c2 = ”b”; 再使之运行,分析其运行结果。 (6). 再将第 3、4 行改为: c1 = 300; /* 用大于 255 的整数 */ c2 = 400; 再使之运行,分析其运行结果。 输入并运行教材第 3 章习题 3.6 给出的程序 #include void main() { char c1 = ‘a’, c2 = ‘b’, c3 = ‘c’, c4 = ‘\101’, c5 = ‘\116’; printf (“a%c b%c\tc%c\tabc\n”,c1, c2, c3); printf(“\t\b%c%c”, c4, c5); } 在上机前先用人工分析程序,写出应得结果,上机后将二者对照。 输入并运行下面的程序 #include void main() { int a,b; unsigned c,d; long e,f; a = 100; b = -100; e = 50000; f = 32767; c = a; d = b; printf(“%d,%d\n”, a, b); printf(“%u,%u\n”, a, b); printf(“%u,%u\n”, c, b); c = a = e; d = b = f; printf(“%d,%d\n”, a, b); printf(“%u,%u\n”, c, d); } 请对照程序和运行结果分析: (1). 将一个负整数赋给一个无符号的变量,会得到什麽结果。画出它们在内存中 的表示形式。 (2). 将一个大于 32765 的长整数赋给整形变量,会得到什麽结果。画出它们在 内存中的表示形式。 (3). 将一个长整数赋给无符号的变量,会得到什麽结果(分别考虑该长整数的值 大于或等于 65535 以及小于 65535 的情况)。画出它们在内存中的表示形式。 同学们可以改变程序中各变量的值,以便比较。例如:a = 65580, b = -40000, e = 65535, f = 65580。 输入习题 3.10
include void maino int i,j,m, n printf("%d, %d, % d, %d",i,, m, n) ).运行程序,注意i、j、m、n各变量的值,分别作以下改动并运行 2).将第4、5行改为: m=++ 再运行。 3).将程序改为: include void maino int i,j: =8 printf((“%d,%d”,i+t,j+); 4).在(3)的基础上,将 printf.语句改为 printf((“%d,%d”,++i,+; (5)再将 printf语句改为: printf(“%d,%d,%d%d”,i,ji++,j++) (6),将程序改为 include void main( int i, j, m=0, n=0; =8; j=10 m+=++;n-=-]; printf("j=%d j=%d, m=%d, n=%d'", i, j, m, n); 按习题37的要求编程序并上机运行 该题的要求是 要将 China译成密码,译码规律是:用原来字母后面的第4个字母代替原 来的字母。例如,字母A后面第4个字母是”E,用”E代替”A”。因此,” China 应译为 GImme”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变 量的值分别为C、"h、'、'n'、'a,经过运算,使c1、c2、c3、c4、c5分别 变为G'、T、m'、r、'e、,并输出。 ①输入事先已编好的程序,并运行该程序。分析是否符合要求 ②改变c1、c2、c3、c、c5、的初值为:T、o、'd、'a'、y,对译码规 律作如下补充:W用A代替,X用B代替,”Y用℃代替,z用D代替。修
#include void main() { int i,j,m,n; i = 8; j = 10; m = ++i; n = j++; printf(“%d,%d,%d,%d”, i, j, m, n); } (1). 运行程序,注意 i、j、m、n 各变量的值,分别作以下改动并运行。 (2). 将第 4、5 行改为: m = i++; n = ++j; 再运行。 (3). 将程序改为: #include void main() { int i,j; i = 8; j = 10; printf(“%d,%d”, i++, j++); } (4). 在(3)的基础上,将 printf 语句改为: printf(“%d,%d”, ++i, ++j); (5). 再将 printf 语句改为: printf(“%d,%d,%d,%d”, i, j, i++, j++); (6). 将程序改为: #include void main() { int i, j, m=0, n=0; i = 8; j = 10; m+= i++; n-= --j; printf(“i=%d,j=%d,m=%d,n=%d”, i, j, m, n); } 按习题 3.7 的要求编程序并上机运行 该题的要求是: 要将”China”译成密码,译码规律是:用原来字母后面的第 4 个字母代替原 来的字母。例如,字母”A”后面第 4 个字母是”E”,用”E”代替”A”。因此,”China” 应译为”Glmre”。请编一程序,用赋初值的方法使 c1、c2、c3、c4、c5 五个变 量的值分别为’C’、’h’、’i’、’n’、’a’,经过运算,使 c1、c2、c3、c4、c5 分别 变为’G’、’l’、’m’、’r’、’e’、,并输出。 ①输入事先已编好的程序,并运行该程序。分析是否符合要求。 ②改变 c1、c2、c3、c4、c5、的初值为:’T’、’o’、’d’、’a’、’y’,对译码规 律作如下补充:’W’用’A’ 代替,’X’用’B’代替,’Y’用’C’代替,’Z’用’D’代替。修
改程序并运行 ③将译码规律修改为:将字母用它前面的第4个字母代替,例如:E用A代 替,2z用U代替,D用z代替,C用Y代替,B用X代替,'A用V代替。修 改程序并运行。 实验3最简单的C程序设计 1.实验目的 掌握c语言中使用最多的一种语句—赋值语句的使用方法 掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 2.实验内容和步骤 ◆掌握各种格式转换符的正确使用方法 (1).输入程序 #include void maino int a, b: float d, e; charal. c2 double f, g: long m, n; unsigned int p, g; a=61;b=62 c1='a’;c2=b’; d=3.56;e=-687; f=3157890121;g=0123456789; m=50000;n=-60000; p=32768;q=40000 c? printf("a=%d, b=%dInc1=%c, c2=%clnd=%6.2f, e=%6.2fin" a, b, c1 d,e); n, printf(f=%156f, g=%1512f\nm=%ld, n=%ldInp=%u, q=%uln", f, g, m, p,q); (2),运行此程序并分析结果。 (3).在此基础上,修改程序的第8-13行: a=61;b=62 c1='a;c2=b f=3157890121:g=0.123456789; d= f. p=a=m=50000;q=b=n=-60000; 运行程序分析结果 (4)改用 scanf函数输入数据而不用赋值语句, scanf i函数如下: o, scanf("%d,%,%,%%;%‰%,%,‰u,%u”,&a,&b,&c1&c2, e,&f,&g,&m,& 输入的数据如下
改程序并运行。 ③将译码规律修改为:将字母用它前面的第 4 个字母代替,例如:’E’用’A’ 代 替,’Z’用’U’代替,’D’用’Z’代替,’C’用’Y’代替,’B’用’X’代替,’A’用’V’代替。修 改程序并运行。 实验 3 最简单的 C 程序设计 1. 实验目的 掌握 C 语言中使用最多的一种语句——赋值语句的使用方法。 掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 2. 实验内容和步骤 掌握各种格式转换符的正确使用方法 (1). 输入程序 #include void 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 = 3.56; e = -6.87; f = 3157.890121; g = 0.123456789; m = 50000; n = -60000; p = 32768; q = 40000; printf(“a=%d, b=%d\nc1=%c, c2=%c\nd=%6.2f, e=%6.2f\n”, a, b, c1, c2, d, e); printf(“f=%15.6f, g=%15.12f\nm=%ld, n=%ld\np=%u, q=%u\n”, f, g, m, n, p, q); } (2). 运行此程序并分析结果。 (3). 在此基础上,修改程序的第 8-13 行: a = 61; b = 62; c1 = ’a’; c2 = ’b’; f = 3157.890121; g = 0.123456789; d = f; e = g; p = a = m = 50000; q = b = n = -60000; 运行程序,分析结果。 (4). 改用 scanf 函数输入数据而不用赋值语句,scanf 函数如下: scanf(“%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u”,&a,&b,&c1,&c2, &d,&e,&f,&g,&m,&n,&p,&q); 输入的数据如下:
ab356-6873157890121012345678950000 -600003767840000 (说明:和ld格式符分别用于输入 double型和long型数据)分析运行 结果。 (5)在(4)的基础上将prin语句改为: printf("a=%d, b=%dnc1=%C, c2=%cnd=%156f, e=%1512f\n", a, b, c1 c printf("f=%f, g=%fInm=%d, n=%dInp=%d, q=%dIn",f, g, m, n, p, q 运行程序。 (6),将p、q改用%格式符输出。 (7)将 scanf函数中的%和%d改为%和%,运行程序并观察分析结果。 ◆按习题48要求编写程序 题目为: 设圆半径=15,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、 圆柱体积。用 scanf输入数据,输入计算结果。输出时要有文字说明,取小数 点后两位数字。 ◆编程序,用 getchar函数读入两个字符给c1、c2,然后分别用 putchar 函数和 printf函数输出这两个字符。 上机运行程序,比较用prn和 putchar函数输出字符的特点。 实验4逻辑结构程序设计 1.实验目的 ◆了解c语言表示逻辑量的方法(以0代表“假”,以非0代表“真”) ◆学会正确使用逻辑运算符和逻辑表达式。 ◆熟练掌握语句和 switch语句。 结合程序掌握一些简单的算法。 学习调试程序。 2.实验内容 本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程 (1)有一函数 y={2x-1(1≤x<10) 3x-11(x≥10) 用 scanf函数输入x的值,求y值。(习题55) 运行程序,输入x的值(分别为x1、1sx<10、心10三种情况),检查输出 的y值是否正确 2).给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90 分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以
61 , 62 , a,b,3.56,-6.87,3157,890121,0.123456789,50000 , -60000,37678,40000↙ (说明:lf 和 ld 格式符分别用于输入 double 型和 long 型数据)分析运行 结果。 (5). 在(4) 的基础上将 printf 语句改为: printf(“a=%d, b=%d\nc1=%c, c2=%c\nd=%15.6f, e=%15.12f\n”, a, b, c1, c2, d, e); printf(“f=%f, g=%f\nm=%d, n=%d\np=%d, q=%d\n”, f, g, m, n, p, q); 运行程序。 (6). 将 p、q 改用%o 格式符输出。 (7). 将 scanf 函数中的%lf 和%ld 改为%f 和%d,运行程序并观察分析结果。 按习题 4.8 要求编写程序 题目为: 设圆半径 r=1.5,圆柱高 h=3,求圆周长、圆面积、圆球表面积、圆球体积、 圆柱体积。用 scanf 输入数据,输入计算结果。输出时要有文字说明,取小数 点后两位数字。 编程序,用 getchar 函数读入两个字符给 c1、c2,然后分别用 putchar 函数和 printf 函数输出这两个字符。 上机运行程序,比较用 printf 和 putchar 函数输出字符的特点。 实验 4 逻辑结构程序设计 1. 实验目的 了解 C 语言表示逻辑量的方法(以 0 代表“假”,以非 0 代表“真” )。 学会正确使用逻辑运算符和逻辑表达式。 熟练掌握 if 语句和 switch 语句。 结合程序掌握一些简单的算法。 学习调试程序。 2. 实验内容 本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程 序。 (1). 有一函数: − − = 3 11 ( 10) 2 1 (1 10) ( 1) x x x x x x y 用 scanf 函数输入 x 的值,求 y 值。(习题 5.5) 运行程序,输入 x 的值(分别为 x<1、1≤x<10、x≥10 三种情况),检查输出 的 y 值是否正确。 (2). 给出一个百分制成绩,要求输出成绩等级 A、B、C、D、E。90 分以上为 A,81-89 分为 B,70-79 分为 C,60-69 分为 D,60 分以
下为E。(习题56)。 ①事先编好程序,要求分别用近语句和 switch语句实现。运行程序,并检 查结果是否正确 ②再运行一次程序,输入分数为负值(如一70),这显然是输入时出错,不 应给出等级。修改程序,使之能正确处理任何数据。当输入数据大于100或小于 0时,通知用户“输入数据错,程序结束。 (3)给一个不多于5位的正整数,要求:①求出它是几位数;②分别 打印出每一位数字;⑧按逆序打印出各位数字,例如原数为321,应输 出123。(习题57) 应准备以下测试数据: 要处理的数为1位正整数; 要处理的数为2位正整数; 要处理的数为3位正整数; 要处理的数为4位正整数 要处理的数为5位正整数。 除此之外,程序还应当对不合法的输入作必要的处理。例如: 输入负数 输入的数超过5位(如123456)。 4)输入4个整数,要求按由小到大顺序输出。 得到正确结果后,修改程序使之按由大到小顺序输出。(习题59) (5),计算DNA分子中A、G、C、T四种碱基的分子量。 6)根据输入的三角形的三边判断是否能组成三角形,若可以则输出 它的面积和三角形的类型。 (7).现有十二个小球其中一个球的重量与其它十一个的重量不相同, 但不知道是轻还是重。试用天平称三次,把这个非标准球找出来,并指 出它比标准球是轻还是重 要求: (1),用嵌套的选择结构编写程序; (2).调试程序时,必须把十二个球或轻或重共24种可能性都找出来。 实验5循环控制 1.实验目的 熟悉掌握用whie语句, do-while语句和for语句实现循环的方法。掌握在 程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。进一步 学习调试程序。 2.实验内容 编程序并上机调试运行。 输入两个正整数m和n,求它们的最大公约数和最小公倍数。 (习题61) 在运行时,输入的值m>n,观察结果是否正确 再输入时,使m<n,观察结果是否正确
下为 E。(习题 5.6)。 ① 事先编好程序,要求分别用 if 语句和 switch 语句实现。运行程序,并检 查结果是否正确。 ② 再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不 应给出等级。修改程序,使之能正确处理任何数据。当输入数据大于 100 或小于 0 时,通知用户“输入数据错”,程序结束。 (3). 给一个不多于 5 位的正整数,要求:①求出它是几位数;②分别 打印出每一位数字;③按逆序打印出各位数字,例如原数为 321,应输 出 123。(习题 5.7) 应准备以下测试数据: ⚫ 要处理的数为 1 位正整数; ⚫ 要处理的数为 2 位正整数; ⚫ 要处理的数为 3 位正整数; ⚫ 要处理的数为 4 位正整数; ⚫ 要处理的数为 5 位正整数。 除此之外,程序还应当对不合法的输入作必要的处理。例如: ⚫ 输入负数; 输入的数超过 5 位(如 123 456)。 (4). 输入 4 个整数,要求按由小到大顺序输出。 得到正确结果后,修改程序使之按由大到小顺序输出。(习题 5.9) (5). 计算 DNA 分子中 A、G、C、T 四种碱基的分子量。 (6). 根据输入的三角形的三边判断是否能组成三角形,若可以则输出 它的面积和三角形的类型。 (7). 现有十二个小球,其中一个球的重量与其它十一个的重量不相同, 但不知道是轻还是重。试用天平称三次,把这个非标准球找出来,并指 出它比标准球是轻还是重。 要求: (1). 用嵌套的选择结构编写程序; (2). 调试程序时,必须把十二个球或轻或重共 24 种可能性都找出来。 实验 5 循环控制 1. 实验目的 熟悉掌握用 while 语句,do-while 语句和 for 语句实现循环的方法。掌握在 程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。进一步 学习调试程序。 2. 实验内容 编程序并上机调试运行。 (1). 输入两个正整数 m和 n,求它们的最大公约数和最小公倍数。 (习题 6.1) 在运行时,输入的值 m>n,观察结果是否正确。 再输入时,使 m<n,观察结果是否正确
修改程序,不论m和n为何值(包括负整数),都能得到正确结果。 输入一行字符,分别统计出其中的英文字母、空格、数字和 其它字符的个数。(习题62) 在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和 其它字符的个数。 3) 用牛顿迭代法求方程2x34x2+3x6=0在1.5附近的根。(习 题612) 在得到正确结果后,请修改程序使所设的x初值由15改变为100、1000 10000,再运行,观察结果,分析不同的x初值对结果有没有影响,为什么? 修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值 对迭代的次数有无影响 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半, 还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多 吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早 上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。(习题610) 在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再 吃两个。请修改程序,并运行,检查结果是否正确。 实验6数组 1.实验目的 ◆掌握一维数组和二维数组的定义、赋值和输入输出的方法; ◆掌握字符数组和字符串函数的使用 ◆掌握与数组有关的算法(特别是排序算法) 2.实验内容 编程序并上机调试运行。 (1).用选择法对10个整数排序。10个整数用 scanf函数输入。(习 题72) (2).有15个数存放在一个数组中,输入一个数,要求用折半查找法 找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无 此数”。以15个数用赋初值的方法在程序中给出。要找的数用 scanf函 数输入。(习题79) (3),将两个字符串连接起来,不要用 strcat函数。 (4).找出一个二维数组的“鞍点”即该位置上的元素在该行上最大 在该列上最小。也可能没有鞍点。(习题78) 应当至少准备两组测试数据 ①二维数组有鞍点 98020540 90-60961 210-310 ②二维数组没有鞍点 98020540 90-601961
修改程序,不论 m 和 n 为何值(包括负整数),都能得到正确结果。 (2). 输入一行字符,分别统计出其中的英文字母、空格、数字和 其它字符的个数。(习题 6.2) 在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和 其它字符的个数。 (3). 用牛顿迭代法求方程 2x3 -4x2+3x-6=0 在 1.5 附近的根。(习 题 6.12) 在得到正确结果后,请修改程序使所设的 x 初值由 1.5 改变为 100、1000、 10000,再运行,观察结果,分析不同的 x 初值对结果有没有影响,为什么? 修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的 x 初始值 对迭代的次数有无影响。 (4). 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半, 还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多 吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早 上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。(习题 6.10) 在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再 吃两个。请修改程序,并运行,检查结果是否正确。 实验 6 数组 1. 实验目的 掌握一维数组和二维数组的定义、赋值和输入输出的方法; 掌握字符数组和字符串函数的使用; 掌握与数组有关的算法(特别是排序算法)。 2. 实验内容 编程序并上机调试运行。 (1). 用选择法对 10 个整数排序。10 个整数用 scanf 函数输入。(习 题 7.2) (2). 有 15 个数存放在一个数组中,输入一个数,要求用折半查找法 找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无 此数”。以 15 个数用赋初值的方法在程序中给出。要找的数用 scanf 函 数输入。(习题 7.9) (3). 将两个字符串连接起来,不要用 strcat 函数。 (4). 找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大, 在该列上最小。也可能没有鞍点。(习题 7.8) 应当至少准备两组测试数据: ①二维数组有鞍点 9 80 205 40 90 -60 96 1 210 -3 101 89 ②二维数组没有鞍点 9 80 205 40 90 -60 196 1
210-310189 54156 用 scanf函数从键盘输入数组各元素的值,检查结果是否正确。题目并未指 定二维数组的行数和列数,程序应能处理任意行数和列数的数组。因此,从理论 上来说,应当准备许多种不同行数和列数的数组数据,但这样的工作量太大 般来说不需要这样做,只需准备典型的数据即可。 如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必 用 scanf函数。请同学们修改程序以实现之 实验7函数 1.实验目的 ◆掌握定义函数的方法; ◆掌握函数实参与形参的对应关系以及“值传递”的方式 ◆掌握函数的嵌套调用和递归调用的方法 ◆掌握全局变量和局部变量动态变量、静态变量的概念和使用方法 ◆学习对多文件程序的编译和运行。 2.实验内容 编程序并上机调试运行。 (1)写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。 (习题83) 本程序应当准备以下测试数据:17、34、2,1、0。分别输入数据,运行程 序并检查结果是否正确。 (2).用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函 数传递给该函数.(习题8.10) 把两个函数放在同一个程序文件中,作为一个文件进行编译和运行。 把两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。 (3),用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串 483”。n的位数不确定,可以是任意的整数。(习题8.17 (4,求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数, 用另一函数根据求出的最大公约数求最小公倍数。(习题81) ①不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在 主函数中输人,并传送给函数l,求出的最大公约数返回主函数,然后再与两个 整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大 公约数和最小公倍数。 ②用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值 不由函数带回。将最大公约数和最小公倍数都设为全局变量,在主函数中输出它 们的值。 (5),写一函数,输入一个十六进制数,输出相应的十进制数。(习题8.16) 实验8编译预处理 1.实验目的 ◆掌握宏定义的方法
210 -3 101 89 45 54 156 7 用 scanf 函数从键盘输入数组各元素的值,检查结果是否正确。题目并未指 定二维数组的行数和列数,程序应能处理任意行数和列数的数组。因此,从理论 上来说,应当准备许多种不同行数和列数的数组数据,但这样的工作量太大,一 般来说不需要这样做,只需准备典型的数据即可。 如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必 用 scanf 函数。请同学们修改程序以实现之。 实验 7 函数 1. 实验目的 掌握定义函数的方法; 掌握函数实参与形参的对应关系以及“值传递”的方式; 掌握函数的嵌套调用和递归调用的方法; 掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。 学习对多文件程序的编译和运行。 2. 实验内容 编程序并上机调试运行。 (1). 写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。 (习题 8.3) 本程序应当准备以下测试数据:17、34、2,1、0。分别输入数据,运行程 序并检查结果是否正确。 (2). 用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函 数传递给该函数.(习题 8.10) 把两个函数放在同一个程序文件中,作为一个文件进行编译和运行。 把两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。 (3). 用递归法将一个整数 n 转换成字符串。例如,输入 483,应输出字符串 “483”。n 的位数不确定,可以是任意的整数。(习题 8.17) (4). 求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数, 用另一函数根据求出的最大公约数求最小公倍数。(习题 8.1) ①不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在 主函数中输人,并传送给函数 l,求出的最大公约数返回主函数,然后再与两个 整数一起作为实参传递给函数 2,以求出最小公倍数,再返回到主函数输出最大 公约数和最小公倍数。 ②用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值 不由函数带回。将最大公约数和最小公倍数都设为全局变量,在主函数中输出它 们的值。 (5). 写一函数,输入一个十六进制数,输出相应的十进制数。(习题 8.16) 实验 8 编译预处理 1. 实验目的 掌握宏定义的方法;
掌握文件包含处理方法; 掌握条件编译的方法 2.实验内容 ◆编程序并上机调试运行。 (1).定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作 为使用宏的实参,输出已交换后的两个值。(习题91) (2),设计输出实数的格式,包括:①一行输出一个实数;②一行内输出两 个实数;③行内输出三个实数。实数用“%62f”格式输出。(习题96) 用一个文件 Print-format h包含以上用# define命令定义的格式。在自己的 文件(自己命名)中用# nclude命令将 print-formath文件包含进来。在程序中 用 scanf函数读入三个实数给1、12、f3。然后用上面定义的三种格式分别输出 ①n;②f、f2;⊙n、12、f3 (3)用条件编译方法实现以下功能: 输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其 下一字母如a变成b…2z变成a'。其他字符不变)。用# define命令来控制是 否要译成密码。例如 若# define change1则输出密码。若# define ChanGe0则不译成密码, 按原码输出。(习题9.10) 编写程序,用条件编译方法来实现题目要求。 首先在程序中用“# define Change1”,运行程序,应得到密码。 将“# efine change”改为“# define ChanGe0”,再运行程序,应得 到原文。 实验9指针 1.实验目的 ◆通过实验进一步掌握指针的概念,会定义和使用指针变量 ◆能正确使用数组的指针和指向数组的指针变量 ◆能正确使用字符串的指针和指向字符串的指针变量 ◆能正确使用指向函数的指针变量; ◇了解指向指针的指针的概念及其使用方法 2.实验内容 ◇编程序并上机调试运行程序都要求用指针处理)。 (1).输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字 符串,按由小到大顺序输出。(习题101、102) 2).将一个3X3的矩阵转置,用一函数实现之。(习题10.9) 在主函数中用 scanf函数输入以下矩阵元素 3 5 7911 131519 将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结東 后在主函数中输出已转置的矩阵。 (3),有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数)
掌握文件包含处理方法; 掌握条件编译的方法。 2. 实验内容 编程序并上机调试运行。 (1). 定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作 为使用宏的实参,输出已交换后的两个值。(习题 9.1) (2). 设计输出实数的格式,包括:①一行输出一个实数;②一行内输出两 个实数;③一行内输出三个实数。实数用“% 6.2f”格式输出。(习题 9.6) 用一个文件 Print-format.h 包含以上用#define 命令定义的格式。在自己的 文件(自己命名)中用#include 命令将 print-format.h 文件包含进来。在程序中 用 scanf 函数读入三个实数给 f1、f2、f3。然后用上面定义的三种格式分别输出: ①f1;②f1、f2;③f1、f2、f3。 (3). 用条件编译方法实现以下功能: 输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其 下一字母(如'a'变成'b'……'z'变成'a'。其他字符不变)。用#define 命令来控制是 否要译成密码。例如: 若#define CHANGE 1 则输出密码。若#define CHANGE 0 则不译成密码, 按原码输出。(习题 9.10) 编写程序,用条件编译方法来实现题目要求。 首先在程序中用“#define CHANGE 1”,运行程序,应得到密码。 将“#define CHANGEl”改为“#define CHANGE 0”,再运行程序,应得 到原文。 实验 9 指针 1. 实验目的 通过实验进一步掌握指针的概念,会定义和使用指针变量; 能正确使用数组的指针和指向数组的指针变量; 能正确使用字符串的指针和指向字符串的指针变量; 能正确使用指向函数的指针变量; 了解指向指针的指针的概念及其使用方法。 2. 实验内容 编程序并上机调试运行程序(都要求用指针处理)。 (1). 输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字 符串,按由小到大顺序输出。(习题 l0.1、10.2) (2). 将一个 3X3 的矩阵转置,用一函数实现之。(习题 10.9) 在主函数中用 scanf 函数输入以下矩阵元素: l 3 5 7 9 11 13 15 19 将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束 后在主函数中输出已转置的矩阵。 (3). 有 n 个人围成一圈,顺序排号。从第 1 个人开始报数(从 1 到 3 报数)