《程序设计基础(C语言)》实验教学要求

  • 格式:doc
  • 大小:63.50 KB
  • 文档页数:6

《程序设计基础(C语言)》实验教学要求一、实验教学的目的和任务《程序设计基础(C语言)》实验课针对网络学院计算机专业学生(高起本、高起专)开设。

通过实验,使学生加深理解、巩固课堂教学内容:掌握程序算法设计的核心;掌握高级语言分析、高级语言设计的基本方法和过程,获得利用C语言设计工具进行设计、编程和调试的训练;培养学生进行系统分析和实现系统的能力以及编写分析报告的能力。

二、实验教学的基本要求《程序设计基础(C语言)》课程是一门培养学生利用高级语言(c)进行程序设计的基本方法和过程,具备一定的进行系统分析、设计、编程和调试能力的专业基础课。

本课程在培养实践能力方面着重设计构思、编程和分析调试技能的基本训练。

实验教材选用《C语言程序设计习题与实验指导》(高克宁著吉林大学出版社)。

除指定的16学时课程实验外,学生应利用业余时间,加强动手实践,上机实习按1:2增加时间。

实验环境为Turbo C2.0/3.0或Visual C++。

实验项目安排:(1)设计环境与程序调试:自行安排(4学时)(2)程序控制结构(分支、循环与输入/输出等): 4学时/自行安排(4学时)(3)函数(函数定义、声明、调用(嵌套调用、递归调用递归)等):4学时(可选)/自行安排(8学时)。

(4)数组(排序、查找、矩阵、字符串等):4学时/自行安排(8学时)。

(5)指针(利用指针处理字符串等):4学时/自行安排(8学时)。

(6)文件(指针、链表、文件等综合):4学时(可选)/自行安排(8学时)。

综合程序设计(1次):要求学生分组完成一个中等难度的程序设计和调试工作,每组中的每个学生至少独立完成程序中一部分模块的编写,并提交上机报告一份。

三、实验内容实验一:实验目的:1)熟悉C语言的集成编译环境;熟练地掌握C程序的编辑、编译、链接以及运行等步骤;熟悉常用的调试信息并根据系统提示的信息进行C程序的修改;掌握查看程序运行结果的方法。

2)体会编程的方法。

示范内容:1)输入并运行下面程序。

main(){int a,b,c;scanf("%d,%d",&a,&b);c=a/b;printf("%d\n",c);}要求:调试通过后,运行该程序。

(1)输入值:50,4<回车><Alt+F5>察看运行结果。

(2)输入值:50.4,10.8<回车><Alt+F5>察看运行结果。

(3)输入值:50000,100<回车><Alt+F5>察看运行结果。

(4)输入值:10,0<回车><Alt+F5>察看运行结果。

分析输出结果。

实验题:《C语言程序设计习题与实验指导高克宁著》:P82 第1,2题实验二:实验目的:1)熟练掌握scanf(getchar)/printf(putchar)库函数的调用格式及其使用,能够正确使用各种格式转换控制符。

掌握各种类型数据的输入/输出的方法。

2)熟练掌握if 、if…else、if…elseif语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。

3)熟练掌握while语句、do ...while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。

4)掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。

进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。

示范内容:1)在分析下面程序的运行结果后进行上机验证。

main( ){ int a=3,b=4,c=5,x;x=c/b+((float)a/b&&(float)(a/c));printf(″\n x=%d\n″,x);x=a++&&b--;printf(″\n%d,%d,%d,%d\n″,a,b,c,x);}上机运行的结果与你分析的结果是否一致?不一致的原因是什么?2) 编程计算main ( ){ int i=1,s=0;while(i<=10){s+=i;i++;}printf(″\n s=%d″, s)}分析:1)上机运行程序,分析运行结果。

2)采用for 语句实现,比较 while 语句和 for 语句的用法。

实验题:《C语言程序设计习题与实验指导高克宁著》:P86 第1,2,5,6题实验三:实验目的:在编程过程中加深理解函数调用的程序设计思想。

