C语言实验带答案_第1页
C语言实验带答案_第2页
C语言实验带答案_第3页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、第 7 章 C 语言实验C语言实验的基本操作内容包括C语言编程环境 Visual C+ 6.0 (VC6) 的使用;数据类型和输入输出;顺序结构程序设计;分支结构程序设计;循环结构程序设计;数组和字符 串;函数的使用;指针的使用;结构体的使用和文件编程。通过这些实验,熟练掌握C语言的基本程序设计方法。实验重点熟练掌握C语言的编程环境 Visual C+ 6.0;熟练掌握各种数据类型和数据的输入和输出; 熟练掌握顺序结构程序设计; 熟练掌握分支结构程序设计; 熟练掌握循环结构程序设计; 熟练掌握数组和字符串的使用; 熟练掌握函数的定义和调用; 熟练掌握指针的使用; 熟练掌握结构体的编程; 熟练掌

2、握文件的使用;实验 1 C 语言编程环境 Visual C+ 6.0 的使用实验 【实验目的】Visual C+ 6.0 拥有简洁方便的 C 语言集成开发功能。本实验的目的包括:(1)熟练掌握 Visual C+ 6.0 的编程环境;(2)熟练掌握 C 语言程序的编辑、编译、链接和运行等过程;【先期知识】(1)熟练掌握中英文的输入;(2)熟练掌握 Windows 的系统的使用方法;【实验内容】(1) 在 Visual C+ 6.0 下建立 C 语言程序项目提示:Visual C+ 6.0虽然是 Windows平台下C+的编译器,但与标准的ANSI C兼容。 在Visual C+ 6.0进行C语

3、言程序开发的步骤如下: 打开 Visual C+ 6.0 集成开发工具; 选择“ File”菜单,并在其下拉菜单中选择“New”,在屏幕上弹出的“ New”对话框中选择"Projects ”标签 在“ Projects”标签的面板中,选择工程类型为“ Win 32 Con sole Applicati on ”,同时 在对话框的右边输入工程名字( Project name)和项目文件存放的路径(Location );然后单 击“OK”按钮,Visual C+ 6.0会弹出项目设置对话框。 在“ Win 32 Con sole Applicati on -Step 1 of 1” 对话

4、框中,选择“ An empty project ”, 然后单击“ Finish ”,完成项目的创建。 再次选择“ File”菜单中的“ New”菜单项,并在“ New”对话框中选择“ Files”标 签,打开“ Files”标签的面板 在“ Files”标签的面板中,选择文件类型为“C+ Source File ”,并在对话框的右边输入源文件名(File),如“ Hello ”,单击“ OK ”按钮就可以进入 C语言程序编辑环境。Visual C+ 6.0开发环境以项目(Project)为组织单位,每个项目下面可以包含一个或 多个C语言源文件。因此在编写一个C语言程序前,需要先创建对应的项目,

5、然后创建对应的C语言源文件。(2) C语言程序“ Hello World ”的开发编写一个C语言程序Hello.cpp,要求在控制台屏幕上打印出文字“Hello World ”。提示:开发步骤如下: 在实验内容(1 )的基础上,在编辑窗口中输入如下程序代码#i nclude <stdio.h>void mai n()prin tf("hello world!' n"); 选择菜单“ Build ”中的“ Build Hello.exe ”菜单项,或者使用快捷键F7,进行编译(Compile )、链接(Link )。如果下方的输出窗口没有显示编译和链接错误

6、,则表示可执行文件Hello.exe已经生成,否则请仔细阅读错误信息,并根据错误信息重新编辑修改程序,并重新“ Build ”,直到没有错误为止。 如果没有错误,选择“Build ”中的“ Execute Hello.exe ”菜单项,或者使用快捷键Ctrl+F5,开始执行程序,系统会系统弹出程序执行的结果。【设计性实验】(1)在实验内容(1 )和(2)的基础上,在屏幕上输出如下图案提示:根据实验内容(1 )( 2)的操作,创建新的项目和C+源文件,并在编辑窗口中,输入如下程序代码:#in elude <stdio.h>void mai n()printf(” printf(” p

