C语言程序设计实验报告(实验大纲+过程)

更新时间:2024-01-18 19:38:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《C程序设计》实验教学大纲

一、适用范围

大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计

三、学时数与学分

总学时:90 总学分: 4 实验学时:28 实验学分:1 四、教学目的和基本要求

目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握C 语言程序设计的基本方法和编程技巧。

基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 五、实验项目与学时分配 序号 1 2 3 4 5 6 7 8 总计 实验项目名称 C程序的运行环境和运行一个C程序的方法 数据类型、运算符和表达式 最简单的C程序设计 选择结构程序设计 循环控制 数组 函数 指针 实验学时 2 3 3 4 4 4 4 4 28 实验类型 验证性实验 验证性实验 验证性实验 设计性实验 设计性实验 设计性实验 设计性实验 设计性实验 注:带*的实验项目为选做实验项目

六、教材、讲义及参考书

《C程序设计题解与上机指导》谭浩强主编 清华大学出版社 七、实验成绩评定办法

实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。

实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。

1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

1

2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明

本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。 九、实验项目

实验一 C程序的运行环境和运行一个C程序的方法 一、实验目的

1.了解Visual C++6.0编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。

二、实验内容

1.用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的?

2.编写一个C程序,输出以下信息: **************************** very good!

****************************

3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。

实验二 数据类型、运算符和表达式 一、实验目的

1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。

2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。

二、实验内容

1.输入并运行以下程序: main( )

{ char c1,c2; c1=97;c2=98;

printf(“%c %c\\n”,c1,c2); printf(“%d %d\\n”,c1,c2); }

在此基础上

①将第三行、第四行改为: c1=321;c2=353;

再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2;

再使之运行,分析其运行结果。。 2.输入并运行以下程序:

2

main( )

{int i=8,j=10,m,n; m=++i;n=j++;

printf(“%d,%d,%d,%d\\n”,i,j,m,n); }

分别作以下改动并运行: ①程序改为: main( )

{int i=8,j=10;

printf(“%d,%d\\n”,i++,j++); }

②在②的基础上,将printf语句改为: printf(“%d,%d\\n”,++i,++j); ③再将printf语句改为:

printf(“%d,%d,%d,%d\\n”,i,j, i++,j++); ④程序改为: main( )

{int i=8,j=10,m=0,n=0;; m+=i++;n-=--j;

printf(“i=%d,j=%d,m=%d,n=%d\\n”,i,j,m,n); }

3. 请将下列给出的两个程序段分别输入计算机后,分析其运行结果: ①main() { int num; num=32767;

printf(“num=%d\\n”,++num); }

② main() { int a=-2;

printf(“%d, %d\\n”,a, a--); }

实验三 最简单的C程序设计 一、实验目的

1.掌握C语言中使用最多的一种语句——赋值语句的使用。 2.掌握数据的输入输出的方法,能正确使用各种格式转换符。 二、实验内容

1.上机输入以下程序: main( )

{int a,b;float c;

scanf(“%d%d%f”,&a,&b,&c);

printf(“a=%-4d,b=M,c=%f,c=%.2f\\n”,a,b,c,c); }

要使a=3,b=4,c=12.3456,在键盘上应如何输入?有几种方式?

2.若将输入函数改为scanf(“%d, %d ,%f”,&a,&b,&c);应该如何输入数据?

3

3.上机输入以下程序: main( )

{int a; float b; char c;

scanf(“M_<”,&a,&b,&c);

printf(“a=%d,a=%o,a=%x,b=%8.3f,b=%4.0f,c=%c\\n”,a,a,a,b,b,c); }

要使a=77,b=4.56,c= ?A?,在键盘上应如何输入?

4.输入两面整型变量a、b的值,输出下列算式以及运算结果。 a+b、a-b、a*b、a/b、(float)a/b、a%b

每个算式占一行。如a等于10,b等于6,a+b应输入为: 10+6=16

