C语言实验册-2014.3

更新时间:2023-09-22 21:38:01 阅读量: 经管营销 文档下载

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

学 生 实 验 报 告 册

课程名称:

学生学号:

所属院部:

(理工类)

C语言程序设计 专业班级: 软嵌1班

1412102001 学生姓名: 李蒙

软件工程学院 指导教师: 陈家红

2014——2015学年 第一学期

金陵科技学院教务处制

实验报告书写要求

实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。

实验报告书写说明

实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。

填写注意事项

(1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。

(3)尽量采用专用术语来说明事物。

(4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。

实验报告批改说明

实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。

金陵科技学院实验报告

实验项目名称: 初级程序设计 实验学时: 6 同组学生姓名: 实验地点: 工科楼A107 实验日期: 实验成绩: 批改教师: 批改时间:

1

金陵科技学院实验报告

实验1 初级程序设计

一、实验目的和要求

(1)熟悉Visual C++集成环境,进行编辑、保存、编译、连接及运行,并能进行简单程序调试;

(2)掌握C语言中各种运算符的使用; (3)掌握C语言中各种数据类型的区别与应用;

(4)熟练掌握C语言中变量的定义、赋值和使用,表达式语句、输入/输出语句的使用; (5)掌握C语言中输入/输出函数的使用;

(6)掌握C语言中控制语句的使用,含if-else、for、while、do-while语句的使用。

二、实验仪器和设备

奔腾以上计算机,装有windows XP以上版本操作系统和Visual C++ 6.0软件。

三、实验内容与过程

1、程序调试

(1)#include main()

{ int s,t,p,sum;

scanf(“%d%d%d”,&s,&t,&p); sum=s+t+p;

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

(2)#include main() { int k=3;

if(k=3) printf(“***”); else printf(“###”); }

(3)#include main() {int k=0; do

{ printf(“k=%d\\n”,k); }while(k++>0); }

2、程序改错

2

金陵科技学院实验报告

下面是判断一个学生考试成绩及格与否的程序(成绩A,或B,或C者为及格;成绩为D者不及格),调试并改进如下程序使其能满足上述输出的需要。

#include main()

{ char mark=“A”; switch(mark) { case “A”: case “B”:

case “C”: printf(“>=60\\n”); case “D”: printf(“<60\\n”); default: printf(“Error\\n”); } }

3、程序设计

(1)功能:编程实现使实型正数保留2位小数,并对第三位进行四舍五入。 例如:实型数为 1234.567,则函数返回 1234.570000; 实型数为 1234.564,则函数返回 1234.560000。

(2)功能:从键盘输入一个大写字母,要求改用小写字母输出。 (3)功能:编写函数计算下列分段函数的值:

?x2?x?6x?0且x?-3?2f(x)??x?5x?60?x?10且x?2且x?3

?x2?x?1其它?(4)功能:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。x的值由主函数从键盘读入,要求不大于100。

说明:所谓“同构数”是指这样的数,这个数出现在它的平方数的右边。 例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。

(5)功能:功能:计算正整数n的所有因子(1和n除外)之和并输出。n的值由键盘输入。

例如:n=120时,输出239。

(6)功能:计算并输出下列多项式的值 S = 1 + 1/1! + 1/2! + 1/3! + ... + 1/n! 例如:键盘给n输入15,则输出为:s=2.718282。 注意:要求n的值大于1但不大于100。

(7)功能:从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。 例如:当s中的数为:7654321时,t中的数为:7531。

4、思考题

(1)功能:判断一个三位数是否\水仙花数\。在main函数中从键盘输入一个三位数,并输出判断结果。

说明:所谓\水仙花数\是指一3位数,其各位数字立方和等于该数本身。 例如:153是一个水仙花数,因为153=1+125+27。

(2)功能:计算并输出3到n之间所有素数的平方根之和。

3

金陵科技学院实验报告

/**********FOUND**********/

int a[2][]={1,34,23,56,345,7}; clrscr();

/**********FOUND**********/ max=0; s=t=0;

for(i=0;i<2;i++)

/**********FOUND**********/ for(j=1;j<3;j++) if(a[i][j]>max)

{ max=a[i][j]; s=i; t=j; } /**********FOUND**********/

printf(\}

3、程序设计

说明,所有题目均需添加main(),在main()中调用子函数并设计完整的输入输出才可调试通过。 (1) 功能:编写函数float fun(int n),求一分数序列2/1,3/2,5/3,8/5,13/8,21/13?的前n项之和。

说明:每一分数的分母是前两项的分母之和,每一分数的分子是前两项的分子之和。 例如:求前20项之和的值为32.660259。

(2)完成子函数int fun(int n),找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回。

(3)功能:编写函数void fun(int n,int a[]),按顺序将一个4位的正整数每一位上的数字存到一维数组,然后在主函数输出。例如输入5678,则输出结果为 5 6 7 8。

(4)功能:编写函数void fun(int arr[],int n)将一个数组中的值按逆序存放,并在main()函数中输出。

例如:原来存顺序为8,6,5,4,1。要求改为:1,4,5,6,8。

(5) 功能:程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),使数组a左下三角元素中的值乘以n。 例如:若n的值为3,a数组中的值为

| 1 9 7 | | 3 9 7 | a = | 2 3 8 | 则返回主程序后a数组中的值应为 | 6 9 8 | | 4 5 6 | | 12 15 18|

(6)功能:编写函数void fun(int array[3][3]),实现矩阵(3行3列)的转置(即行列互换)。

例如:输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出:

100 400 700 200 500 800

9

金陵科技学院实验报告

300 600 900

4、讨论、思考题 (1)功能:编写函数float fun(),利用以简单迭代方法Xn+1=cos(Xn)求方程:cos(x)-x=0的一个实根。迭代步骤如下:

1)取x1初值为0.0;

2)x0=x1,把x1的值赋给x0;

