2017全国计算机二级C考试真题
【2017全国计算机二级C考试真题】
一、改错题
函数fun的功能是:将一副扑克牌编号为1,2,3...53,54,以某种特定的方式洗牌,这种方式是将这副牌分成两半,然后将它们交叉,并始终保持编号为1的牌在最上方,譬如第一次这样洗牌后的结果为:1,28,2,29,...53,27,54。两次洗牌后的结果为:1,41,28,15,2,42...53,40,27,14,54。
程序的功能是:输出经过n次这样洗牌后的结果。
请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的'BLANK1.C中。不得增行或删行,也不得更改程序的结构!
#include
void fun( int a[55], int n )
{ int i, k ;
int __[1]__[55];
for (i=0; i
{ for (k&#61;1; k<&#61; 27; k&#43;&#43;)
{ b[ 2*k-1 ] &#61; a[k];
b[ __[2]___* k ] &#61; a[k&#43;27];
}
for (k&#61;1; k<&#61;54; k&#43;&#43;)
a[k]&#61;___(3)___;
}
}
main( )
{ int m, a[55],i;
for (i&#61;1; i<55; i&#43;&#43;) a[i]&#61; i;
printf("请输入洗牌次数 : "); scanf("%d", &m);
fun(a, m);
for (i&#61;1; i<55; i&#43;&#43;) printf("%d,",a[i]);
printf(" ");
}
【参考答案】
(1)b
(2)2
(3)b[k]
二、改错题
给定程序MODI1.C中&#xff0c;函数fun的功能是&#xff1a;判断输入的任何一个正整数n&#xff0c;是否等于某个连续正整数序列之和。若是&#xff0c;则输出所有可能的序列。否则输出“不能分解”。
例如&#xff1a;当输入100时&#xff0c;输出&#xff1a;100&#61;9&#43;10&#43;11&#43;12&#43;13&#43;14&#43;15&#43;16
100&#61;18&#43;19&#43;20&#43;21&#43;22
请改正函数fun中指定部位的错误&#xff0c;使它能得出正确的结果。
注意&#xff1a;不要改动mam函数&#xff0c;不得增行或删行&#xff0c;也不得更改程序的结构。
#include
void fun( int n )
{ int j, b, c, m, flag&#61;0;
for (b&#61;1; b<&#61;n/2; b&#43;&#43;) {
n &#61; m;
c &#61; b;
while (m !&#61;0 && m>&#61;c) {
m &#61; m - c; c&#43;&#43;
}
if ( m!&#61;0)
{ printf("%d&#61;", n);
for (j&#61;b; j
printf("%d ", j);
flag&#61;1;
}
}
if(flag&#61;&#61;0)
printf("不能分解 ");
}
main()
{ int n;
printf("请输入一个整数 : "); scanf("%d", &n);
fun(n);
}
参考答案
(1) m&#61;n
(2) m&#61;m-c; c&#43;&#43;;
(3)if(m&#61;&#61;0)
三、编程题
请编写函数fun&#xff0c;其功能是&#xff1a;判断t所指字符串中的字母是否由连续递增字母序列组成(字符串长度大于等于2)。例如字符串&#xff1a;uvwxyz满足要求;而字符串&#xff1a;uvxwyz不满足要求。
注意&#xff1a;部分源程序存在PROG1.C中&#xff0c;请勿改动主函数main和其他函数中的任何内容&#xff0c;仅在函数fun指定的部位填入所编写的若干语句。
#include
#include
void NONO();
int fun( char *t )
{
int i&#61;0;
for(i&#61;0;t[i&#43;1]!&#61;&#39;\0&#39;; i&#43;&#43;)
if(t[i]&#43;1!&#61;t[i&#43;1])
break;
if(t[i&#43;1]!&#61;&#39;\0&#39;){
return 0;
}
return 1;
}
main()
{ char s[26];
printf("请输入一个字母组成的字符串: ");
gets(s);
if( fun(s) ) printf("%s 是由连续字母组成的字符串. ", s );
else printf("%s 不是由连续字母组成的字符串! ", s );
NONO();
}
void NONO()
{
FILE *fp, *wf ;
int i;
char s[26], *p;
fp &#61; fopen("in.dat","r") ;
wf &#61; fopen("out.dat","w") ;
for(i &#61; 0 ; i <10 ; i&#43;&#43;) {
fgets(s, 26, fp);
p&#61;strchr(s,&#39; &#39;);
if(p) *p&#61;0;
if (fun(s)) fprintf(wf, "%s ", s&#43;2);
else fprintf(wf, "%s ", strrev(s));
}
fclose(fp) ;
fclose(wf) ;
}
【2017全国计算机二级C考试真题】相关文章&#xff1a;