7、rintf(” printf(”*n"); *n"); *n “); *n");(2) VC6的程序调试方法在设计性实验(1)中,故意打错几个字符,或改变大小写,或输入全角字母等,并根 据编译链接的错误信息逐一进行修改。提示:在输出窗口,查看错误提示信息并双击对应的错误信息,系统会自动定位到源代码中可能的错误位置。根据错误提示信息,对程序进行修改后,重新编译链接。实验2数据类型和输入输出实验【实验目的】(1) 掌握C语言各种数据类型的变量定义和含义(2) 熟练掌握各种基本数据类型的输入和输出(3) 熟练掌握输入输出函数的使用方法【实验内容】(1)运行如下程序,观察

8、各种数据类型的变量的输出结果。#in elude <stdio.h>void mai n()int a, b;float f1, f2;char c1, c2; double d1, d2; long m, n; un sig ned int p, q;a = 65; b = 65;c1 = 'a' c2 = 'x42'f1 = 3.14159265; f2 = -6.87;d1 = 3157.890121; d2 = 0.123456789;m = 50000; n = -60000;p = 32768; q = 40000;printf(&quo

9、t;int a=%d, b=%dn", a, b);prin tf("char c1=%c, c2=%cn", c1, c2);prin tf("float f1=%6.2f, f2=%6.2fn", f1, f2);prin tf("double d1=%15.6lf, d1= %e, d2=%15.12gn", d1, d2); printf("long m=%ld, n=%ldn", m, n);printf("un sig ned int p=%u, q=%un", p, q)

10、;(2)运行如下程序,并按要求输入数据,观察程序的输出结果。实验中,注意字符类型的输入特点,尝试去掉fflush(stdin)语句后,观察输出结果;尝试输入不一样的数据,观察程序的输出结果;尝试将输入数据中的空格换成回车来输入,并观察输出结果;对整数的输出,尝试使用格式控制符o、%x,并观察输出结果;对字符的输出,尝试使用putchar(c1); putchar(c2);并观察输出结果输入数据:65 66回车ab回车3.14159265-6.87 回车3157.8901210.123456789 回车50000-600003767840000 回车程序清单:#in elude <stdi

11、o.h>void mai n()int a, b;float f1, f2;char c1, c2;double d1, d2;long m, n;un sig ned int p, q;printf("Input Data:");scan f("%d%d", &a, & b);fflush(stdi n);scanf("%c%c", &c1, &c2);scan f("%f%f", &f1, &f2);scan f("%lf%lf", &a

12、mp;d1, &d2);scan f("%ld%ld", &m, &n);scanf("%u%u", &p, &q);prin tf("i nt a=%d, b=%dn", a, b);printf("char c1=%c, c2=%cn", c1, c2);prin tf("float f1=%6.2f, f2=%6.2fn", f1, f2);prin tf("double d1= %15.6lf, d1= %e, d2=%15.12gn&q

13、uot;, d1, d1, d2);printf("long m=%ld, n=%ldn", m, n); printf("un sig ned int p=%u, q=%un", p, q);提示: 在数值类型的输入时,多个数值之间用空格、TAB键或回车隔开;在字符类型的输入时,多个字符之间不要有任何其他字符,因为键盘的任何一次击 键都会被认为是一次字符的输入,直到输入足够的字符后,按回车确认输入;(3) 设计一个程序,用getchar函数读入两个字符给c1、c2,然后分别用 putchar函数和printf函数输出这两个字符。提示:学习字符类型的输入

14、输出方法。程序清单如下char c1, c2;cl = getchar(); c2 = getchar(); printf("c1 = %c, c2 = %cn", c1, c2); putchar(c1); putchar(c2);(4)设计一个程序,要求输入圆的半径r (double类型)后,程序自动计算圆的周长和面积,并输出周长和面积。提示:直接使用算术运算计算出面积,然后输出即可。程序清单如下,注意 PI的用法#in clude <stdio.h>#define PI 3.14159265 void mai n()double r, c, s;c = 2

15、 * PIr;s = PIr;prin tf("c = %lf, s = %lf", c, s);(5)设计一个程序,当输入一个小写字符(a-z )后,程序自动输出对应的大写字符,以及大写字母对应的 ASCII码值。提示:字符类型可以和整数进行算术运算,小写字母减去32就变成了对应的大写字母。程序清单如下。#in clude <stdio.h>void mai n()char c;c = getchar();c = c - 32; putchar(c);prin tf("nASCII code:%dn", c);(6)分析下列程序的输出结果。

