论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

2001年9月计算机等级考试二级C语言上机试题(10、11、12)

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:47:25

/*程序修改题10
给定程序MODI1.C中函数fun的功能是:求出a所指数组中最大
数和次最大数(规定最大数和次最大数不在a[0]和a[1]中),依次和
a[0]、a[1]中的数对调。
例如数组中原有的数为:7、10、12、0、3、6、9、11、5、8,
输出的结果为:12、11、7、0、3、6、9、10、5、8。
请改正程序中的错误,使它能得出正确的结果。
注重:不要改动main函数,不得增行或删行,也不得更改程序
的结构!
*/
#include
#include
#define N 20

int fun ( int * a, int n )
{ int k,m1,m2,max1,max2,t;
max1=max2= -32768; m1=m2=0;
for ( k = 0; k < n; k++ )
if ( a[k]>max1 )
{ max2 = max1; m2 = m1;
max1 = a[k]; m1 = k;
}
else if( a[k]>max2 )
{ max2 = a[k]; m2 = k; }
/************found************/
t = a[0]; a[0]=a[m1]; a[m1] = t;
// t = a[0]; a[m1]=a[0]; a[m1] = t;
/************found************/
t = a[1]; a[1]=a[m2]; a[m2] = t;
// t = a[1]; a[m2]=a[1]; a[m2] = t;
}

main( )
{ int x, b[N]={7,10,12,0,3,6,9,11,5,8}, n=10, i;
clrscr( );
for ( i = 0; i < n; i++) printf("%d ",b[i]); printf("\n");
fun (b, n);
for ( i=0; i < n; i++ ) printf("%d ",b[i]); printf("\n");
}

/* 编程题

函数fun的功能是:将两个两位数的正整数a、b合并形成一个
整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数
的个位和十位上, b数的十位和个位数依次放在c数的百位和千位
上。
例如,当a=45,b=12。调用该函数后,c=2154。
注重: 部分源程序存在文件PROG1.C中。数据文件IN1.DAT中
的数据不得修改。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun
的花括号中填入你编写的若干语句。
*/
#include
#include
void fun(int a, int b, long *c)
{//
*c=a/10+a%10*10+b/10*100+b%10*1000;

//
}
main()
{ int a,b; long c;
clrscr();
printf("Input a, b:");
scanf("%d%d", &a, &b);
fun(a, b, &c);
printf("The result is: %ld\n", c);
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *rf, *wf ;
int i, a,b ; long c ;
rf = fopen("in1.dat", "r") ;
wf = fopen("bc10.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%d,%d", &a, &b) ;
fun(a, b, &c) ;
fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;
}
fclose(rf) ;
fclose(wf) ;
}

/* in1.dat 内容如下:
45,12
63,54
14,78
88,91
71,13
12,45
72,32
29,99
34,43
22,44
*/
/* bc10.dat 内容应当如下:
a=45,b=12,c=2154
a=63,b=54,c=4536
a=14,b=78,c=8741
a=88,b=91,c=1988
a=71,b=13,c=3117
a=12,b=45,c=5421
a=72,b=32,c=2327
a=29,b=99,c=9992
a=34,b=43,c=3443
a=22,b=44,c=4422
*/

/*程序修改题11
给定程序MODI1.C中函数 fun 的功能是:计算正整数num的各
位上的数字之积。例如,若输入:252,则输出应该是:20。若输
入:202,则输出应该是:0。
请改正程序中的错误,使它能得出正确的结果。
注重:不要改动main函数,不得增行或删行,也不得更改程序
的结构!
*/
#include
#include

long fun (long num)
/************found************/
{long k=1;
//{ long k;
do
{ k*=num%10 ;
/************found************/
num/=10;
// num\=10 ;
} while(num) ;
return (k) ;
}

main( )
{ long n ;
clrscr() ;
printf("\Please enter a number:") ; scanf("%ld",&n) ;
printf("\n%ld\n",fun(n)) ;
}

/*
请编写一个函数fun,它的功能是:计算n门课程的平均分,计
算结果作为函数值返回。
例如:若有5门课程的成绩是:90.5, 72, 80, 61.5, 55
则函数的值为:71.80。
注重: 部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun
的花括号中填入你编写的若干语句。
*/
#include
float fun ( float *a , int n )
{//
int i; float sum=0;
for(i=0; i
sum+=a[i];
return(sum/n);
//
}

main()
{ float score[30]={90.5, 72, 80, 61.5, 55}, aver;
aver = fun( score, 5 );
printf( "\nAverage score is: %5.2f\n", aver);
NONO ( );
}

NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i, j ;
float aver, score[5] ;

fp = fopen("bc01.in","r") ;
if(fp == NULL) {
printf("数据文件bc01.in不存在!") ;
return ;
}
wf = fopen("bc01.out","w") ;
for(i = 0 ; i < 10 ; i++) {
for(j = 0 ; j < 5 ; j++) fscanf(fp,"%f,",&score[j]) ;
aver = fun(score, 5) ;
fprintf(wf, "%5.2f\n", aver) ;
}
fclose(fp) ;
fclose(wf) ;
}

/* bc01.in 文件内容如下:
90.5,72,80,61.5,55
98,72.5,78,24.5,77
67.5,78,76.5,56,99
88,62.5,45,54.5,71
78,72.5,55,88.5,72
48,82.5,43,94.5,73
68,92.5,87,84.5,74
77,32.5,57,54.5,75
56,42.5,68,67.5,76
85,62.5,99,86.5,52
*/
/* bc01.out 文件内容应当如下:
71.80
70.00
75.40
64.20
73.20
68.20
81.20
59.20
62.00
77.00
*/

/* 程序修改题12
给定程序MODI1.C中函数 fun 的功能是:计算n!。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确 的结果。
注重:不要改动main函数,不得增行或删行,也不得更改程序
的结构!
*/
#include
#include

double fun ( int n )
{ double result = 1.0 ;
/************found************/
if(n==0)
//if n = = 0
return 1.0 ;
while( n > 1 && n < 170 )
/************found************/
result *= n--;
// result *= n--
return result ;
}

main ( )
{ int n ;
printf("Input N:") ;
scanf("%d", &n) ;
printf("\n\n%d! =%lf\n\n", n, fun(n)) ;
}

/* 编程题
请编写一个函数fun,它的功能是:将一个数字字符串转换为
一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例
如,若输入字符串"-1234",则函数把它转换为整数值 -1234。
注重: 部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容, 仅在函数fun
的花括号中填入你编写的若干语句。
*/
#include
#include
long fun ( char *p)
{//
long nn=0; int ss=1;
if((*p)=='-'){ p++; ss=-1;}
if((*p)=='+') p++;
while(*p)
nn=nn*10-48+(*p++);
return(nn*ss);
//
}

main() /* 主函数 */
{ char s[6];
long n;
printf("Enter a string:\n") ;
gets(s);
n = fun(s);
printf("%ld\n",n);
NONO ( );
}

NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i ;
char s[20] ;
long n ;

fp = fopen("bc02.in","r") ;
if(fp == NULL) {
printf("数据文件bc02.in不存在!") ;
return ;
}
wf = fopen("bc02.out","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%s", s) ;
n = fun(s);
fprintf(wf, "%ld\n", n) ;
}
fclose(fp) ;
fclose(wf) ;
}

/* bc02.in 内容如下:
-1234
5553
6546
4242
6776
4522
-5345
6643
-8686
-12101
*/
/* bc02.out 内容应当如下:
-1234
5553
6546
4242
6776
4522
-5345
6643
-8686
-12101
*/

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058