1)掌握C函数的定义方法、函数的调用方法、参数说明以及返回值。

2)掌握实参与形参的对应关系以及参数之间的“值传递”的方式;3)掌握函数的嵌套调用及递归调用的设计方法;4)掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法。

示范内容:分析下面程序,上机运行验证分析结论。

int f1(int x,int y){ retum x>y?x:y;}int f2(int x,int y){ return x>y?y:x;}main( ){ int a=4,b=3,c=5,d,e,f;d=f1(a,b);d=fl(d,c);e=f2(a,b);e=f2(e,c);f=a+b+c-d-e;printf("%d,%d,%d\n",d,e,f);}/*函数f1是一个求两个整数中最大值的函数,函数f2是一个求两个整数中最小值的函数。

*/分析并理解程序结构、牛顿迭代法的实现过程、函数定义和调用的方法,初始参数传递和结果传递的途径。

实验题:《C语言程序设计习题与实验指导高克宁著》:P88 第2,3,4题实验四:实验目的:1)掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。

2)掌握字符数组与字符串的使用方法。

理解字符数组与其它数组的区别、理解字符串及其特点。

掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。

3)掌握与数组相关的算法,包括排序算法和查找算法等。

示范内容:以下是实现两个字符串的连接(不使用库函数strcat())的程序。

上机运行程序,并分析和理解程序的实现过程,从中学会对字符串操作的程序设计。

#include<stdio.h>#include<conio.h>void fun(char p1[],char p2[]){ int i,j;for(i=0;p1[i];i++)for(j=0;p2[j];j++)p1[i++]=p2[j];p1[i]='\0';}main(){ char s1[80],s2[80];clrscr();printf("Enter s1 and s2:\n");scanf("%s%s",s1,s2);printf("s1=%s\n",s1);printf("s2=%s\n",s2);printf("Invoke fun(s1,s2):\n");fun(s1,s2);printf("After invoking:\n");printf("%s\n",s1);}例如,分别输入下面两个字符串:This is the best program.程序输出:This is the best porgram.实验题:《C语言程序设计习题与实验指导高克宁著》:P90 第1,2,6题实验五:实验目的:1)掌握指针的基本概念和基本用法。

包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等。

2)掌握数组与指针的关系并能够利用指针解决数组的相关问题。

3)掌握字符串与指针的关系并能够利用指针处理字符串的问题。

4)掌握指针与函数的关系并能够利用指针处理函数问题。

5)能够使用指针进行程序设计。

示范内容:下面是合并两个字符串的程序。

在分析下面程序后进行上机验证并分析运行结果。

void append (char *from, char *to){ for(;*to;to++);for(;*from;) *to++=*from++;*to=0;}main( ){ char a[70],b[70];printf( ″ \n input string a: ″ );scanf( ″ %s ″ ,a);printf( ″ \n input string b: ″ );scanf( ″ %s ″ ,b);append (a,b);printf( ″ \n%s ″ ,a);}理解指针传递参数的用法。

实验题:《C语言程序设计习题与实验指导高克宁著》:P93 第1,2,3题实验六:实验目的:1)理解结构体类型的含义;掌握结构体类型变量的定义方法和使用;结构体类型变量的说明以及初始化方法。

2)掌握链表的概念,初步学会对链表进行操作,包括建立链表、输出链表。

3)掌握对文件的简单操作,应用文件系统进行程序设计。

示范内容:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。

#include "stdio.h"struct student{ char num[6];char name[8];int score[3];float avr;} stu[5];main(){ int i,j,sum;FILE *fp;/*input*/for(i=0;i<5;i++){ printf("\n please input No. %d score:\n",i);printf("stuNo:");scanf("%s",stu[i].num);printf("name:");scanf("%s",stu[i].name);sum=0;for(j=0;j<3;j++){ printf("score %d.",j+1);scanf("%d",&stu[i].score[j]);sum+=stu[i].score[j];}stu[i].avr=sum/3.0;}fp=fopen("stud","w");for(i=0;i<5;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("file write error\n");fclose(fp);}分析程序,上机运行程序并分析运行结果。