5.编写程序,用getchar函数读入两个字符c1、c2,然后分别用putchar函数和printf函数输出这两个字符。上机运行程序,比较用printf和putchar函数输出字符的特点。

实验四 选择结构程序设计 一、实验目的

1.了解C语言表示逻辑量的方法(以0代表“假”,以1代表“真”); 2.学会正确使用逻辑运算符和逻辑表达式; 3.熟练掌握if语句和switch语句。

二、实验内容

先编程序,解以下问题,然后上机调试运行程序。 1.有一个函数

用scanf函数输入x的值(分别为x<1、1~10、≥10三种情况),求y值。 2.给出一个百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。

要求分别用if语句和switch语句实现 3.输入一个三位数,若此数是水仙花数输出“Y”,否则输出“N”, 若输入值不是三位数输出“data error”。 提示:水仙花数是一个三位数,组成这个三位数的三个数字的立方和与这个三位数相等。如:

333

153=1+5+3。判断是否是水仙花数需把构成三位数的三个数字分离出来并存入变量。

实验五 循环控制 一、实验目的

1.熟悉用while语句,do-while语句和for语句实现循环的方法。

2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。

二、实验内容

编程序并上机调试运行。

x?1?x?y??2x?11?x?10?3x?11x?10?4

1.输入两个正整数,求其中最大公约数和最小公倍数。

2.输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 3.打印出以下图案: * *** ***** ******* ***** *** *

4.编程求1!+2!+3!+……+20!。 5.编写程序输出乘法表

实验六 数组 一、实验目的

1.掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2.掌握字符数组和字符串函数的使用。

3.掌握与数组有关的算法(特别是排序算法)。 二、实验内容

编程序并上机调试运行。

1. 编写程序,用scanf函数输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。

2.有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,则输出“无此数” ,并且可以实现连续查找。15个数用赋初值的方法在程序中给出,要找的数用scanf函数输入。

3.将以下二维数组中数按列的顺序存放到一个一维数组中。二维数组的内容是 11 22 33 44 11 22 33 44 11 22 33 44

则一维数组中的内容是11 11 11 22 22 22 33 33 33 44 44 44 4.将两个字符串连接起来,不要用strcat函数。

5.从键盘输入5个字符串,找出最长的字符串和最大的字符串。 实验七 函数 一、实验目的

1.掌握定义函数的方法;

2.掌握函数实参与形参的对应关系,以及“值传递”的方式; 3.掌握函数的嵌套调用和递归调用的方法;

4.掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法。 二、实验内容

编程序并上机调试运行之。

1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。

2.两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,返回到主函数输出最大

5

公约数和最小公倍数。

3.已知二阶Fibonacci数列:

0 若n=0 Fib(n)= 1 若n=1 Fib(n-1)+Fib(n-2) 其他情况 定义递归函数求Fib(n)。

4. 编写函数,求

?n!

110

实验八 指针 一、实验目的

1.掌握指针的概念,会定义和使用指针变量; 2.学会使用数组的指针和指向数组的指针变量;

3.学会使用字符串的指针和指向字符串的指针变量; 4.学会使用指向函数的指针变量;

5.了解指向指针的指针的概念及其使用方法。 二、实验内容

编程序并上机调试运行程序(都要求用指针处理)。

1.定义函数void fun(int x[ ],int *max,int *min),找出数组x中的最大值和最小值,最大值和最小值通过形参指针max和min传回。

2.编写一个函数comp(s1,s2)实现两个字符串的比较。

如果s1=s2,则函数返回值为0;如果s1≠s2,返回它们二者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如s1

两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数输出。

3.从键盘输入一个字符串与一个指定字符,调用函数,将字符串中出现的指定字符全部删除。

4.将一个3×3的矩阵转置,用一函数实现。 在一主函数中用scanf函数输入以下矩阵元素: 1 3 5 7 9 11 13 15 17

