知ing

最新计算机二级C语言上机试题汇编100套

NCRE研究组 编 / 高等教育出版社

゛Zirro、Y 上传

查看本书

60套: 

给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。 

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

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

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

给定源程序: 

#include <stdio.h> 

typedef struct 

{ int num; 

char name[10]; 

}PERSON; 

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

void fun(PERSON ___1___) 

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

___2___ temp; 

if(std[0].num>std[1].num) 

{ temp=std[0]; std[0]=std[1]; std[1]=temp; } 

if(std[0].num>std[2].num) 

{ temp=std[0]; std[0]=std[2]; std[2]=temp; } 

if(std[1].num>std[2].num) 

{ temp=std[1]; std[1]=std[2]; std[2]=temp; } 

main() 

{ PERSON std[ ]={ 5,"Zhanghu",2,"WangLi",6,"LinMin" }; 

int i; 

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

fun(___3___); 

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

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

printf("%d,%s\n",std[i].num,std[i].name); 

解题思路: 

本题是要求对结构体数组中的三个元素按num成员升序排列。 

第一处:由于在函数体fun中,已经使用了std变量,所以应填:*std。 

第二处:由于temp是存放交换记录的中间变量,所以应填:PERSON。 

第三处:函数的调用,所以应填:std。 

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

给定程序MODI1.C中函数fun的功能是:将 m1m10)个字符串连接起来,组成一个新串,放入pt所指存储区中。 

例如:把3个串:"abc","CD","EF"连接起来,结果是 "abcCDEF"。 

请改正程序中的错误,使它能得出正确的结果。 

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

给定源程序: 

#include <stdio.h> 

#include <string.h> 

int fun ( char str[][10], int m, char *pt ) 

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

Int k, q, i ; 

for ( k = 0; k < m; k++ ) 

{ q = strlen ( str [k] ); 

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

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

pt[i] = str[k,i] ; 

pt += q ; 

pt[0] = 0 ; 

main( ) 

{ int m, h ; 

char s[10][10], p[120] ; 

printf( "\nPlease enter m:" ) ; 

scanf("%d", &m) ; gets(s[0]) ; 

printf( "\nPlease enter %d string:\n", m ) ; 

for ( h = 0; h < m; h++ ) gets( s[h]) ; 

fun(s, m, p) ; 

printf( "\nThe result is : %s\n", p) ; 

解题思路: 

第一处:保留字int错写成Int。 

第二处:字符数组的字符串书写格式错误。 

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

程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun( int a[][N]),函数的功能是:使数组左下三角元素中的值全部置成。 

例如:数组中的值为 | 1 9 7 | | 0 9 7 |  | 2 3 8 | 则返回主程序后a数组中的值应为 | 0 0 8 | | 4 5 6 | | 0 0 0 | 

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

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 

给定源程序: 

#include <stdio.h> 

#include <stdlib.h> 

#define N 5 

int fun ( int a[][N] ) 

main ( ) 

{ int a[N][N], i, j; 

printf("***** The array *****\n"); 

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

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

{ a[i][j] = rand()%10; printf( "%4d", a[i][j] ); } 

printf("\n"); 

fun ( a ); 

printf ("THE RESULT\n"); 

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

{ for ( j =0; j<N; j++ ) printf( "%4d", a[i][j] ); 

printf("\n"); 

NONO( ); 

解题思路: 

本题是利用两重循环给二维数组左下三角元素中的值全部置成0。 

参考答案: 

int fun ( int a[][N] ) 

int i, j; 

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

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

a[i][j] = 0 ; 

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


查看更多