知ing

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

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

゛Zirro、Y 上传

查看本书

89套: 

给定程序中,函数fun的功能是:求出形参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=0, n, m, len; 

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

{ len=strlen(ss[i]); 

if(i==0) n=len; 

if(len>n) { 

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

n=len; ___1___=i; 

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

if (i!=k) 

{ m=n; 

len=strlen(ss[i]); 

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

for(j=___2___; j>=0; j--) 

ss[i][m--]=ss[i][j]; 

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

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

___3___='*'; 

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]); 

解题思路: 

第一处:使用变量k来保存第几个字符串是最长的字符串,所以应填:k。 

第二处:利用for循环把原字符串右移至最右边存放,字符串的长为len,所以应填:len。 

第三处:左边用字符*补齐,所以应填:ss[i][j]。 

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

给定程序MODI1.C中函数fun的功能是计算整数n的阶乘。请改正程序中的错误或在下划线处填上适当的内容并把下划线删除,使它能计算出正确的结果。 

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

给定源程序: 

#include <stdio.h> 

double fun(int n) 

double result=1.0; 

while (n>1 && n<170) 

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

result*=--n; 

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

return _____; 

main() 

int n; 

printf("Enter an integer: "); 

scanf("%d",&n); 

printf("\n\n%d!=%lg\n\n",n,fun(n)); 

解题思路: 

第一处:--n是先减1n--是后减1。本题应该先乘以n,再减1,才正确。 

第二处:返回计算结果,所以应填:result。 

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

编写函数fun,函数的功能是s所指的字符串中删除给定的字符。同一字母的大、小写按不同字符处理。 

若程序执行时输入字符串为: turbo c and borland c++ 从键盘上输入字符:n, 则输出后变为: turbo c ad borlad c++ 如果输入的字符在字符串中不存在则字符串照原样输出。 

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

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

给定源程序: 

#include <stdio.h> 

#include <string.h> 

int fun(char s[],char c) 

main() 

static char str[]="turbo c and borland c++"; 

char ch; 

printf("原始字符串:%s\n", str); 

printf("输入一个字符:"); 

scanf("%c",&ch); 

fun(str,ch); 

printf("str[]=%s\n",str); 

NONO(); 

解题思路: 

本题是考察考生怎样在字符串中删除指定的字符,结果仍存放在原字符串中。给出的程序是引用字符串指针pwhile循环语句以及if条件判断语句进行处理的,新字符串的位置是由来控制的,循环结束后,再给新字符串置字符串结束符,最后产生的新字符串形参s返回到主程序中。 

参考答案: 

int fun(char s[],char c) 

char *p = s ; 

int i = 0 ; 

while(*p) { 

if(*p != c) s[i++] = *p ; 

p++ ; 

s[i] = 0 ; 

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


查看更多