C语言程序设计 课程实验报告
系 (院): 信息工程学院 班 级: 学 号: 姓 名: 完成日期: 20xx年2-6月 指导教师: 徐永安
二○一三年六月
C语言程序设计实验内容安排
实验一、了解编程环境
主要内容:基于Visual C++6.0对C语言的兼容,了解Visual C++6.0--Win32 Console Application 的编程步骤,通过简单编程了解printf()、scanf()、getch()/getchar()的基本用途,了解基本编程规范。
实验二、顺序结构
主要内容:学会在程序中运用基本类型数据和表达式;重点掌握赋值语句和格式I/O语句在程序开发中的运用。
实验三、条件结构
主要内容:熟悉if语句和switch语句的语法规则及应用;学会编写分支结构的C程序。 实验四、循环结构
主要内容:训练循环设计技巧,重点训练for循环、while循环和do-while循环的构造技术,进一步加深对有关经典算法的理解,能灵活运用循环结构编写高质量的C程序。
实验五、数组
主要内容:掌握数值型数组和字符型数组各自的编程特点,积累有关经典算法,能在程序中灵活使用数组技术。
实验六、函数
主要内容:熟悉模块化设计方法在C语言中的实现,能进行正确的函数调用,并能实现函数嵌套调用,进一步积累程序调试经验,增强编写大型程序的能力。
实验七、指针
主要内容:练习指针变量、指向一维数组的指针变量、指向二维数组的指针变量在程序中的运用,练习编写返回指针值的函数,掌握指针在函数通信中的运用,能合理运用指针技术编写更为高效、紧凑的C程序。
实验八、结构
主要内容:学会在程序中运用结构变量和结构数组,掌握指向结构体的指针变量的定义和使用方法,掌握动态存储分配函数,熟练掌握链表操作。
实验九、文件
主要内容:学会数据文件的建立、读写和关闭操作。能在程序中使用数据文件实现相关算法。
备注:
(1)实验报告总量控制在10页以内,标题黑体小四,其它五号字体、单倍行距。
(2)提交程序全部工程的压缩文件。
(3)考虑Word文档实验报告的篇幅限制(10以内),可挑选实验二到九中的任意4个实验写Word文档实验报告。实验结果输出界面为黑底白字的,请做反色处理。
(以下是某个实验的文档格式,供大家参考)
实验五、数组应用
1、 实验目的
掌握数值型数组和字符型数组各自的编程特点,积累有关经典算法,能在程序中灵活使用数组技术。
2、 实验内容
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
3、设计思路
4、实现代码
#include<stdio.h>
void main()
{
char string[81]; //字符数组
int i,num=0;//统计单词个数
int word=0;//判别是否是单词的标志,word=0表示未出现单词,若出现单词word就置为1 char c;
gets(string); //键盘输入字符串
for(i=0;(c=string[i])!='\0';i++) //循环与数组结合,统计字符串中的单词数
{
if(c==' ')
word=0;
else if(word==0)
{
word=1;
num++;
}
}
printf("There are %d words in the line.\n",num);//输出结果
}
5、实验结果
6、实验体会
通过实验验证,将数组和循环相结合,能够有效提高数据处理效率。
第二篇:《C语言》课内实验报告
一、实验题目:
函数的应用
二、实验目的:
1.进一步掌握函数的定义方法、调用方法,实参与形参的对应关系,以及调用函数的执行过程。
2.掌握函数的嵌套调用、递归调用、数组作为函数参数的设计方法。
3.进一步理解变量的作用域和生存期。
三、实验内容:
1.定义一个求阶乘的递归调用函数double fac(int n),在主函数中调用3次该函数分别求出8!、10!、18!的准确值(结果:8!=40320,10!=3628800,18!=6402373705728000)。编写源程序,给出注释及运行结果。(提示,请参阅教材上174页例8.7的程序)。
2.编写一个将n个整数用选择法按由小到大的顺序排序的函数void sort(int array[], int n),在主函数中调用两次该函数,对任给出个数分别是10和15的两组整数进行排序。编写源程序,给出注释及运行结果。(提示,请参阅教材上181页例8.13的程序)。
3.编写一个求3个学生的各科平均成绩的程序,每个学生有4科成绩,学生成绩存放在a数组中,求平均成绩需调用函数void aver(float array[][4], int n),n为学生数,其中a数组的矩阵表示为 。编写源程序,给出注释及运行结果,自己试着增加学生数或者成绩科数再运行程序。(提示,可参阅教材183页例8.14的程序,注意按科平均成绩可存入数组A中,只需将A增加1行并先付初值0,求出平均值之后替换0)
四、实验结果:
1、
#include <stdio.h> /*标准函数输入输出库*/
void main() /*主函数*/
{
float fac(int n); /*声明调用的函数*/
int n,i; /*定义整型变量*/
float y; /*定义浮点型变量*/
printf("input the integer number:\n");
for(i=1;i<4;i++)
{
scanf("%d",&n); /*输入n的值*/
y=fac(n); /*把fac的值赋给y*/
printf("%d!=%10.0f\n",n,y); /*输出y的值*/
}
}
float fac(int n) /*定义浮点型函数*/
{
float f; /*定义浮点型变量*/
if(n<0)
{
printf("n<0,dataerror!"); /*当n<0时输出n<0,dataerror*/
}
else
if(n==0||n==1)
f=1; /*当n等于0或2时f赋值1*/
else
f=fac(n-1)*n; /*当n大于1时把n*(n-1)的值赋给f*/
return(f); /*返回f的值*/
}
2、
#include <stdio.h> /*标准函数输入输出库*/
void main() /*定义空型主函数*/
{
void sort(int array[],int n); /*声明调用的函数*/
int a[10],i,b[15]; /*定义整型数组a,b和变量i*/
printf("enter the array:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]); /*依次输入数组a的值*/
sort(a,10); /*把a和10传给函数sort*/
printf("the sorted array:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]); /*依次输出数组a的值*/
printf("\n");
printf("enter the array:\n");
for(i=0;i<15;i++)
scanf("%d",&b[i]); /*依次输入数组b的值*/
sort(b,15); /*把b和15传给函数sort*/
printf("the sorted array:\n");
for(i=0;i<15;i++)
printf("%5d",b[i]); /*依次输出数组b*/
printf("\n");
}
void sort(int array[],int n) /*定义函数sort*/
{
int i,j,k,t; /*定义变量i,j,k,t*/
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(array[j]<array[k]) /*判断数组的前向是否小于后向*/
k=j;
t=array[k];
array[k]=array[i];
array[i]=t; /*交换相邻两厢的值*/
}
}
3、
#include <stdio.h> /*标准函数输入输出库*/
void main() /*定义空型主函数*/
{
void aver(float a[][5],int n); /*声明调用的函数*/
float a[3][5]={{65,67,70,60,0},{80,87,90,81,0},{90,99,100,98,0}};
aver(a,3);
}
void aver(float a[][5],int n) /*定义函数aver*/
{
int i,j; /*定义整型变量*/
float sum; /*定义浮点型变量*/
for(i=0;i<n;i++)
{
sum=0;
for(j=0;j<4;j++)
sum=sum+a[i][j]; /*把每列的和赋给sum*/
a[i][4]=sum/4; /*把每列的平均值赋给第5列*/
printf("%6.2f",a[i][4]); /*输出每列的平均值*/
}
}
#include <stdio.h>
void main()
{
void aver(float a[][5],int n);
int i;
float a[4][5]={{65,67,70,60,0},{80,87,90,81,0},{90,99,100,98,0},{80,75,87,98,0}};
aver(a,4);
}
void aver(float a[][5],int n)
{
int i,j;
float sum;
for(i=0;i<n;i++)
{
sum=0;
for(j=0;j<4;j++)
sum=sum+a[i][j];
a[i][4]=sum/4;
printf("%6.2f",a[i][4]);
}
}