通知
各位老师:
本学期非计算机专业《计算机程序设计基础(C语言)》课实验报告要求:
1.统一用《武汉科技大学实验报告》本写。
本学期交三次实验报告。
①循环结构程序设计。
②数组。
③函数。
要求学生在完成以下实验报告,参考《C语言程序设计课程实验与题解》中的要求认真完成。
实验1 循环结构程序设计
一、实验目的
1.熟悉用while语句,do-while语句和for语句实现循环的方法。
2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。
3.熟悉break语句和continue语句用法的不同之处。
二、实验内容
【例】以下程序,输出下三角形状的乘法九九表。
#include <stdio.h>
void main()
{ int i,j;
for (i=1;i<=9;i++) /* 打印表头*/
printf(" %4d",i);
printf("%c",'\n');
for (i=0;i<=50;i++)
printf("%c",'_');
printf("%c",'\n');
for (i=1;i<=9;i++) /* 循环体执行一次,打印一行*/
{ for (j=1;j<=i;j++)
printf(" %4d",i*j); /* 循环体执行一次,打印一个数据*/
printf("%c",'\n'); /* 每行尾换行*/
}
printf("%c",'\n');
}
输入并执行该程序,观察输出结果,试着修改程序打印上三角形状的乘法九九表。
三、编程序并上机调试运行。
1.打印出所有“水仙花数”。
所谓“水仙花数”是指一个三位数,其各位数字的立方和正好等于该数本身。
例如:153是一个“水仙花数”,因为153=13+53+33。
解题思路:根据题目要求只要分别求出一个三位数的个位、十位、百位上的数字,然后判断是否满足(某一三位数a=a的百位的立方+a的十位的立方+a的个位的立方)这个公式,满足这个三位数就是“水仙花数”。
2.李先生岁数的平方与他的夫人的岁数之和是1053,而他的夫人的岁数的平方与他
的岁数之和是873,请编写程序计算李先生及其夫人的岁数各是多少。
四、实验小结(结合本次实验的经验谈谈想法,忌空洞无物,不少于100字)
实验2 数组
一、实验目的
1.掌握一维数组、二维数组的定义、赋值和输入输出的方法;
2.掌握字符数组的使用;
3.掌握与数组有关的算法(例如排序算法)。
二、实验内容
【例】有一个M×N 阶矩阵,求其中最大值和最小值,以及它们的行号和列号。
#include <stdio.h>
# define M 5
# define N 5
void main( )
{ int i, j, max, min, row1, row2, colum1, colum2, a[M][N];
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf( “%d”,&a[i][j]); //输入矩阵
row1=row2=colum1=colum2=0;
max=min=a[0][0];
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{ if(a[i][j]>max)
{ max=a[i][j]; //将当前最大值赋给max
row1=i; //记录最大值的行号
colum1=j; //记录最大值的列号
}
if(a[i][j]<min)
{ min=a[i][j]; /* 将当前最小值赋给min*/
row2=i; /*记录最小值的行号*/
colum2=j; /*记录最小值的列号*/
}
}
printf(“max=%d,row1=%d,colum1=%d\n”,max,row1,colum1);
printf(“min=%d,row2=%d,colum2=%d\n”,min,row2,colum2);
}
输入并执行该程序,观察输出结果。
三、编程序并上机调试运行。
1.已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。
2. 打印出以下的杨辉三角形(要求打印出10行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
四、实验小结(结合本次实验的经验谈谈想法,忌空洞无物,不少于100字)
实验3 函数
一、实验目的
1掌握定义函数的方法;
2掌握函数实参与形参的对应关系以及“值传递”的方式;
3掌握函数的嵌套调用和递归调用的方法;
4掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法;
二、实验内容
【例】:有5个人,第5个人说他比第4个人大2岁,第4个人说他对第3个人大2岁,第3个人说他对第2个人大2岁,第2个人说他比第1个人大2岁,第1个人说他10岁。
求第5个人多少岁。
分析:10 (n=1)
age(n)=
age(n-1)+2 (n>1)
程序如下:
#include <stdio.h>
int age(int n)
{ int c;
if (n==1) c=10;
else c=age(n-1)+2;
return c;
}
void main()
{
printf("%d",age(5));
}
结果:18
结合以上程序,思考一下age( )函数递归调用的过程。
三、编程序并上机调试运行。
(1)写一个判别素数的函数,在主函数输人一个整数,输出是否素数的信息。
本程序应当准备以下测试数据:17、34、2、l 、0。
分别输人数据,运行程序并检查结果是否正确。
(2)编写程序,计算下面公式并输出结果。
!
)!(!m m n n C m
n -= 要求:(a )编写一个函数计算n!
(b )编写主函数,由键盘输入n 和m ,调用(a )中的函数完成计算。
(c )输入n 和m 要给出提示,并检查n 和m 的合理性,不合理的输入应输出错误信息,并不再进行计算。
(d )运行程序并计算C 58、C 27、C 18、C 77、C 08。
四、实验小结(结合本次实验的经验谈谈想法,忌空洞无物,不少于100字)。