C语言实验指导

孝感学院-物电学院实验中心

{int i,j,sum=0; int a[N][N]={0};

printf(\5 data:\\n\for(i=1;i

{ printf(\for(j=1;j

for(i=1;i

for(i=1;i

1. 求一个3×3矩阵对角线元素之和。

2. 打印出以下的杨辉三角形(要求打印出10行)。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ……………………

3. 有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数

22

纸上得来终觉浅,绝知此事要躬行

孝感学院-物电学院实验中心

实验八 函数

【目的与要求】

1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 【上机内容】

【例1】写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。 源程序如下: mian() {

int number;

printf(“请输入一个正整数:\\n”); scanf(“%d”,&number); if (prime(number))

printf(“\\n %d是素数.”,number); else

printf(“\\n %d不是素数.”,number); }

int prime(number) /*此函数用于判别素数*/ int number; {

int flag=1,n;

for(n=2;n

判断素数的算法,我们在以前学习循环的时候已经学过了,在这里只是把这个算法用函数的形式表示出来。这里我们要注意函数的定义、声明的方法和格式。

【例2】写一函数,是给定的一个二位数组(4×4)转置,即行列互换。 源程序如下: /*矩阵的转置*/ #define N 4 int array[N][N]; convert(array) int array[4][4]; { int i,j,t;

for (i=0;i

t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } }

23

纸上得来终觉浅,绝知此事要躬行

孝感学院-物电学院实验中心

main() {int i,j;

printf(“输入数组元素:\\n”); for (i=0;i

for (j=0;j

conver(array);

printf(“转置数组是:\\n”); for (i=0;i

for (j=0;j

本例题用数组作为函数参数,大家要注意数组作为函数参数时的用法。 【典型示例】

【例1】写两个函数,分别求两个正数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。两个正数由键盘输入。 源程序如下: #include \hcf(u,v) int u,v; { int a,b,t,r; if(u>v) {

t=u; u=v; v=t; }

a=u; b=v; while((r=b%a)!=0) { b=a; a=r; } return(a); } lcd(u,v,h)

24

纸上得来终觉浅,绝知此事要躬行

孝感学院-物电学院实验中心

int u,v,h; {

return(u*v/h); } main(){ int u,v,h,l;

scanf(\h=hcf(u,v);

printf(\l=lcd(u,v,h);

printf(\}

这是一个十分典型的算法,同学们一定要认真分析、学习。

【例2】写一函数,用“起泡法”对输入的10个字符按由小到大顺序排序。 源程序如下: /*起泡法排序*/ #define N 10 char str[N]; main() { int i,flag;

for (flag=1; flag = =1;) {

printf(“\\n输入字符串,长度为10:\\n”); scanf(“%s”,&str); if (strlen(str)>N)

printf(“超过长度,请重输!”); else flag = 0; } sort(str);

printf(“\\n排序结果:”): for (i=0;i

for (j=1;j

for (i=0;(istr[i+1]) {

25

纸上得来终觉浅,绝知此事要躬行

联系客服:779662525#qq.com(#替换为@)