知ing

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

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

゛Zirro、Y 上传

查看本书

75套: 

给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长<N。 

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

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

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

给定源程序: 

#include <stdio.h> 

#include <string.h> 

#define M 5 

#define N 20 

void fun(char (*ss)[N]) 

{ int i, j, k, n[M]; char t[N]; 

for(i=0; i<M; i++) n[i]=strlen(ss[i]); 

for(i=0; i<M-1; i++) 

{ k=i; 

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

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

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

if(n[k]>n[j]) ___2___; 

if(k!=i) 

{ strcpy(t,ss[i]); 

strcpy(ss[i],ss[k]); 

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

strcpy(ss[k],___3___); 

n[k]=n[i]; 

main() 

{ char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"}; 

int i; 

printf("\nThe original strings are :\n"); 

for(i=0; i<M; i++) printf("%s\n",ss[i]); 

printf("\n"); 

fun(ss); 

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

for(i=0; i<M; i++) printf("%s\n",ss[i]); 

解题思路: 

本题是要求按字符串的长短进行排序。 

第一处:内循环赋初值,应填:i+1。 

第二处:找出最短的一个长度,所以应填:m=j。 

第三处:交换字符串,所以应填:t。 

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

给定程序MODI1.C中函数 fun 的功能是:判断ch中的字符是否与str所指串中的某个字符相同; 若相同,什么也不做,若不同,则将其插在串的最后。 

请改正程序中的错误,使它能进行正确的操作。 

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

给定源程序: 

#include <stdio.h> 

#include <string.h> 

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

void fun(char str, char ch ) 

{ while ( *str && *str != ch ) str++; 

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

if ( *str == ch ) 

{ str [ 0 ] = ch; 

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

str[1] = '0'; 

main( ) 

{ char s[81], c ; 

printf( "\nPlease enter a string:\n" ); gets ( s ); 

printf ("\n Please enter the character to search : " ); 

c = getchar(); 

fun(s, c) ; 

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

解题思路: 

第一处:第1个形参应该是字符串类型,所以应改为:void fun(char *str, char ch)。 

第二处:应该是判断不相等,所以应改为:if(*str!=ch)。 

第三次:置字符串结束符错误,所以应改为:str[1] = 0;。 

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

请编一个函数fun(char *s),函数的功能是把s所指字符串中的内容逆置。 

例如:字符串中原有的字符串为:abcdefg, 

则调用该函数后串中的内容为:gfedcba。 

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

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

给定源程序: 

#include <string.h> 

#include <stdio.h> 

#define N 81 

fun ( char *s ) 

main( ) 

{ char a[N]; 

printf ( "Enter a string : " ); gets ( a ); 

printf ( "The original string is : " ); puts( a ); 

fun ( a ); 

printf("\n"); 

printf ( "The string after modified : "); 

puts ( a ); 

NONO( ); 

解题思路: 

本题是考察考生如何对字符串中的字符进行逆序操作。给出的程序使用了一个临时变量的字符串,使用for循环语句把原字符串的字符从尾部依次赋给临时变量b(从头开始)中,循环结束后,再把临时变量b的内容重新复制给原字符串变量即可。 

参考答案: 

fun ( char *s ) 

char b[N] ; 

int i = 0, j ; 

memset(b, 0, N) ; 

for(j = strlen(s) - 1 ; j >= 0 ; j--) b[i++] = s[j] ; 

strcpy(s, b) ; 

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


查看更多