printf("%5d",a[i]);
printf("\n");
}
(3)找出一个二行三列二维数组中的最大值,输出该最大值及其行列下标,建议二维数组值由初始化给出。
#include"stdio.h"
#include"conio.h"main()
{
inti,j,max,s,t;
inta[2][]={1,34,23,56,345,7};
clrscr();
max=0;s=t=0;
for(i=0;i<2;i++)
for(j=1;j<3;j++)if(a[i][j]>max){max=a[i][j];s=i;t=j;}
printf("max=a[%d][%d]=%d\n",i,j,max);
}
3、程序设计
说明,所有题目均需添加main(),在main()中调用子函数并设计完整的输入输出
才可调试通过。
⑴功能:
编写函数floatfun(intn),求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…
的前n项之和。
说明:
每一分数的分母是前两项的分母之和,每一分数的分子是前两项的分子之和。
例如:
求前20项之和的值为32.660259。
(2)完成子函数intfun(intn),找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回。
习后再利用数组作函数参数的子函数和main()函数共同实现。
(6)功能:
编写函数voidfun(intarray[3][3])互换)。
例如:
输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
五、实验注意事项
(1)调用系统库函数要包含相应头文件;
(2)函数可以嵌套调用,但不可以嵌套定义;
(3)注意数组的越界问题;
(4)找最大值(最小值)的算法:
先将第一个值认为是最大(小)的,检索以后的值,判断如果当前数组元素值比保留在变量中的最大(小)值大(小),则用当前数组元素值替换该变量中的值。
六、讨论、思考题
1、功能:
编写函数floatfun(),利用以简单迭代方法Xn+1=cos(Xn)求方程:
cos(x)-x=0的一个实根。
迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,把x1的值赋给x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤
(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
输出:
程序将输出结果Root=0.739085。
2、功能:
编写floatfun(floatarray[],intn),统计出若干个学生的平均成绩,最高分以及得最高分的人数。
例如:
输入10名学生的成绩分别为92,87,68,56,92,84,67,75,92,66,则输
出平均成绩为77.9,最高分为92,得最高分的人数为3人。
3、编写函数intfun(intlim,intaa[MAX]),该函数的功能是求出小于lim的所有素数并放在aa数组中,该函数返回求出素数的个数。
4、功能:
编写函数intfun(inta[M][M]),求5行5列矩阵的主、副对角线上元素之和。
注意,两条对角线相交的元素只加一次。
5、功能:
请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的
二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
程序清单及流程图:
四、实验结果与分析(程序运行结果及其分析)
五、实验体会(遇到问题及解决办法,编程后的心得体会)
实验项目名称:
咼级程序设计
实验学时:
6
同组学生姓名:
—
实验地点:
实验日期:
实验成绩:
批改教师:
批改时间:
实验3高级程序设计
一、实验目的和要求
(1)理解C语言中指针的本质,区分指针与指针变量,掌握有关指针的应用;
(2)熟练掌握字符串常量和字符串的存储及字符串处理函数的使用;
(3)掌握字符指针的定义、使用等;
(4)掌握向函数传递字符串的方法;
二、实验仪器和设备
奔腾以上计算机,装有windowsXP以上版本操作系统和VisualC++6.0软件。
三、实验内容与过程
1、程序调试
(1)main()
{inta=10,b=20,x,*pa,*pb;
pa=&a;pb=&b;
printf(“%d,%d,%d,%”d,a,b,*pa,*pb);
x=*pa;*pa=*pb;*pb=x;
printf(“%d,%d,%d,%”d,a,b,*pa,*pb);
}
(2)main()
{inta=10,b=20,*p,*pa=&a,*pb=&b;
printf(“%d,%d,%d,%”d,a,b,*pa,*pb);
p=pa;pa=pb;pb=p;
printf(“%d,%d,%d,%”d,a,b,*pa,*pb);
}
(3)int*swap(int*a,int*b)
{int*p;
p=a;a=b;b=p;
return(a);
}
main()
{intx=3,y=4,z=5;
swap(swap(&x,&y),&z);
printf(“%d,%d,%”d,x,y,z);
}
思考:
上面程序中函数swap()预将两个数的值相互交换,但结果为什么没有交换?
2、程序改错
要求:
1、改错时,只允许修改现有语句中的一部分内容,不允许添加和删除语句。
2、提示行下一行为错误行。
(1)功能:
为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换,输出数组元素。
#include
voidinput(int*arr,intn){
int*p,i;
p=arr;
printf("pleaseenter10integers:
\n");
for(i=0;iscanf("%d",p);
}
voidmax_min(int*arr,intn)
{
int*min,*max,*p,t;min=max=arr;
for(p=arr+1;pif(*p<*max)
max=p;
elseif(*p<*min)min=p;
t=*arr;*arr=*min;*min=t;
if(max=arr)max=min;
t=*(arr+n-1);
*(arr+n-1)=*max;
*max=t;
}
voidoutput(int*arr,intn){
int*p,i;
p=arr;
printf("Thechangedarrayis:
\n");
while(i=0;iprintf("\n");
}
main()
{
inta[10];input(a,10);
max_min(a,10);
output(a,10);
}
(2)功能:
将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。
例如:
当s所指的字符串的内容为"ABCD"时,t所指数组中的内容为"DCBAABCD。
#include
#include
#include
voidfun(chars,chart){
inti,d;
d=len(s);
for(i=1;i********FOUND********
t[i]=s[d-1-i];for(i=0;it[d+i]=s[i];
t[2*d]='/0';
}
main()
{
chars[100],t[100];printf("\nPleaseenterstringS:
");scanf("%s",s);
fun(s,t);
printf("\nTheresultis:
%s\n",t);}
3、程序设计
说明,所有要求子函数的题目均需添加main(),在main()中调用子函数并设计完
整的输入输出才可调试通过。
(1)编写一main()函数,要求利用指针,实现从键盘输入三个数,然后按照由小到大的顺序输出此三个数。
(2)功能:
编写函数floatfun(float*a,intn),用来计算n门课程的平
均分,结果作为函数值返回。
其中数组a中保存了n门课程的分数。
例如:
若有5门课程的成绩是:
90.5,72,80,61.5,55,则函数的值为:
71.80。
(3)功能:
请编写一个函数voidfun(int*s,intn,int*k),用来求出数组s中的
最大元素在数组中的下标,用k带回。
其中n为主函数数组中的数据个数。
例如:
在主函数中输入如下整数:
876675896101301401980431451777则
在主函数中输出结果为:
6,980
(4)
将第二个串连接到第一个
功能:
编写函数voidlen_cat(charc1[],charc2[])串之后,不允许使用strcat函数。
(5)功能:
编写函数voidfun(char*str,charch)从字符串str中删除指定的字符ch。
要求:
本问题要求用两种算法分别实现,一是直接删除算法即查找符合删除条件的并逐
次前移实现;二是间接删除算法即查找不符合删除条件的并保留下来,而保留的方法可以采用利用本数组和引入临时数组两种实现。
说明:
该字符可能多次和连续出现,算法应全面考虑。
(6)功能:
编写函数longfun(char*p),将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
例如:
若输入字符串"-1234",则函数把它转换为整数值-1234。
五、实验注意事项
1、对计算机执行程序过程中分配存储空间及地址的理解;
2、变量的直接引用与间接引用的区别;
3、字符串的结束标志是'0',通常以此作为控制循环的条件。
六、讨论、思考题
⑴功能:
请编写函数voidfun(char(*s)[N],char*b),将M亍N列的二维数组中的
字符数据按列的顺序依次放到一个字符串中。