将数组名作为函数参数,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出转置后的矩阵。

实验九 结构体和共用体 一、实验目的

1.掌握结构体类型变量的定义和使用; 2.掌握结构体类型数组的概念和应用;

3.掌握链表的概念,初步学会对链表进行操作; 4.掌握共用体的概念与使用。 二、实验内容

6

编程序,然后上机调试运行。

1.有3个学生,每个学生的数据包括学号、三门课的成绩,要求用input函数实现从键盘输入学生数据,用average函数求每个人的平均分,用output函数打印学生数据及平均成绩。

2.建立一个带有头结点的单链表,每个结点包括:学号、年龄,并输出链表中所有结点的数据。在链表中查找年龄最大的结点,并将链表中等于此年龄的结点删除(年龄最大的结点可能不止一个)。

*3.将一个链表按逆序排列,即将链头当链尾,链尾当链头。 4.上机输入如下程序: main( ) {union bt

{int k; char c[2];}a; a.k= -7;

printf(“%o,%o\\n”,a.c[0],a.c[1]); }

分析其运行结果。 实验十 位运算 一、实验目的

1.掌握按位运算的概念和方法,学会使用位运算符; 2.学会通过位运算实现对某些位的操作。 二、实验内容

编写程序,上机调试并运行。

1.编一个函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位为0)。函数调用形式为:getbits(value,n1,n2)

value为该16位数的值,n1为欲取出的起始位,n2为欲取出的的结束位。如:getbits(0101675,5,8)表示对八进制数101675,取出其从左面起的第5位到第8位。

要求把这几位数用八进制数打印出来。注意,应当将这几位数右移到最右端,然后用八进制形式输出。

2.利用位运算操作,实现交换两个变量的值。

3.将一个十六进制整数的各位循环左移4位,然后用十六进制形式输出。 实验十一 文件 一、实验目的

1.掌握文件以及缓冲文件系统、文件指针的概念; 2.学会使用文件打开、关闭、读、写等文件操作函数。 3.学会用缓冲文件系统对文件进行简单的操作。 二、实验内容

编写程序并上机调试运行。

1.编程序求100以内的素数,分别将它输出到显示器屏幕和x.txt文件中,要求每行5个数。

2.从键盘输入几本书的数据,每本书的数据包括条形码、书名和价格,将每项数据分别写入文本文件s.txt和二进制文件s.dat。

*3.从上题的文本文件s.txt或二进制文件s.dat中读入每本书的数据,计算所有书的平均价格。要求用input函数读入,average函数求平均价格。

7

统计与信息学院

《C程序设计》实验报告( 一 )

学号: 姓名: 班级: 成绩: 实验日期: 实验名称:C程序的运行环境和运指导教师: 行一个C程序的方法 实验地点: 实验软件(主要仪器设备):Visual C++6.0 实 验 要求 1.了解Visual C++6.0编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 实 验 过程 与 步 骤 实验①: 1、 打开Visual C++6.0。 2、 新建文件 C++ Source File,文件名.c并更改位置后确定。 3、 编辑 #include\int main() { printf(\is a C program.\\n\ return 0; } 4、 编译,无错误无警告后执行 实验②: #include\int main() { printf(\ printf(\ printf(\ return 0; } 实验③: #include\int main() { printf(\ return 0; } 实验 总结 8

统计与信息学院

《C程序设计》实验报告( 二 )

