C语言程序设计12
C语言程序设计实验十二
实验目的
江苏省等级考试的上机考与全国等级考试的上机考形式完全不同,江苏省等考上机只考两题,一题是改错题,但并不提示错误的位置,需要自已动脑。
改错题通常有3~4个错误。错误分为两大类,一类是语法出错,这类错误比较查错和容易修改,即修改通过编译程序提示的错误。另一类是结果出错,即程序的算法出错,这类错误需认真审题。
另一题是编程题。这类题需要整体编程。要求必须常用算法和函数参数和传递。
编程题。
实验指导
【程序功能】 在一组数值的整数中查找次大数。
【编程要求】
1、编写函数int findsecmax(int data[], int count)。函数功能:在data数组的前count个整数中查找次大数。
2、编写函数main()。函数功能:声明一个整型数组a并用测试数据初始化,用数组a及数组元素个数作实参调用findsecmax 函数找出次大数,然后将原数组及次大数输出到屏幕及数据文件myf2_1.out中。最后将考生本人的准考证号字符串输出到文件myf2_1.out中。
【测试数据与运行结果】
测试数据:1,9,2,8,3,7,4,6,10,10
屏幕输出:
1 9 2 8 3
7 4 6 10 10
Sec_max: 9
【要求】
1.源程序文件名为myf2_1.c,输出结果文件名为myf2_1.out。
2.数据文件的打开、使用、关闭均用C语言标准库中文件操作函数实现。
3.源程序文件和运行结果文件均需保存到T盘上,供阅卷使用。
4.不要复制扩展名为obj和exe的文件到T盘上。
#include /*库函数exit(0)需要*/
#include /*定义文件指针时需要的头文件*/
…………..
int findsecmax(int data[], int count){
}
int main()
{ FILE *fp;
所有数据类型的说明和定义
if((fp=fopen("t:\\myf2.out","w"))==NULL)
{ printf("\nCan't open the file!"); exit (0);}
函数调用(具体问题具体分析)
结果输出
printf("\nMy number is:120992340\n")fprintf(fp,"\nMy number is:1292340\n");
fclose(fp);
return 0;
}
【参考源程序】
#include
#include
int findsecmax(int data[], int count)
{ int i, j=0,secmax=0,max=data[0],b[10];
for(i=1;i
if(data[i]>max) max=data[i];
for(i=0;i
if(data[i]!=max) b[j++]=data[i];
for(i=0;i
if(data[i]>secmax) secmax=data[i];
return secmax;
}
int main()
{ FILE *fp;
int i,a[20]={1,9,2,8,3,7,4,6,10,10},count=10,sec_max;
if((fp=fopen("myf12_1.out","w"))==NULL)
{ printf("\nCan't open the file!"); exit (0);}
sec_max=findsecmax(a,count);
for(i=0;i
printf((i+1)%5==0?"%4d\n":"%4d",a[i]),fprintf(fp,i%5==0?"%4d\n":"%4d",a[i]);
printf("\nsec_max:%4d",sec_max),fprintf(fp, "\nsec_max:%4d",sec_max);
printf("\nMy number is:1