【真题1】 给定程序的功能是判断字符ch 是否与串str 中的某个字符相同;若相 同,什么也不做,若不同,则插在串的最后。 #include < stdio.h > #include < string.h > void fun(char *str, char ch ) { while ( *str && *str != ch ) str++; /**********found**********/ if ( *str ___1___ ch ) { str [ 0 ] = ch; /**********found**********/ ___2___ = 0; } } main( ) { char s[81], c ; printf( "\nPlease enter a string:\n" ); gets ( s ); printf ("\n Please enter the character to search : " ); c = getchar(); /**********found**********/ fun(___3___) ; printf( "\nThe result is %s\n", s); } (2011年2月) 解析: 本题着重考察考生对C 语言中函数的调用以及一些简单算法的掌握情 况。 题中第一空填"!=":从题意得知,若字符ch与字符串str 中的某个字符相同, 什么也不做;若不同,则插在str 的最后。因此fun函数中先设置了一个循环从 字符串str 中寻找字符ch,如果找到则中断循环并保留字符ch的地址,否则一 直循环到串尾。因此通过判断*str 的内容即可判断是否已找到字符ch。 题中第二个空填"str[1]":如果没有找到字符ch,则在while循环后str 指针 指向串结束符0x00,此时应将字符ch 写入这里并在下一地址写入一个串结束 符0x00,所以应该是"str[1] = 0;"语句。 题中第三个空填"s,c":此句是调用fun()函数,括弧中是其实际参数。 答案:【1】!= 【2】str[1] 【3】str2 【真题2】 给定程序modi.c 中函数 fun 的功能是:用插入排序法将n个字符进行 排序(降序)。(提示: 插入法排序的思路是:先对数组的头两个元素进行排序, 然后根据前两个元素的情况插入第三个元素,再插入第四个元素…)。 请改正程序中 的错误,使它能统计出正确的结果。 注意:不要改动main 函数, #define N 80 #include "stdio.h" #include "string.h" void insert(char *aa) {int i,j,n; char ch; /************found************/ n=stlen(aa); for(i=1;i< n;i++) /************found************/ {c=aa[i]; j=i-1; while ((j >=0)&&(ch< aa[j])) { aa[j+1]=aa[j]; j--; } aa[j+1]=ch; } } main() { char a[N]="QWERTYUIOPASDFGHJKLMNBVCXZ"; int i; printf("The original string : %s\n",a); insert(a); printf("The string after sorting:%s\n\n",a); } (2011年2月) 解析: 本题的考核点是插入排序的算法。 插入法排序的思路:先对数组的头两个元素进行排序, 然后根据前两个元素的 情况插入第三个元素,再插入第四个元素… C 语言中,大小写的字母含意不同。源程序中" While((b >=0)&&(t >aa[b]))"是错误的,"While"应为小写,程序应改为"while((b >=0)&&(t >aa[b]))"或相同作用的语句。 C 语言中,分号是语句的组成部分,各语句间以分号作为分隔。源程序中 "aa[b+1] = t"语句是错误的,应改为"aa[b+1]=t;"或相同作用的语句。 【真题3】 请编写函数fun,函数的功能是:将放在字符串数组中的M 个字符串(每 串的长度不超过N),按顺序合并组成一个新的字符串。 例如,字符串数组中的M个 字符串为: AAAA BBBBBBB CC 则合并后的字符串的内容应是: AAAABBBBBBBCC。 注意:部分源程序存在文件prog.c 中。 请勿改动主函数 main 和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 #define M 3 #define N 80 void fun(char a[M][N],char *b) {……} main() {char s[M][N]={"AAAA","BBBBBBB","CC"},p[100]; clrscr(); fun(s,p); printf("%s",p); } (2011年2月) 解析: int i,j,d; for(i=0;i< 100;i++) b[i]=0; for(i=0,d=0;i< M;i++) for(j=0;a[i][j];j++) b[d++]=a[i][j]; |