16、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);提示:本程序主要考察+和一运算符,以及复合赋值运算符。(7) 用三目运算符求三个整数x, y, z中的最大值。提示:学习三目条件运算符的使用。程序清单如下:#in elude <stdio.h>void mai n()int x, y,乙printf(”请输入三个整数,用空格隔开: ”);scan f("%d%d%d", &x, &y, &z)

17、;printf(” 最大值=%dn", (x > y ? y > z ? x : x > z ? x : z : x > z ? y : y > z ? y : z);【设计性实验】(1) 编写程序,在屏幕上输出任意一首诗歌。(2) 分析下列程序,并写出程序的输出结果。#i nclude <stdio.h>void mai n()char e = 255;prin tf("e=%dn", e);printf("e+1=%d, c+2=%dn", e + 1, e + 2);实验3顺序结构程序设计【实验目

18、的】(1) 进一步熟悉C程序的上机过程,积累调试经验。(2) 进一步熟悉C语言的输入、输出函数的使用。(3) 增强基本顺序结构程序设计的能力。(4) 加深简单算法设计和分析能力【实验内容】(1) 输入一个华氏温度,要求输出摄氏温度。公式为:c 5 F 329输出要有文字说明,取2位小数。提示:程序清单如下。#i nclude <stdio.h>void mai n()double F, c;printf(”请输入华氏温度:"); scan f("%lf", & F);c = (F - 32) * 5 / 9;printf("华氏温度:

19、%.2lf,对应的摄氏温度为:%.2lfn", F, c);r。已知电阻并(2) 有三个电阻r1、r2、r3并联,编写程序计算并输出并联后的电阻联公式为:1 丄丄丄 r r1 r2 r3 提示:程序清单如下。double r, r1, r2, r3;printf(”请输入并联的三个电阻的阻值,用空格隔开: ");scan f("%lf%lf%lf", &r1, &r2, &;r = 1.0 / r1 + 1.0 / r2 + 1.0 / r3;r = 1.0 / r;printf("三个电阻并联后的阻值为:%lfn&qu

20、ot;, r);(3) 编写程序,当输入一兀二次方程ax2+bx+c=0的三个系数a,b,c后,程序自动输入方程的两个解。注意:输入的a,b,c要保证方程一定有解。提示:求方程解的时候,要计算平方根,请在头文件中包含#include <math.h>,然后使用sqrt函数,如y = sqrt(x)表示计算x的平方根,并赋值给y。程序清单如下。#i nclude <stdio.h>#in clude <math.h>void mai n() double r1, r2, a, b, c, delta;printf("请输入三个系数 a, b, c,用

21、空格隔开:");scan f("%lf%lf%lf", &a, &b, &c);delta = b * b - 4 * a * c;r1 = (-b + sqrt(delta) / 2 / a; r2 = (-b - sqrt(delta) / 2 / a;printf("方程的两个解分别为r1=%lf, r2=%lfn", r1, r2);(4) 编写程序,输入三角形的三条边,计算并输出三角形的面积。注意:输入的三条 边必须要能构成一个三角形。提示:程序清单如下:#i nclude <stdio.h>#in

22、 elude <math.h>void mai n()double s, a, b, c;printf(”请输入三条边长 a, b, c,用空格隔开:"); scan f("%lf%lf%lf", &a, &b, &c);s = (a + b + c) / 2;s = sqrt(s*(s-a)*(s-b)*(s-c);printf("三角形的面积为 s=%lfn", s);【设计性实验】(1)编写程序,输入一个三位正整数,程序自动输出其反序的数。如当输入(971),程序须输出(179 )。提示:程序清单如下:

23、#i nclude <stdio.h>void mai n()int a, r1, r2, r3, b;printf("请输入一个三位正整数:"); scan f("%d", & a);r1 = a % 10;r2 = a / 10 % 10;r3 = a / 10 / 10 % 10;b = r1 * 100 + r2 *10 + r3;printf("反序的数为:%dn", b);实验4分支结构程序设计【实验目的】(1)了解C语言表示逻辑量的方法(以 0代表“假”,以非0代表“真”)。(2)掌握关系运算符和逻辑

24、运算符的使用。(3)熟练掌握if语句和switch语句。(4) 掌握if语句的嵌套使用。【实验内容】(1)编写程序,输入一个整数,判断该数是奇数还是偶数,并输出判断结果。提示:两种处理办法,1,判断该整数除以2的余数;2,直接判断该整数的最后一个bit位是1还是0。第一种办法的程序清单如下:#i nclude <stdio.h>void mai n()int d, mod;printf(”请输入一个整数:”);scan f("%d", &d);mod = d % 2;if (mod = 1 | mod = -1)printf("整数%d是一个奇

25、数 n", d);elseprintf("整数%d是一个偶数 n", d);J第二种方法的程序清单如下:#i nclude <stdio.h>void mai n()int d;printf("请输入一个整数:”);scan f("%d", &d);if (d & 1)printf("整数%d是一个奇数 n", d);elseprintf("整数%d是一个偶数 n", d);(2)输入一个字符,判断该字符是大写字母,小写字母,数字(0-9)还是其他符号提示:根据输入字

26、符的ASCII码的范围来判断字符的类型。程序清单如下:char ch;printf(”请输入一个字符:”);ch = getchar();if (ch > 'a' && ch < 'z')printf("字符%c 是一个小写字母n", ch);else if (ch > 'A' && ch < 'Z')printf("字符%c 是一个大写字母n", ch);else if (ch > 'O' &&

27、ch < 9)printf("字符%c 是一个数字 n", ch);elseprintf("字符%c 是一个其他字符n", ch);(3) 编程程序,当输入年号,判断并输出该年是否闰年。所谓闰年,是指能被4整除,但不能被100整除;或能被400整除的年份。提示:程序清单如下:#i nclude <stdio.h>void mai n()int year, flag = 0;printf("请输入年号:"); scan f("%d", &year);if (year % 4 = 0 &

28、;& year % 100) | year % 400 = 0) printf("%d年是闰年 n", year);elseprintf("%d年不是闰年 n", year);(4)有一函数:x1x13xy11x105x110x207x1x20编写一个程序,用 scanf函数输入x的值,输出y值。提示:程序清单如下:#i nclude <stdio.h>void mai n()double x, y;printf(”请输入x的值:"); scan f("%lf", &x);if (x < 1

