第一套
填空题: 给定程序的功能是将十进制正整数m转换成k进制(2≤k≤9)数的数字输出。
例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
void fun( int m, int k )
{
int aa[20], i;
for( i = 0; m; i++ ) {
/**********found**********/
aa[i] =
___1___;
/**********found**********/
m /= ___2___;
}
for( ; i; i-- )
/**********found**********/
printf( "%d", ___3___[ i-1 ] );
}
main()
{
int b, n;
printf( "\nPlease enter a number and a base:\n" );
scanf(
fun( n, b );
"%d %d", &n, &b );
}
第1 处内容填写有误
第[1]处操作错误
题面要求操作:内容为[aa[i] =
实际操作结果:内容为[aa[i]=___1___;]
m%k;]
第2 处内容填写有误
第[2]处操作错误
题面要求操作:内容为[m /= k;]
实际操作结果:内容为[m/=___2___;]
第3 处内容填写有误
第[3]处操作错误
题面要求操作:内容为[printf( "%d", aa[ i-1 ] );]
实际操作结果:内容为[printf("%d",___3___[i-1]);]
给定程序modi.c中函数 fun 的功能是:把 m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt中。
例如:把3个串:"abc","CD","EF"串连起来,结果是"abcCDEF"。
请改正函数 fun 中的语法错误,使它能统计出正确结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include
#include
m, char *pt )
fun ( char
#include
int
{
/************found************/
str[][10], int
k, q, i ;
Int
for ( k = 0; k < m; k++ )
{
q = strlen ( str [k] );
for (i=0; i/*Fibonacci数列是这么一个数列0,1,1,2,3,5,8,13……从它的第三项开始每一项的值都是其紧接着的
前两项的和。本也是采用函数的嵌套调用来完成,但若用嵌套调用方式会较难理解。它要求求出比s大的最小一
个数。在本题的编程中采用的是while(f2<=s)当它的条件这假时,即得到了第一个比t大的数。*/
int fun (int s)
{ int f1=0,f2=1,temp;
while(f2<=s)
{ temp=f2;
f2=f1+f2;
f1=temp;
/* 主函数 */
}
return f2;}
main()
int
{
clrscr();
printf("n = %d, f = %d\n",n, fun(n));
NONO();
n;
n=1000;
}
NONO (
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
)
FILE *fp, *wf ;
int i, n, s ;
fp = fopen("bc06.in","r") ;
if(fp == NULL) {
printf("数据文件 bc06.in 不存在!") ;
return ;
}
wf = fopen("bc06.out","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%d", &n) ;
s = fun(n) ;
fprintf(wf, "%d\n", s) ;
}
fclose(fp) ;
fclose(wf) ;
}
第二套
给定程序的功能是将在字符串s中出现、而未在字符串t中出现的字符,构成一个新的字符串放在u中,u中字
符按原字符串中字符顺序的逆序排列,不去掉重复字符。
例如,当s="112345",t="2467"时,u中的字符是:"5311"。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
void fun (char
*s, char *t, char *u)
{
i, j, sl, tl, ul;
int
char r, *up=u;
sl = strlen(s);
for (i=0; i=tl)]
实际操作结果:内容为[if(j___2___tl)]
第3 处内容填写有误
第[3]处操作错误
题面要求操作:内容为[r = up[i]; up[i] = up[ul-1-i]; up[ul-1-i] = r;]
实际操作结果:内容为[r=___3___;]
给定程序modi.c中函数fun的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正
序连接到t串的后面。
例如:当s中的字符串为:"ABCDE"时,
则t中的字符串应为:"EDCBAABCDE"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
#include
void fun (char
{
/************found************/
*s, char *t)
i;
int
sl = strlen(s);
for (i=0; ib_low=b%10; /*求b数的个位数*/
*c=a_up*1000+b_low*100+a_low*10+b_up; /*将a数的十位和个位数依次放在c数的千位和十位上, b数的
十位和个位数依次放在c数的个位和百位上*/
}
c;
a,b; long
main()
int
{
clrscr();
printf("Input a, b:");
scanf("%d%d", &a, &b);
fun(a, b, &c);
printf("The result is: %ld\n", c);
NONO();
}
NONO (
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
)
FILE *rf, *wf ;
int i, a,b ; long c ;
rf = fopen("in1.dat", "r") ;
wf = fopen("bc06.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%d,%d", &a, &b) ;
fun(a, b, &c) ;
fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;
}
fclose(rf) ;
fclose(wf) ;
}
第三套
给定程序的功能是从字符串s尾部开始,按逆序把在其中出现的每相邻的两个字符,紧随其后重复出现一次,
放在一个新串t中,若字符串s中头部有剩余的单个字符也重复,放在t的最后。
例如:当s中的字符串为:"12345"时,则t中的字符串应为:"5454323211"。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
#include
#include
void fun (char
{
*s, char *t)
int
i, j, sl;
sl = strlen(s);
for(i=sl-1,j=0;i>=0;i-=2)
{
t[j++] = s[i];
if (i-1 >= 0)
t[j++] = s[i-1];
/************found************/
t[j++] = ___1___;
/************found************/
if (i-1 ___2___ 0)
t[j++]=s[i-1];
}
t[j] = '\0';
}
main()
{
char
printf("\nPlease enter string s:"); scanf("%s", s);
s[100], t[100];
/************found************/
fun(___3___);
printf("The result is: %s\n", t);
}
第1 处内容填写有误
第[1]处操作错误
题面要求操作:内容为[t[j++] = s[i];]
实际操作结果:内容为[t[j++]=___1___;]
第2 处内容填写有误
第[2]处操作错误
题面要求操作:内容为[if (i-1 >= 0)]
实际操作结果:内容为[if(i-1___2___0)]
第3 处内容填写有误
第[3]处操作错误
题面要求操作:内容为[fun(s, t);]
实际操作结果:内容为[fun(___3___);]
给定程序modi.c中函数 fun 的功能是:找出一个大于给定整数m 且紧随 m 的素数,并通过函数名返回。
请改正 fun 函数中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
#include
#include
int fun(int m)
int i, k ;
{
for (i = m + 1 ; ; i++) {
for (k = 2 ; k < i ; k++)
/**************found**************/
if (i % k != 0)
break ;
/**************found**************/
if (k < i)
return(i);
}
}
main( )
n ;
int
clrscr() ;
printf("\nPlease enter n: " ) ;
scanf("%d", &n ) ;
printf("%d\n", fun(n)) ;
{
}
第1 处内容填写有误
第[1]处操作错误
题面要求操作:内容为[if(i%k==0)]
实际操作结果:内容为[if(i%k!=0)]
第2 处内容填写有误
第[2]处操作错误
题面要求操作:内容为[if(k>=i)]
实际操作结果:内容为[if(k