学号: 姓名: 班级: 指导教师: 成绩: 实验日期: 实验名称:数据类型、运算符和表达式 实验地点: 实 验 要求 实验软件(主要仪器设备):Visual C++6.0 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 实验① 1、 运行Visual C++6.0并新建工作区 2、 输入 #include main() {char c1,c2; c1=321;c2=353; printf(\ printf(\} 3、 编译,无错误、无警告后运行,结果如下: 2、编译,无错误、无警告后运行,结果如下: 3、 将步骤2程序改为: #include main() {int i=8,j=10; printf(\} 4、 编译,无错误、无警告后运行,结果如下: 实 验 过程 与 步 骤 5、 在步骤3的基础上,将printf语句改为: printf(“%d,%d\\n”,++i,++j); 4、 在步骤2的基础上将第三行、第四行改为: 6、 编译,无错误、无警告后运行,结果如下: c1=321;c2=353; 5、 编译,无错误、无警告后运行,结果提示: aa.obj - 0 error(s), 2 warning(s) 7、 在步骤3的基础上,将printf语句改为: printf(“%d,%d,%d,%d\\n”,i,j, i++,j++); 6、 在步骤2的基础上将第二行改为: int c1,c2; 8、 编译,无错误、无警告后运行,结果如下: 7、 编译,无错误、无警告后运行,结果如下: 9、 将步骤2程序改为: #include main() {int i=8,j=10,m=0,n=0; m+=i++,n-=--j; printf(\} 10、编译、运行,结果如下: 9

实验② 1、 输入 #include main() {int i=8,j=10,m,n; m=++i;n=j++; printf(\}

实验③ 1、输入 #include main() {int num; num=32767; printf(\} 2、 编译,无错误、无警告后运行,结果如下: 实验 总结 3、 输入 #include main() {int a=-2; printf(\} 4、 编译,无错误、无警告后运行,结果如下:

10

统计与信息学院

《C程序设计》实验报告( 三 )

学号: 姓名: 班级: 指导教师: 成绩: 实验日期: 实验名称:最简单的C程序设计 实验地点: 实 验 要求 实验软件(主要仪器设备):Visual C++6.0 1.掌握C语言中使用最多的一种语句——赋值语句的使用。 2.掌握数据的输入输出的方法,能正确使用各种格式转换符。 实验① 1、 运行Visual C++6.0并新建工作区 2、 输入 #include main() {int a,b;float c; scanf(\printf(\=%-4d,b=M,c=%f,c=%.2f\\n\} 3、 编译,无错误、无警告后运行,结果如下: 实 验 过程 与 步 骤 有空格、tab、回车三种输入方式。 4、 将步骤2中的scanf(\改为scanf(“%d, %d ,%f”,&a,&b,&c); 5、 编译,无错误、无警告后运行,结果如下: 实验② 1、 输入 #include main() {int a;float b;char c; scanf(\printf(\} 2、 编译,无错误、无警告后运行,结果如下: 11

实验③ (1) a+b 1、 输入 #include main() { int a,b,c; scanf(\ c=a+b; printf(\} 2、 编译,无错误、无警告后运行,结果如下: (4) a/b 1、输入 #include main() { int a,b,c; scanf(\ c=a/b; printf(\} 2、编译,无错误、无警告后运行,结果如下: (2) a-b 1、 输入 #include main() { int a,b,c; scanf(\ c=a-b; printf(\} 2、 编译,无错误、无警告后运行,结果如下: (5) (float)a/b 1、输入 #include main() { int a,b,c; scanf(\ c=(float)a/b; printf(\} 2、编译,无错误、无警告后运行,结果如下: (3) a*b 1、 输入 #include main() { int a,b,c; scanf(\c=a*b; printf(\} 2、 编译,无错误、无警告后运行,结果如下: (6) a%b 1、输入 #include main() { int a,b,c; scanf(\ c=a%b; printf(\} 2、编译,无错误、无警告后运行,结果如下: 12

实验④ (1)getchar输出 1、输入 #include int main() { char c1,c2; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); return 0; } 2、编译,无错误、无警告后运行,结果如下: (2)printf输出 1、输入 #include int main() { char c1,c2; c1=getchar(); c2=getchar(); printf(\ return 0; } 2、编译,无错误、无警告后运行,结果如下: 实验 总结

13

统计与信息学院

《C程序设计》实验报告( 四 )