3)x1=cos(x0),求出一个新的x1;

4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2); 5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。 输出:程序将输出结果Root=0.739085。

(2)功能:编写float fun(float array[],int n),统计出若干个学生的平均成绩,最高分以及得最高分的人数。

例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,75,92,66,则输出平均成绩为77.9,最高分为92,得最高分的人数为3人。

(3)编写函数 int fun(int lim,int aa[MAX]),该函数的功能是求出小于lim的所有素数并放在aa数组中,该函数返回求出素数的个数。

(4)功能:编写函数int fun(int a[M][M]),求5行5列矩阵的主、副对角线上元素之和。注意,两条对角线相交的元素只加一次。

(5)功能:请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。

程序清单及流程图:

10

金陵科技学院实验报告

四、实验结果与分析(程序运行结果及其分析)

五、实验体会(遇到问题及解决办法,编程后的心得体会)

11

金陵科技学院实验报告

实验项目名称: 高级程序设计 实验学时: 6 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

12

金陵科技学院实验报告

实验3 高级程序设计

一、实验目的和要求

(1)理解C语言中指针的本质,区分指针与指针变量,掌握有关指针的应用; (2)熟练掌握字符串常量和字符串的存储及字符串处理函数的使用; (3)掌握字符指针的定义、使用等; (4)掌握向函数传递字符串的方法;

二、实验仪器和设备

奔腾以上计算机,装有windows XP以上版本操作系统和Visual C++ 6.0软件。

三、实验内容与过程

1、程序调试 (1) main()

{ int a=10,b=20,x,*pa,*pb; pa=&a;pb=&b;

printf(“%d,%d,%d,%d”,a,b,*pa,*pb); x=*pa;*pa=*pb;*pb=x;

printf(“%d,%d,%d,%d”,a,b,*pa,*pb); } (2) main()

{ int a=10,b=20,*p,*pa=&a,*pb=&b; printf(“%d,%d,%d,%d”,a,b,*pa,*pb);

p=pa;pa=pb;pb=p;

printf(“%d,%d,%d,%d”,a,b,*pa,*pb); }

(3) int *swap(int *a,int *b)

{ int *p; p=a; a=b; b=p; return(a); } main()

{int x=3,y=4,z=5; swap(swap(&x,&y),&z); printf(“%d,%d,%d”,x,y,z); }

思考:上面程序中函数swap()预将两个数的值相互交换,但结果为什么没有交换? 2、程序改错

13

金陵科技学院实验报告

要求:1、改错时,只允许修改现有语句中的一部分内容,不允许添加和删除语句。 2、提示行下一行为错误行。

(1)功能:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换,输出数组元素。

#include