29、)y = x + 1;else if (x <= 10)y = 3 * x + 1;else if (x <= 20)y = 5 * x + 1;elsey = 7 * x + 1;prin tf("y=%lfn", y);(5) 给出一个百分制成绩,假设是 0-100的正整数,要求输出成绩等级 A、B、C、D、 E。90分以上为 A,81 89分为B, 70- 79分为C, 60- 69分为D, 60分以下为 E。要求 分别使用if语句和switch语句实现。:提示:用if语句实现的程序清单如下:int score;printf(”请输入百分制的成绩:&quo

30、t;); scan f("%d", &score);if (score >= 90)prin tf("An");else if (score >=80) prin tf("Bn");else if (score >= 70) prin tf("Cn ”);else if (score >= 60) prin tf("Dn ”);elseprin tf("En");用switch语句实现的程序清单如下:#i nclude <stdio.h>void ma

31、i n()int score, flag;printf("请输入百分制的成绩:"); scan f("%d", &score);flag = score / 10;switch (flag)case 10:case 9: prin tf("An"); break;case 8: prin tf("Bn"); break;case 7: prin tf("Cn"); break;case 6: prin tf("Dn"); break; default: prin tf

32、("En"); break;【设计性实验】(1) 编写程序,当用户输入任意的三个整数a, b, c后,程序按从小到大的顺序输出这三个数。提示:三个数的排列一共只有6种,因此既可以用if语句将所有的6种情况列举出来,也可以通过比较后交换的办法来排序。第一种,列举出6中排列#i nclude <stdio.h>void mai n() int a, b, c;printf(”请输入三个整数,用空格隔开: ”);scan f("%d%d%d", &a, &b, &c);if (a > b && a &g

