2011年二级C语言上机题库南开最新最准题库[1]

导读:在C语言中,注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include<stdio.h>/**********found**********/voidfun(inta,b){intt;/**********found**********/t=b;b=a;a=t;}main(){inta,b;printf("Ent

2011年二级C语言上机题库南开最新最准题库[1]

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

给定源程序:

#include <stdio.h>

/**********found**********/

void fun ( int a, b )

{ int t;

/**********found**********/

t = b; b = a ; a = t;

}

main ( )

{ int a, b;

printf ( "Enter a , b : "); scanf ( "%d,%d", &a, &b );

fun ( &a , &b ) ;

printf (" a = %d b = %d\n ", a, b );

}

解题思路:

第一处:函数形参定义不正确,在定义第2个形参时,也应加上int。由于通过该函数实现 两数交换,在C语言中,必须交换地址中的值,所以应定义为int *a,int *b。

第二处:要交换地址中的值,不能交换地址,必须指定地址中的值,因此应改为 t=*b;*b=*a;*a=t;。

***************************************************

请编一个函数void fun(int tt[M][N ], int pp[N]),tt指向一个M行N列的

二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。

注意: 部分源程序存在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入

你编写的若干语句。

给定源程序:

#include <stdio.h>

#define M 3

#define N 4

void fun ( int tt[M][N], int pp[N] )

{

}

main( )

{ int t [ M ][ N ]={{22,45, 56,30},

{19,33, 45,38},

{20,22, 66,40}};

int p [ N ], i, j, k;

printf ( "The original data is : \n" );

for( i=0; i<M; i++ ){

for( j=0; j<N; j++ )

printf ( "%6d", t[i][j] );

printf("\n");

}

fun ( t, p );

printf( "\nThe result is:\n" );

for ( k = 0; k < N; k++ ) printf ( " %4d ", p[ k ] );

printf("\n");

NONO( );

}

解题思路:

本题是求出二维数组每列中最小元素,并依次放入pp所指一维数组中。

参考答案:

void fun ( int tt[M][N], int pp[N] )

{

int i,j, min, k ;

for(i = 0 ; i < N ; i++) {

min = tt[0][i] ; k = 0 ;

for(j = 1 ; j < M ; j++)

if(min > tt[j][i]) {

\TAB min=tt[j][i] ;

k = j ;

}

pp[i] = tt[k][i] ;

}

}

※※※※※※※※※※※※※※※※※※※※※※※※※

给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在 形参a所指数组中(此数组在主函数中已置0)。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结

果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include <stdlib.h>

#define N 20

void fun( int *a)

{ int i, x, n=0;

x=rand()%20;

/**********found**********/

while (n<__1__)

{ for(i=0; i<n; i++ )

/**********found**********/

if( x==a[i] ) __2__;

/**********found**********/

if( i==__3__){ a[n]=x; n++; }

x=rand()%20;

}

}

main()

{ int x[N]={0} ,i;

fun( x );

printf("The result : \n");

for( i=0; i<N; i++ )

{ printf("%4d",x[i]);

if((i+1)%5==0)printf("\n");

}

printf("\n\n");

}

第一处:一共产生20个随机数,所以应填:N。

第二处:要求产生不同的20个整数,所以采用for循环对已产生的随机数进行比较,是否有

相同数,如果有相同,则退出循环体,所以应填:break。

第三处:当退出循环体还是进行判断,i和n的值是否相等,如果相等,则表示该随机整数 不重复,可以存放到指定的数组中,所以应填:n。

***************************************************

给定程序MODI1.C中函数fun的功能是: 先从键盘上输入一个3行3列矩阵的各 个元素的值, 然后输出主对角线元素之和。

请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得

出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

给定源程序:

#include <stdio.h>

int fun()

{

int a[3][3],sum;

int i,j;

/*********found**********/

______;

for (i=0;i<3;i++)

{ for (j=0;j<3;j++)

/*********found**********/

scanf("%d",a[i][j]);

}

for (i=0;i<3;i++)

sum=sum+a[i][i];

printf("Sum=%d\n",sum);

}

main()

{

fun();

五星文库wxphp.com包含总结汇报、旅游景点、文档下载、考试资料、人文社科、经管营销、教学教材、专业文献、IT计算机以及2011年二级C语言上机题库南开最新最准题库[1]等内容。

本文共89页1<<57585960616263>>89