学号: 姓名:班级: 指导教师:张雄 成绩: 实验日期: 实验名称:选择结构程序设计 实验地点: 实 验 要求 实验软件(主要仪器设备):Visual C++6.0 1.了解C语言表示逻辑量的方法(以0代表“假”,以1代表“真”); 2.学会正确使用逻辑运算符和逻辑表达式; 3.熟练掌握if语句和switch语句。 实验① 1、 运行Visual C++6.0。 2、 输入 #include int main() { int x,y; scanf(\ if(x<1) y=x; else if(x>=10) y=3*x-11; else y=2*x-1; printf(\ return 0; } 3、 编译,无错误、无警告后运行,结果如下: 实验② (1)if语句 1、输入 #include main() { float x;char ch; scanf(\ if(x>=90) ch=\ else if(x>=80) ch=\ else if(x>=70) ch=\ else if(x>=60) ch=\ else ch=\ printf(\} 2、编译,无错误、无警告后运行,结果如下: 实 验 过程 与 步 骤 X<1时, 1==10时, 14

(2)switch语句 1、输入 #include main() { float x;int y;char ch; printf(\ scanf(\ y=x/10; switch(y) { case 10:case 9:ch='A';break; case 8:ch='B';break; case 7:ch='C';break; case 6:ch='D';break; default:ch='E'; } printf(\ return 0; } 2、编译,无错误、无警告后运行,结果如下: 实验③:(水仙花数) 1、输入 #include int main() { int m,a,b,c; scanf(\ if(m/100==0) { printf(\ return 0; } a=m; b=(m/10); c=m/100; if(m==a*a*a+b*b*b+c*c*c) { printf(\ return 0; } else { printf(\ return 0; } } 2、编译,无错误、无警告后运行,结果如下: 实验 总结

15

统计与信息学院

《C程序设计》实验报告( 五 )

学号: 实验名称:循环控制 实验地点: 实 验 要求 姓名: 班级: 指导教师: 成绩: 实验日期: 实验软件(主要仪器设备):Visual C++6.0 1.熟悉用while语句,do-while语句和for语句实现循环的方法。 2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。 实验①:输入两个正整数,求其中最大公约数和最小公倍数。 (1)求最大公约数 1、输入 #include main() {int m,n,i,t; scanf(\if(n main() { int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) printf(\ printf(\ } system(\} 2、 编译,无错误、无警告后运行,结果如下: 实 验 过程 与 步 骤 (2)求最小公倍数 1、输入 #include main() {int m,n,i,t; scanf(\if(n

实验②:输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 1、输入 #include main() {char c; int letter,space,number,other; letter=space=number=other=0; do { c=getchar(); if(c>='a'&&c<='z'||c>='A'&&c<='Z') letter++; else if(c>='0'&&c<='9') number++; else if(c==' ') space++; else other++; } while(c!='\\n'); printf(\other=%d\\n\ return 0; } 2、编译,无错误、无警告后执行,结果如下: for(j=1;j<=2*i+1;j++) printf(\ printf(\ } for(i=n-1;i>=0;i--) {for(j=1;j<=n-i;j++) printf(\ for(j=1;j<=2*i+1;j++) printf(\ printf(\ } } 2、编译,无错误、无警告后运行,结果如下: 实验③:打印出以下图案:7行7列菱形 1、输入 #include #define n 3 int main() {int i,j; for(i=0;i<=n;i++) {for(j=1;j<=n-i;j++) printf(\实验 总结 实验④:编程求1!+2!+3!+……+20!。 1、输入 #include int main() { int n,m=1,sum=0; for(n=1;n<=20;n++) { m=n*m; sum=sum+m; } printf(\} 2、编译,无错误、无警告后运行,结果如下: 17

统计与信息学院

《C程序设计》实验报告( 六 )