33、t; c && b > c)prin tf("%d, %d, %dn", c, b, a);if (a > b && a > c && c > b)prin tf("%d, %d, %dn", b, c, a);if (b > a && b > c && a > c)prin tf("%d, %d, %dn", c, a, b);if (b > a && b > c &&

34、 c > a)prin tf("%d, %d, %dn", a, c, b);if (c > a && c > b && a > b)prin tf("%d, %d, %dn", b, a, c);if (c > a && c > b && b > a)prin tf("%d, %d, %dn", a, b, c);第二种,禾U用冒泡排序的原理,通过比较和交换来排序。int a, b, c, t;printf(”请输入三个整数,用

35、空格隔开:");scan f("%d%d%d", &a, &b, &c);if (a > b)t = a;a = b;b = t;if (b > c)t = b;b = c; c = t;if (a > b)t = a;a = b; b = t;prin tf("%d, %d, %dn", a, b, c);实验5循环结构程序设计【实验目的】(1) 掌握循环语句的使用方法,及while语句、do-while语句和for语句格式。(2)掌握各种循环语句中如何正确的设定循环条件和循环次数。(3)掌握在程序设

36、计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)(4)掌握循环程序调试的方法和技巧。【实验内容】(1)编写程序,求 1+2+3+4+100的值。提示:程序清单如下int s = 0, i;for (i = 1; i <= 100; i +)s += i;prin tf("s = %dn", s);(2) 从键盘输入若干整数,以0结束,判断并输出其中的最大数和最小数。提示:程序清单如下#i nclude <stdio.h>void mai n()int a, max, min;scan f("%d", & a);max =

37、 min = a;while (a) if (max < a)max = a; if (min > a)min = a;scanf("%d", &a);printf(” 最大值=%d,最小值=%dn", max, min);(3)编写程序,当输入正整数 n(n < 10)后,程序计算出 n!的值。 提示:程序清单如下#i nclude <stdio.h>void mai n()int n, i, s = 1;printf(” 请输入正整数 n(n<10): ”); scan f("%d", &

38、n);for (i = 1; i <= n; i +)s *= i;printf("%d!=%dn", n, s);(4) 编写程序,找出100999之间的水仙花数,即各位数字的立方和等于该数的,如 13+53+33=153。提示:程序清单如下#i nclude <stdio.h>void mai n()int i, a, b, c;for (i = 100; i <= 999; i +)a = i % 10;b = i / 10 % 10;c = i / 10 / 10 % 10;if (a * a * a + b * b * b + c * c

39、* c = i) printf("%d 是水仙花数 n", i);(5) 编写程序,按如下公式求出圆周率pi的值,精确到最后一项的绝对值小于10-6。提示:程序清单如下:#i nclude <stdio.h>void mai n()int i = 1, sig n = 1; double pi = 0, item;doitem = 1.0 / (2 * i - 1) * sig n; pi += item;sig n *= -1;i +; while (item * sign * -1 >= 1e-6); prin tf("PI = %lfn&q

40、uot;, 4 * pi);10(6) 输入正整数n,分别用while、do-while和for语句计算n!(即求1! +2! +3 !n 1+ 10 !),并试着简化程序。提示:仅提供使用for语句的程序清单如下:#i nclude <stdio.h>void mai n()int i, n, item = 1, s = 0;printf("请输入正整数 n(n<10):"); scan f("%d", &n);for (i = 1; i <= n; i +)item *= i;s += item;prin tf(&qu

41、ot;s = %dn", s);(7) 输入两个正整数 m和n,求它们的最大公约数和最小公倍数。 提示:求公约数的算法有几种,其中欧几里得算法的程序清单如下:#i nclude <stdio.h>void mai n()int m, n, a, b, t;printf(”请输入两个正整数 m, n:”); scanf("%d%d", &m, &n);a = m; b = n;dot = a % b;a = b;b = t; while (b > 0);printf("公约数 =%d,公倍数 =%dn", a,

42、m * n / a);(8) 编写程序,输入正整数 n,用循环语句输出n行的如下图案。* * * * * * *提示:程序清单如下:#i nclude <stdio.h>void mai n()int n, i, j;printf(”请输入个正整数 n:”); scan f("%d", &n);for (i = 0; i < n; i +)for (j = 0; j < i; j +) printf("");for (j = 0; j < n - i; j +) prin tf("* ");pri

43、n tf("n");【设计性实验】(1) 编写程序,当输入一个正整数n,判断n是否是回文数。回文数就是从左到右读,和从右到左读都是一样的数,如34543, 16377361等。提示:求n的逆序数m,如果m = n,则n是回文数。程序清单如下:#i nclude <stdio.h>void mai n()int n, m = 0, a;printf("请输入个正整数 n:"); scan f("%d", &n);a = n;while (a) m = m * 10 + a % 10; a /= 10; if (m =

