知ing

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

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

゛Zirro、Y 上传

查看本书

16套: 

给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。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, n, len=0; 

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

{ len=strlen(ss[i]); 

if(i==0) n=len; 

if(len>n)n=len; 

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

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

n=strlen(___1___); 

for(j=0; j<len-n; j++) 

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

ss[i][ ___2___]='*'; 

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

ss[i][n+j+ ___3___]='\0'; 

main() 

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

int i; 

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

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

printf("\n"); 

fun(ss); 

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

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

解题思路: 

第一处:利用for循环语句取当前字符串的长度,所以应填:ss[i]。 

第二处:在字符串的右边填字符*,其开始位置是n+j,其中n是该字符串本身的长度,j是循环控制变量,所以应填:n+j。 

第三处:字符串处理结束应置字符串结束符,其位置是n+j+1,所以应填:1。 

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

给定程序MODI1.C中 fun 函数的功能是:p所指字符串中每个单词的最后一 个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。 

例如若输入 

"I am a student to take the examination.", 

则应输出 "I aM A studenT tO takE thE examination."。 

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

注意不要改动 main 函数不得删行也不得更改程序的结构

给定源程序: 

#include <ctype.h> 

#include <stdio.h> 

void fun( char *p ) 

 

int k = 0; 

for( ; *p; p++ ) 

if( k ) 

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

if( p == ' ' ) 

k = 0; 

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

* (p-1) = toupper( *( p - 1 ) ) 

else 

k = 1; 

main() 

char chrstr[64]; 

int d ; 

printf( "\nPlease enter an English sentence within 63 letters: "); 

gets(chrstr); 

d=strlen(chrstr) ; 

chrstr[d] = ' ' ; 

chrstr[d+1] = 0 ; 

printf("\n\nBefore changing:\n %s", chrstr); 

fun(chrstr); 

printf("\nAfter changing:\n %s", chrstr); 

解题思路: 

第一处:关键字int错写成INT。 

第二处:该行括号没有配对,所以只要加上一个右括号即可。 

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

请编写函数fun, 对长度为7个字符的字符串除首、尾字符外,将其余5个字 符按ASCII码降序排列。 

例如,原来的字符串为 CEAedca,排序后输出为 CedcEAa 。 

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

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

给定源程序: 

#include <stdio.h> 

#include <ctype.h> 

#include <string.h> 

int fun(char *s,int num) 

 

main() 

char s[10]; 

printf("输入7个字符的字符串:"); 

gets(s); 

fun(s,7); 

printf("\n%s",s); 

NONO(); 

 

解题思路: 

本题是考察考生如何对字符串中的字符按降序进行排序。给出的程序是使用双重for循环以及冒泡法进行排序的,结果仍存放在原先的字符串上。 

参考答案: 

int fun(char *s,int num) 

char ch ; 

int i, j ; 

for(i = 1 ; i < 6 ; i++) 

for(j = i + 1 ; j < 6 ; j++) { 

if(*(s + i) < *(s + j)) { 

ch = *(s + j) ; 

*(s + j) = *(s +i) ; 

*(s + i) = ch ; 

 

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


查看更多