2015年3月全国计算机二级C考试真题第4套
2015年3月全国计算机二级C考试真题第4套
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include
void fun( int a[55], int n )
{ int i, k ;
/**********found**********/
int __[1]__[55];
for (i=0; i
{ for (k=1; k<= 27; k++)
{ b[ 2*k-1 ] = a[k];
/**********found**********/
b[ __[2]___* k ] = a[k+27];
}
for (k=1; k<=54; k++)
/**********found**********/
a[k]=___(3)___;
}
}
main( )
{ int m, a[55],i;
for (i=1; i<55; i++) a[i]= i;
printf("请输入洗牌次数 : "); scanf("%d", &m);
fun(a, m);
for (i=1; i<55; i++) printf("%d,",a[i]);
printf("\n");
}
【参考答案】
(1)b
(2)2
(3)b[k]
二、改错题
给定程序MODI1.C中,函数fun的功能是:判断输入的任何一个正整数n,是否等于某个连续正整数序列之和。若是,则输出所有可能的序列。否则输出“不能分解”。
例如:当输入100时,输出:100=9+10+11+12+13+14+15+16
100=18+19+20+21+22
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动mam函数,不得增行或删行,也不得更改程序的结构。
#include
void fun( int n )
{ int j, b, c, m, flag=0;
for (b=1; b<=n/2; b++) {
/**********found**********/
n = m;
c = b;
while (m !=0 && m>=c) {
/**********found**********/
m = m - c; c++
}
/**********found**********/
if ( m!=0)
{ printf("%d=", n);
for (j=b; j
printf("%d\n", j);
flag=1;
}
}
if(flag==0)
printf("不能分解\n");
}
main()
{ int n;
printf("请输入一个整数 : "); scanf("%d", &n);
fun(n);
}
参考答案
(1) m=n
(2) m=m-c; c++;
(3)if(m==0)
三、编程题
请编写函数fun,其功能是:判断t所指字符串中的字母是否由连续递增字母序列组成(字符串长度大于等于2)。例如字符串:uvwxyz满足要求;而字符串:uvxwyz不满足要求。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。
#include
#include
void NONO();
int fun( char *t )
{ int i=0;
for(i=0;t[i+1]!='\0'; i++)
if(t[i]+1!=t[i+1])
break;
if(t[i+1]!='\0'){
return 0;
}
return 1;
}
main()
{ char s[26];
printf("请输入一个字母组成的字符串: ");
gets(s);
if( fun(s) ) printf("%s 是由连续字母组成的字符串.\n", s );
else printf("%s 不是由连续字母组成的字符串!\n", s );
NONO()