44、 n) printf("%d 是一个回文数.n”,n);elseprintf("%d 不是一个回文数.n", n);(2) 编写程序,用牛顿迭代法求方程3x3-4x2+3x-6=0在1.5附近的根。f ( x )提示:牛顿迭代法的公式为 Xn jXn- 。程序清单如下:f '(Xn)#i nclude <stdio.h>void mai n()double r = 1.5, f, ff;while (fabs(f = 3 * r * r * r - 4 * r * r + 3 * r - 6) > 1e-6) ff = 9 * r * r

45、 - 8 * r + 3;r = r - f / ff;printf("1.5 附近的根为:%lf, f=%lfn", r, f);实验6数组和字符串【实验目的】(1) 掌握一维数组和二维数组的定义、赋值和输入输出的方法;(2) 掌握一维数组元素引用的特点、编程注意事项;(3) 掌握字符数组和字符串的输入输出和基本操作;(4) 了解掌握与数组有关的算法(如排序算法);【实验内容】(1) 编写程序,从键盘输入10个整数存储在数组中,并找出最大的数并输出该数及其所在数组中的下标。提示:程序清单如下:#i nclude <stdio.h>void mai n()int

46、 a10, i, max = 0;for (i = 0; i < 10; i +)scanf("%d", &ai);for (i = 1; i < 10; i +) if (amax < ai) max = i;prin tf("max = %d, max in dex = %dn", amax, max);(2) 某歌手大赛有10个评委给歌手打分(百分制),最终成绩评分原则为:去掉一个最高分和最低分,然后取平均分。输入10个分数,编写程序计算歌手的成绩。提示:先输入10位评委的评分,然后使用循环语句, 找出10个分数中的最大值

47、和最小 值,以及总和。程序清单如下:#in elude <stdio.h>void mai n()double a10, s;int i, max = 0, min = 0;for (i = 0; i < 10; i +) sca nf("%lf", &ai);s = amax;for (i = 1; i < 10; i +)if (amax < ai) max = i;if (amin > ai) min = i;s += ai;prin tf("score=%lfn", (s - amax - ami n)

48、 / 8); 并输出其值以及所在的(3) 假设存在5 X 5的矩阵,编写程序找出值最大的那个元素, 行号和列号。输入值的矩阵如下:35712891122154641351627156266134282910提示:主要考察二维数组的输入和使用。程序清单如下:#i nclude <stdio.h>void mai n()int a55, i, j, maxX = 0, maxY = 0;for (i = 0; i < 5; i +)for (j = 0; j < 5; j +)scan f("%d", & aij);for (i = 0; i &

49、lt; 5; i +)for (j = 0; j < 5; j +)if (amaxXmaxY < aij)maxX = i;maxY = j;prin tf("max=%d, max-x = %d, max-y = %dn", amaxXmaxY, maxX, maxY);(4) 编写程序,输入一个 4x4的矩阵,先求该矩阵的转置矩阵,然后打印输出。 提示:主要考察二维数组的输入,以及矩阵的转置。程序清单如下:#i nclude <stdio.h>void mai n() int a44, i, j, t;for (i = 0; i < 4;

50、 i +) for (j = 0; j < 4; j +) scan f("%d", & aij);for (i = 0; i < 4; i +) for (j = 0; j < i; j +) t = aij;aij = aji; aji = t;for (i = 0; i < 4; i +) for (j = 0; j < 4; j +) prin tf("%5d", aij);(5) 编写程序,输入一串字符串,统计字符串中英文字母的大小写的个数和字符串长度。提示:主要考察字符串的输入,以及字符串的遍历,程序清单

51、如下:#i nclude <stdio.h>void mai n() char s200;int i = -1, uco unt = 0, Ico unt = 0;printf(”请输入一个字符串:");gets(s);while (s+ i) if (si >= 'a' && si <= 'z')lco unt +;else if (si >= 'A' && si <= 'Z')uco unt +;printf("len = %d, uppe