学号: 实验名称:数组 实验地点: 姓名: 班级: 指导教师: 成绩: 实验日期: 实验软件(主要仪器设备):Visual C++6.0 实 1.掌握一维数组和二维数组的定义、赋值和输入输出的方法; 验 2.掌握字符数组和字符串函数的使用。 要3.掌握与数组有关的算法(特别是排序算法)。 求 实验①:编写程序,用scanf函数输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。 1、输入 #include main () {void Rank(int N,int n[]); int i,j,k; int n[11]; for(i=0;i<10;i++) scanf(\ Rank(10,n); scanf(\ if(k>n[9]) n[10]=k; else {for(i=0;n[i]<=k;i++); for(j=9;j>=i;j--) n[j+1]=n[j]; n[i]=k; } for(i=0;i<=10;i++) printf(\ printf(\} void Rank(int N,int n[]) { int i,k,t; for(k=1;k<=N-1;k++) for(i=N-1;i>=k;i--) if(n[i-1]>n[i]) {t=n[i]; n[i]=n[i-1]; n[i-1]=t; } for(i=0;i<=N-1;i++) printf(\ printf(\ } 2、编译,无错误、无警告后运行,运行结果如下: 实验④:将两个字符串连接起来,不要用strcat函数。 1、输入 #define M 50 #define N 20 main () {char a[M],b[N];int i,j; gets(a); gets(b); for(i=0;a[i]!='\\0';i++); for(j=0;b[j]!='\\0';j++) {a[i]=b[j];i++;} a[i]='\\0'; puts(a); } 2、编译,无错误、无警告后运行,运行结果如下: 实 验 过程 与 步 骤 18

实验②:有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,则输出“无此数” ,并且可以实现连续查找。15个数用赋初值的方法在程序中给出,要找的数用scanf函数输入。 1、输入 #include main() { static int i,j,m,a[15]={2,10,13,24,35,59,68,78, 98,102,234,526,649,758,893}; scanf(\for(j=0;j<15;j++) printf(\printf(\i=7; while(fabs(i-7)<8) { if(ma[7]) { if(a[i]-m==0) {printf(\i++; } else printf(\} if(fabs(i-7)-8==0) printf(\无此数\\n\} 2、编译,无错误、2警告后运行,运行结果如下: 实验⑤:从键盘输入5个字符串,找出最长的字符串和最大的字符串。 1、输入 #include \#define N 20 main() { char a[5][N],max[N],m,n,max1; int b[5]; int i,j; for(i=0;i<=4;i++) gets(a[i]); for(i=0;i<=4;i++) b[i]=strlen(a[i]); max1=b[0]; m=0; for(i=1;i<=4;i++) if(b[i]>=max1) { max1=b[i]; m=i; } strcpy(max,a[0]); n=0; for(i=1;i<=4;i++) if(strcmp(a[i],max)>=0) { strcpy(max,a[i]); n=i; } printf(\puts(a[m]); puts(a[n]); } 2、编译,无错误、无警告后运行,运行结果如下: 19

m=0; 实验③:将以下二维数组中数按列的顺序存放到for(j=0;j<=3;j++) 一个一维数组中。二维数组的内容是 for(i=0;i<=2;i++) 11 22 33 44 { 11 22 33 44 b[m]=a[i][j]; 11 22 33 44 m++; 则一维数组中的内容是11 11 11 22 22 22 } 33 33 33 44 44 44 for(m=0;m<12;m++) 1、输入 #include printf(\main() printf(\{ } int a[3][4]={{11,22,33,44}, 2、编译,无错误、无警告后运行,运行结果如下: {11,22,33,44},{11,22,33,44}}; int b[12],i,j,m; 实 验 总结

20

统计与信息学院

《C程序设计》实验报告( 七 )