void input(int *arr,int n) {

int *p,i; p=arr;

printf(\ for(i=0;i

/**********ERROR**********/ scanf(\}

void max_min(int *arr,int n) {

int *min,*max,*p,t; min=max=arr;

for(p=arr+1;p

/**********ERROR**********/ if(*p<*max) max=p;

else if(*p<*min) min=p; t=*arr;*arr=*min;*min=t; /**********ERROR**********/ if(max=arr) max=min; t=*(arr+n-1);

*(arr+n-1)=*max; *max=t; }

void output(int *arr,int n) {

int *p,i; p=arr;

printf(\ /**********ERROR**********/ while(i=0;i

main() {

int a[10]; input(a,10);

14

金陵科技学院实验报告

max_min(a,10); output(a,10); }

(2)功能:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。 例如:当s所指的字符串的内容为\时,t所指数组中的内容为\。 #include #include #include

/**********FOUND**********/ void fun (char s, char t) {

int i, d;

/**********FOUND**********/ d = len(s);

/**********FOUND**********/ for (i = 1; i

t[i] = s[d - 1 - i ]; for (i = 0; i

/**********FOUND**********/ t[2*d] = '/0'; }

main() {

char s[100], t[100];

printf(\ scanf(\ fun(s, t);

printf(\}

3、程序设计

说明,所有题目均需添加main(),在main()中调用子函数并设计完整的输入输出才可调试通过。

(1) 功能:请编写一个函数 int fun(int *s, int t, int *k),用来求出数组的最大元素在数组中的下标, 用k返回。

例如: 输入如下整数:876 675 896 101 301 401 980 431 451 777 则输出结果为: 6, 980

(2) 功能:编写函数void len_cat(char c1[],char c2[])将第二个串连接到第一个串之后,不允许使用strcat函数

(3) 功能:编写函数long fun ( char *p),将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。

例如:若输入字符串\,则函数把它转换为整数值 -1234。

15

金陵科技学院实验报告

(4) 功能:编写函数int fun(char *ptr)过滤串,即只保留串中的字母字符,并统计新生成串中包含的字母个数作为函数的返回值。

(5)功能:编写函数void fun(char s[])将一个由四个数字组成的字符串转换为每两个数字间有一个空格的形式输出。

例如:输入“4567”,应输出“4□5□6□7”(□表示空格)。

(6) 功能:编写函数void fun(char s[],char c)从字符串s中删除指定的字符c。 说明:该字符可能多次和连续出现,算法应全面考虑。

4、讨论、思考题

(1)功能:请编写函数void fun(char (*s)[N], char *b),将M行N列的二维数组中的字符数据按列的顺序依次放到一个字符串中。

例如:二维数组中的数据为: W W W W S S S S H H H H

则字符串中的内容应是:WSHWSHWSHWSH。

(2)功能:编写函数void fun(char str[],int i,int n),从字符串str中删除第i个字符开始的连续n个字符(注意:str[0]代表字符串的第一个字符)。

(3)功能:编写函数void fun(char *s,char t[]),将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

例如:若s所指字符串中的内容为:\,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是:\。

(4) 功能:请编写函数int fun( char *s),统计一行字符串中单词的个数作为函数值返回。规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。

程序清单及流程图:

16

金陵科技学院实验报告

四、实验结果与分析(程序运行结果及其分析)

五、实验体会(遇到问题及解决办法,编程后的心得体会)

17

金陵科技学院实验报告

实验项目名称: 构造类型程序设计 实验学时: 4 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

18

金陵科技学院实验报告

实验4 构造类型程序设计

一、实验目的和要求

(1)熟悉结构体和共同体的概念;

(2))熟悉并掌握结构体变量、数组和共同体变量的定义、赋值与使用; (3)掌握结构体指针的定义与引用;

(4)掌握链表的概念,初步学会对链表进行操作;

(5)熟悉文件打开、关闭、写入、读出的方法;学会使用文件操作函数。

二、实验仪器和设备

奔腾以上计算机,装有windows XP以上版本操作系统和Visual C++ 6.0软件。

三、实验内容与过程

1、程序调试 (1) struct aa

{int x,*y;}*p;

int a[8]={10,20,30,40,50,60,70,80};

struct aa b[4]={100,&a[1],200,&a[3],10,&a[5],20,&a[7]}; main() {p=b;

printf(″%d″,*++p->y); printf(″%d\n″,++(p->x)); } (2) struc STU

{ char name[10]; int num; };

void f1(struct STU c)

{ struct STU b={“LiSiGuo”,2042}; c=b; }

void f2(struct STU *c)

{ struct STU b={“SunDan”,2044}; *c=b; } main( )

{ struct STU a={“YangSan”,2041},b={“WangYin”,2043}; f1(a) ;f2(&b) ;

printf(“%d %d\\n”,a.num,b.num); } 2、程序设计

19

金陵科技学院实验报告

说明,所有题目均需添加main(),在main()中调用子函数并设计完整的输入输出才可调试通过。

(1)(2)两题的学生记录由学号和成绩组成,结构体类型定义如下:

typedef struct { char num[10]; double s;

} STREC; (1)功能:a所指向的数组中有N名学生的数据,请编写函数double fun(STREC *a,STREC *b),把a数组中分数最高的学生数据放在b所指的数组中。分数最高的学生可能不止一个,函数返回分数最高的学生人数。

(2)功能:a所指的数组中有N名学生的数据,请编写函数double fun(STREC *a,STREC *b,int *n),把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。

(3)从键盘输入一系列字符(以$作为输入结束标志),将其存入文件file1.txt中,再从该文件中查找某个字符(该字符可以输入),如果查找成功将返回成功标志,否则返回不成功标志。

3、讨论、思考题

功能:N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写子函数double fun(STREC *h),找出学生的最高分,由函数值返回。

注意:链表的节点类型定义如下: struct slist { double s;

struct slist *next; };

typedef struct slist STREC;

程序清单及流程图:

20

金陵科技学院实验报告

四、实验结果与分析(程序运行结果及其分析)

五、实验体会(遇到问题及解决办法,编程后的心得体会)

21

本文来源:https://www.bwwdw.com/article/4mcd.html

Top