Batdxaz计算机二级C语言上机模拟试题10套(含解析) 下载本文

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

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

#include #include void fun(char *s) {

int i,j;

for(i=0,j=0; s[i]!= '\\0'; i++)

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

if((s[i]>= 'A'&&s[i]<= 'Z')&&(s[i]>= 'a'&&s[i]<= 'z')) s[j++]=s[i];

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

s[j]= \}

main() {

char item[80]; clrscr();

printf(\ gets(item);

printf(\ fun(item);

printf(\}

答案及评析:

(1)错误:if((s[i]>= 'A'&&s[i]<= 'Z')&&(s[i]>= 'a'&&s[i]<= 'z')) 正确:if((s[i]>= 'A'&&s[i]<= 'Z')||(s[i]>= 'a'&&s[i]<= 'z')) (2)错误:s[j]= \正确:s[j]='\\0';

【解析】错误1:字母包括小写字母和大写字母,这里是\或\的关系,所以用运算符。

错误2:字符串的结束标志符为字符,而不是字符串。

\ 3. 编程题

下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:使数组右上半三角元素中的值全部置成0。例如a数组中的值为 a=4 5 6 1 7 9 3 2 6,

则返回主程序后a数组中的值应为 0 0 0 1 0 0 3 2 0

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:

#include #include #include #define N 5

int fun (int a[][N]) { }

main() {

int a[N][N],i,j; clrscr();

printf(\

for(i=0;i

{a[i][j]=rand(); printf(\ }

printf(\ } fun(a);

printf(\

for(i=0;i

{ for(j=0;j

printf(\ printf(\ } }

答案及评析:

int fun (int a[][N]) {

int i,j;

for(i=0;i

a[i][j]=0; /*将数组右上半三角元素中的值全部置成0*/ }

【解析】本题旨在考查控制数组中右上半三角元素的算法,也就是两个千篇一律的循环语句,希望学习者能够掌握消化。

模拟试题(十)

1.填空题

请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符str1中,把字符串str1中下标为偶数的字符保存在字符串str2中并输出。例如,当str1=“cdefghij”,则str2=“cegi”。 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序:

#include #include #define LEN 80 main() {

char str1[LEN],str2[LEN]; char *p1=str1,*p2=str2; int i=0,j=0; clrscr();

printf(\ scanf(【1】);

printf(\ while(*(p1+j)) {

printf(\【2】\ j++; }

for(i=0;i

printf(\【3】); }

答案及评析:

【1】″%s″,str1 【2】%c 【3】str2

【解析】填空1:本题考查对标准输入函数scanf()的调用格式,当输入字符串时,格式控制字符串为″%s″,题目要求输入的字符串保存在str1中,所以地址表列应为字符串的首地址,即为str1。填空2:本题考查对标准输出函数printf()的调用格式,当输出为字符型变量时,格式控制字符串为″%c″。填空3:题目要求将str1中下标为偶数的字符保存在字符串str2中并输出,所以printf()函数的输出表列是str2

2. 改错题

在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun()的功能是计算数组元素中值为负数的平均值(不包括0)。 例如:数组中元素的值依次为43,-47,-21,53,-8,12,0,则程序的运行结果为-25.333333。

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

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

#include #include double fun(int x[ ]) {

double sum=0.0; int c=0, i=0;

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

while(x[i]==0) {

if(x[i]<0)