学号: 实验名称:函数 实验地点: 实 验 要求 姓名: 班级: 指导教师:张雄 成绩: 实验日期: 实验软件(主要仪器设备):Visual C++6.0 1.掌握定义函数的方法; 2.掌握函数实参与形参的对应关系,以及“值传递”的方式; 3.掌握函数的嵌套调用和递归调用的方法; 4.掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法。 实验①:写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。 1、输入 #include int is_prime(int m) { int i; if(m==1) return 0; for(i=2;i void main() { int gy(int,int); int gb(int,int); int m,n; restart: scanf(\ printf(\最大公约数是%d\\n\ printf(\最小公倍数是%d\\n\ goto restart; } int gy(int x,int y) { int a,b,c,d; if(x>=y) {a=x,b=y;} else {a=y,b=x;} while(d!=0) {c=a/b;d=a%b;a=b;b=d;} return a; } int gb(int x,int y) { return(x*y)/gy(x,y); } 2、编译,无错误、无警告后运行,结果如下: 实 验 过程 与 步 骤 21

实验③:已知二阶Fibonacci数列: 0 若n=0 Fib(n)= 1 若n=1 Fib(n-1)+Fib(n-2) 其他情况 定义递归函数求Fib(n)。 1、输入 #include int fib(int n) { if(n==0 ) return 0; else if(n==1) return 1; else { return fib(n-1)+fib(n-2); } } void main() { int n; scanf(\ printf(\} 2、编译,无错误、无警告后运行,结果如下: 实验④:编写函数,求 ?n! 110 1、输入 #include int func(int n) { if(n==0||n==1) { return 1; } else { return n*func(n-1); } } int main(void) { int n; int i; int sum = 0; printf(\请输入一个正整数:\ scanf(\ for (i=1;i<=n;i++) { sum+=func(i); } printf(\ return 0; } 2、编译,无错误、无警告后运行,结果如下: 实验 总结

22

统计与信息学院

《C程序设计》实验报告( 八 )

学号: 实验名称:指针 实验地点: 实 验 要求 姓名: 班级: 指导教师: 成绩: 实验日期: 实验软件(主要仪器设备):Visual C++6.0 1.掌握指针的概念,会定义和使用指针变量; 2.学会使用数组的指针和指向数组的指针变量; 3.学会使用字符串的指针和指向字符串的指针变量; 4.学会使用指向函数的指针变量; 5.了解指向指针的指针的概念及其使用方法。 实验①:1.定义函数void fun(int x[ ],int *max,int *min),找出数组x中的最大值和最小值,最大值和最小值通过形参指针max和min传回。 1、 输入 #include #define N 10 { void fun(int *a,int n) int i,j,k,big; i=0;big=a[0]; for(i=0;i

实验②:编写一个函数comp(s1,s2)实现两个字符串的比较。 1、输入 1.编写以下函数: #include #include main() { char s1[100],s2[100]; int i=0,j=0; printf(\ do { scanf(\ s1[i]='\\0'; printf(\do { scanf(\ }while(s2[j++]!='\\n'); s2[j]='\\0'; i=-1; j=-1; do { i++; j++; if(s1[i]>s2[j]||(s1[i]!='\\0'&&s2[j]=='\\0')) { 2、编译,无错误、无警告后运行,结果如下: 实验③:从键盘输入一个字符串与一个指定字符,调用函数,将字符串中出现的指定字符全部删除。 1、输入 #include \#include \#include \ void prochar(char *str,char c) { char *p; for(p=str;*p!='\\0';p++) if(*p!=c) *str++=*p; *str='\\0'; } void main() { char str[80],char_c; gets(str); scanf(\ prochar(str,char_c); puts(str); getch(); } 2、编译,无错误无警告后运行,结果如下: 24

实验④:将一个3×3的矩阵转置,用一函数实现。 在一主函数中用scanf函数输入以下矩阵元素: 1 3 5 7 9 11 13 15 17 将数组名作为函数参数,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出转置后的矩阵。 1、输入 #include #define N 3 int array[N][N]; void main() { void convert(int array[][3]); int i,j; printf(\输入数组:\\n\ for(j=0;j

本文来源:https://www.bwwdw.com/article/5g5o.html

Top