printf("\t%d\n",min);
};
for(j=0;j<4;j++)
{for(i=0;i<3;i++)
{max=a[0][j];
if(a[i][j]>a[0][j])max=a[i][j];}
printf("\t%d",max);}
实验结果:
实验小结:
注意格式
上机题6输入并运行以下程序。
实验内容:
字符串的输入与输出
#include
main()
{chara[7]="Foxpro";
printf("%s\n");
printf("%c\t%c\t%c\n",a[0],a[1],a[2]);
}
实验结果:
实验小结:
数组可以用字符串进行初始化“chara[7]=“Foxpro”;”,但是不能将字符串直接赋给数组,如“a[7]=”Foxpro;”和“a=”Foxpro;”都是错误的。
字符串的最后有串尾标志‘\o’,所以“chara[6]=”Foxpro”;”也是不正确的。
用“%s”格式输出指定地址开始的字符串,用“%c”格式输出数组元素的字符。
上机题7输入并运行以下程序。
实验内容:
利用二维数组对字符串进行输入输出
#include
main()
{inti;
chara[][8]={"SQL","Foxpro","Unix","ASP"};
for(i=0;i<=3;i++)
printf("%s\n",a[i]);
}
实验小结:
“chara[][8]={"SQL","Foxpro","Unix","ASP"};”定义了一个二维数组。
a[0]是一个字符串的串首地址,a[1]是第2个字符串的串首地址,a[i]为第i个字符串的串首地址。
因此,字符串输出时用“printf(“%s”,a[i]);”。
上机题8输入并运行以下程序,分析程序运行结果。
实验内容:
引用函数对数组进行运算
#include
main()
{inta[5]={1,2,3,4,5};
inti;
pr(a);
for(i=0;i<5;i++)printf("%5d",a[i]);
printf("\n");
}
pr(p)
intp[];
{inti;
for(i=0;i<5;i++)p[i]=p[i]*p[i];
}
实验结果:
实验小结:
当形参为数组时,对应的实参为数组名,传递的是数组的首地址,此时实参数组与形参数组共享同一段内存单元,形参数组元素的改变会影响实参数组元素的改变。
上机题9编写程序:
从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序并输出。
自定义函数voidantitone
(inta[],intn)实现将数组中的n个数据按逆序存放。
实验内容:
将数组反序并输出,
实验步骤:
#include
voidantitone(inta[],intn);
intb[5],n;inti;
main()
{n=5;
for(i=0;i{scanf("%d",&b[i]);
}
antitone(b,5);
}
voidantitone(inta[],intn)
{inti,t,c[5];
for(i=0;i{c[i]=a[n-i-1];
printf("%d",c[i]);}}
实验结果:
实验小结:
注意局部变量与全局变量作用域,数组的常量表达式必须是常量,格式必须对,还有对程序的了解。
上机题10已知某数列的前两项为2和3,其后每一项为其前两项之积。
分别用函数和数组实现:
从键盘输入一个整数x,判断并输出x最接近数列的第几项?
实验内容:
从键盘输入一个整数x,判断并输出x最接近数列的第几项
实验步骤:
#include
#include
#defineM100
inta[M]={2,3};
inti,x,t;
main()
{for(i=0;i<98;i++)
a[i+2]=a[i+1]+a[i];
scanf("%d",&x);
for(i=0;i<99;i++)
{if(fabs(a[i+1]-x)t=i+1;
elset=i;
if(x-a[i]<0)break;}
printf("%d",t);
}
实验结果:
实验小结:
注意对输出时,不要相互赋值例如a【i+1】=a【i】,这样会使输出结果出现数组后几组数据的丢失,注意循环结构的结束循环的控制。
上机题11分别用函数和数组实现,输入10个学生5门课的成绩并完成如下功能:
(1)求每个学生的平均分。
(2)求每门课程的平均分。
(3)输出一张包括10个学生成绩的成绩单。
(4)找出最高分数所对应的学生(学号)和课程。
(5)分别统计5门课程都高于90分的学生人数。
实验内容:
用函数和数组实现,求每个学生的平均分,求每门课程的平均分,输出一张包括10个学生成绩的成绩单,找出最高分数所对应的学生(学号)和课程,分别统计5门课程都高于90分的学生人数。
实验步骤:
#include
inti,j,a[10][5],t,k,w;
staticfloatc[10]={0};staticfloatd[5]={0};
voidmax(floatc[10])
{
for(i=0;i<9;i++)
{
if(c[i+1]>c[i])t=i+1;
elset=i;
}
printf("%s%d\n","最好成绩学号",t);
}
voidmax1(floatd[5])
{
for(j=0;j<4;j++)
{
if(d[j+1]>c[j])k=j+1;
elsek=j;
}
printf("%s%d","最好成绩科目",k);
}
voidmax2(floate[10][5])
{{
for(i=0;i<10;i++)
{for(j=0;j<5;j++)
{
if(e[i][j]<90)continue;
}
w++;}
}
printf("%s%d","成绩大于90的人数",w);}
intmain()
{
for(i=0;i<10;i++)
{for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
c[i]+=a[i][j];}
}
printf("%s%s%s%s%s%s%s\n","学号","语文","高数","英语","程序设计","马克思","平均成绩");
for(i=0;i<10;i++)
{printf("%d",i);
for(j=0;j<5;j++)
{
printf("%d",a[i][j]);}
printf("%f\t\n",c[i]/5);}
printf("%s","平均成绩");
for(j=0;j<5;j++)
{
for(i=0;i<10;i++)
{d[j]+=a[i][j];}
printf("%.2f\t",d[j]/10);
}
max(c);max1(d);max2(a);
return0;
}
实验结果:
实验小结:
函数的调用需要注意参数的作用域,for语句要注意循环体的范围。
实验总结:
只有用心读程序才能将程序写好。
一般的实验步骤:
程序分析
算法设计
编写程序
程序的检错
程序更正
程序优化
姓名论文成绩
评语:
指导教师(签名)
年月日