if(a[i]%j==0)
break;
if(j==a[i])
printf("%5d",a[i]);
}
}
【题目7】以下程序是求二维数组中的最小数及其下标(设最小数是唯一的),请填空完成程序,并上机验证。
#include{
inti,j,row,col,min;
inta[3][4]={{},{},{}};
min=a[0][0];
_______________________
for(j=0;j<4;j++)
if(___________________)
{
min=a[i][j];
row=i;
col=j;
}
printf("min=%d,row=%d,col=%d\n",min,row,col);
}
【题目8】以下程序是实现输出杨辉三角(最多十行),请将程序补充补充完整。
1
11
121
1331
14641
15101051
…
#defineN11
#include{
inti,j,a[N][N];
for(i=1;i{
a[i][1]=1;
a[i][i]=1;
}
for(i=3;ifor(j=2;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i{
for(j=1;j<=i;j++)
printf("%6d",a[i][j]);
printf(”\n”);
}
printf("\n");
}
【题目9】从键盘上任意键入n阶方阵,求它的两条对角线元素之和。
【题目10】分析以下读程序,写的运行结果,并上机验证。
#include{
charc,s[]="BABCDCBA";
intk;
for(k=1;(c=s[k])!
='\0';k++)
{
switch(c)
{
case'A':
putchar('?
');continue;
case'B':
++k;break;
default:
putchar('*');
case'C':
putchar('&');continue;
}
putchar('#');
}
putchar('\n');
}
【题目11】输入一串字符,计算其中字母的个数。
#include{
charch[N];
inti,count=0;
puts("请输入一串字符:
");
_____________________*提示:
使用字符串输入函数*
for(i=0;iif(_____________________________________)
count++;
printf("字母个数为:
%d\n",count);
}
【题目12】编程:
输入一串字符,要求逆序输出。
2.选择内容
【题目13】将两个字符串连接起来,不使用strcat字符函数
#include{
chars1[2*N],s2[N];
inti=0,j=0;
printf("\n请输入两个字符串,以空格或回车键作字符串结束标志:
\n");
scanf("%s",________);
scanf("%s",________);
while(s1[i]!
='\0')
i++;
while(_______________)
s1[i++]=s2[j++];
s1[i]='\0';
printf("\n连接后的两个字符串为:
\n%s\n",s1);
}
【题目14】在字符串str中查找字符ch首次出现的位置,若str字符串中不包含字符ch,则输出0。
【题目15】有4位学生,考4门功课。
求出每位学生的总分和平均分,及所有学生每门功课平均分和所有功课的平均分。
【题目16】找出一个二维数组的”鞍点”,即该位置上的元素在该行上最大,在该列上最小,如无”鞍点”,则给出提示。
三、实验结果(用截图说明)
1
2
3
4
5
6
7
8
9
10
11
12
13
四、调试心得(选作)
实验7函数实验
教学班级:
学号:
姓名:
实验日期:
2013年5月28日实验地点:
4-210(机房)
实验成绩:
___________
一、实验目的
(1)理解函数定义的方法。
(2)掌握函数实参与形参的对应关系,以及函数”参数传递”的方式。
(3)掌握函数的嵌套调用和递归调用的方法;
(4)掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。
一、实验任务
1.基本内容
【题目1】以下程序是求3个数中的最大值,请完善程序并上机验证。
#include{
inta,b,c,m;
intmax(intx,inty);*函数声明*
printf("inputa,b,c=");
scanf("%d,%d,%d",&a,&b,&c);
m=max(max(a,b),c);
printf("最大值是:
%d\n",m);
}
intmax(intx,inty)*函数定义*
{
intz;
z=(x>y)?
x:
y;
returnz;
}
【题目2】程序填空:
子函数中判断一个大于1的整数是否是素数,数据由主函数中输入,并在主函数中显示结果。
#include{
intnumber;
intprime(intnumber);
printf("请输入一个正整数:
\n");
scanf("%d",&number);
if(__prime(number)________________________)
printf("\n%d是素数:
",number);
else
printf("\n%d不是素数:
",number);
}
intprime(intnumber)*请注意区别main函数和prime函数中的number变量*
{
intflag=1,n;
for(n=2;flag==1&&n<=number2;n++)
if(___number%n==0________________________)
flag=0;
return(flag);
}
【题目3】读程序,验证结果。
#include{
inti=2,p;
intf(inta,intb);
p=f(i,i+=1);
printf("%d\n",p);
}
intf(inta,intb)
{
intc;
if(a>b)
c=1;
elseif(a==b)
c=0;
else
c=-1;
return(c);
}
①将程序中第4行语句:
p=f(i,i+=1);改为以下语句,比较程序结果:
p=f(i+=1,i);
②实践说明,函数的参数求值顺序是:
从右向左。
【题目4】编程在主函数中输入和输出字符串,在子函数中实现一个字符串按反序存放。
【题目5】用子函数计算4名学生的平均分。
标注“error”处有错误,请改正。
#include}
voidmain()
{
floatscore[N],aver;
inti;
printf("\ninput%dscores:
\n",N);
for(i=0;iscanf("%f",&score[i]);
aver=average(score);*error*
printf("\naveragescoreis%5.2f\n",aver);
}
【题目6】改正标注“error”语句行的错误,理解本程序的功能。
#include{
inta[][3]={},sum;
intfunc(inta[][3]);*函数声明*
sum=func(a);
printf("\nsum=%d\n",sum);
}
intfunc(inta[][3])
{
inti,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j)
sum+=a[i][j];
returnsum;
}
【题目7】在主函数中定义数组A[3][4]、B[4],用子函数对数组A每一行求和,其值放在数组B中,在主函数中输出数组B的值。
【题目8】输入两个正整数,求其中最大公约数和最小公倍数。
将程序补充完整。
#include}
intfun2(intx,inty)
{
returnx*yfun1(x,y);
}*函数的嵌套调用*
voidmain()
{
inta,b;
printf("请输入两个正整数:
\n");
scanf("%d,%d",&a,&b);
printf("它们的最大公约数为:
%d\n",___fun1(a,b)_____________);
printf("它们的最小公倍数为:
%d\n",_____fun2(a,b)___________);
}
【题目9】阅读以下程序,若输入为ABCDE#时,写出程序的执行结果。
#include"stdio.()
{
reverse();
printf("\n");
}
【题目10】编程计算猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,只剩下一个桃子了,求第一天共摘了多少桃子?
【题目11】阅读以下程序,该程序中,main函数的局部变量是:
_______________,max函数的局部变量是:
_______________,全局变量是:
_____________,理解它们的使用方式。
#include}
voidmain()
{
inta=9;
printf("%d\n",max(a,b));
}
【题目12】以下是一个求1-10累加和的错误程序,请改正。
#include{
inti,s;
intsum(intj);
for(i=1;i<=10;i++)
s=sum(i);
printf("s=%d\t",s);
}
sum(intj)
{
staticintx=0;
x+=j;
return(x);
}
2.选择内容
【题目13】编写一个函数,判断一个整数是不是回文数。
如:
34543是回文数,个位与万位相同,十位与千位相同。
【题目14】在一个数组A中存放100个数据,用子函数判断该数组中那些是素数,并统计该素数的个数,在主函数中输出该素数的个数。
【题目15】用递归法将一个整数转换成字符串。
例如,输入1234,应输出字符串”1234”。
n的位数不确定,可以是任意的整数。
请在注释行中添加注释,使程序易于理解。
#include{
inti;
if((i=n10)!
=0)*__________________________________*
convert(i);
putchar(n%10+'0');*___________________________________*
}
voidmain()
{
intnumber;
printf("\n输入整数:
");
scanf("%d",&number);
printf("\n输出字符是:
");
if(number<0)*______________________________________*
{
putchar('-');
number=-number;
}
convert(number);
printf("\n");
}
二、实验结果(用截图说明):
1.
2.:
3.
4.
5.
8.
9.
11
12.
四、调试心得(选作)
实验8