52、rcase = %d, lowercase = %dn", i, ucount, lcount);(6) 编写程序,将输入的两个字符串连接起来,组成一个新的字符串,不要用strcat函数。提示:主要考察字符串的输入,以及字符串的遍历,程序清单如下:#i nclude <stdio.h>void mai n() char s200, s1100, s2100;int i = -1, j = 0;printf("请输入第一个字符串,以回车结束:”);gets(s1);printf("请输入第二个字符串,以回车结束:”);gets(s2);while (s1

53、+ i) sj + = s1i;i = -1;while (s2+ i) sj + = s2i;sj = 0;【设计性实验】(1) 编写程序,输入10个整数后,将其按从小到大排列。 提示:主要考察排序算法,程序清单如下:#i nclude <stdio.h>void mai n() int a10, i, j, t;printf(”请输入10个整数,用空格隔开:”);for (i = 0; i < 10; i +)scanf("%d", &ai);for (i = 0; i < 10; i +)for (j = i + 1; j < 1

54、0; j +) if (ai > aj) t = ai; ai = aj; aj = t;for (i = 0; i < 10; i +) prin tf("%5d", ai);(2) 编写程序,输入一串字符串,统计字符串中单词的个数。假设单词之间以空格隔 开。提示:主要考察字符串的遍历,程序清单如下:#i nclude <stdio.h>void mai n() char s200;int wco unt = 0, i = -1, flag = 1;printf("请输入字符串:"); gets(s);while (s+ i)

55、if (si != ' ') if (flag)wcount +;flag = 0; elseflag = 1;prin tf("word count = %dn", wco un t);实验7函数的使用【实验目的】(1)掌握模块化编程方法中自定义函数和主调函数的模块关系。(2)掌握函数实参与形参的对应关系以及“值传递”的方式;(3)掌握定义函数的方法;(4)掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。(5)熟悉函数的嵌套调用和递归调用的方法;【实验内容】(1)编写一个函数,比较两个整数的大小,并返回较大的一个整数。在主函数中输入 两个整数,调

56、用该函数比较大小。提示:程序清单如下:#i nclude <stdio.h>int max(i nt x, int y) return x > y ? x : y;void mai n() int a, b;printf(”输入两个整数:”); scanf("%d%d", &a, &b);prin tf("max = %dn", max(a, b);(2)编写一个函数,判别给定的整数(>1)是否是素数,如果是素数,则返回1,否则返回0。提示:程序清单如下:#i nclude <stdio.h>in t

57、isPrime(i nt x) int i;for (i = 2; i <= x / 2; i +) if (x % i = 0) return 0;return 1;(3)编写程序,从键盘输入一个大于4的偶数,禾U用上面判断素数的函数,将该偶数分解成两个素数的和(哥德巴赫猜想)。提示:主要考察排序算法,程序清单如下:#i nclude <stdio.h>void mai n() int a, p = 1;printf(”输入大于4的偶数:”); scan f("%d", & a);while 什+ p <= a / 2)if (isPrim

58、e(p) && isPrime(a - p) break;printf("%d = %d + %dn", a, p, a - p); (4) 分析下面的程序,写出程序的输出结果,并上机验证。#i nclude <stdio.h>int n=1;void func() static int a=1;int b=2;a+=2;b+=5;n+=12;void mai n() int a = 0,b = -10;prin tf("a=%d,b=%d ,n=%din",a,b, n);fun c();prin tf("a=%d

59、,b=%d ,n=%din",a,b, n);fun c();提示:本题主要考察全局变量、局部变量、静态局部变量之间的含义和区别。(5) 分析下面的程序,写出程序的输出结果,并上机验证。#i nclude <stdio.h>void swap(i nt x, int y) int t = x; x = y; y = t;void mai n() int a = 5,b = 8;swap(a, b);prin tf("a=%d,b=%dn",a,b);提示:主要考察函数的形参和实参的传递。(6)编写函数(非递归函数),计算Fibonacci数列第n项的值,n为函数的参数。已知:1n 1Fibn1n 2Fibn 1Fibn 2 n 3提示:主要考察函数的定义,以及复习循环的使用。程序清单如下:int Fib on acci (int n) int a = 1, b = 1, c, i;for (i = 3; i <= n; i +) c = a + b;a = b; b = c;return b;【设计性实验】(1)编写函数(递归函数),计算Fibonacci数列第n项

温馨提示

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

评论

0/150

提交评论