一、填空题:给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。
例如,输入一个整数:27638496,函数返回值为:64862。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
unsigned long fun(unsigned long n)
{unsigned long x=0; int t;
while(n)
{t=n;
/**********found**********/
if(t%2==__1__)
/**********found**********/
x=__2__+t;
/**********found**********/
n=__3__;
}
return x;
}
main()
{unsigned long n=-1;
while(n>99999999||n<0)
{printf("Please input(0
printf("\nThe result is: %ld\n",fun(n));
}
解题答案:
/**********第一空**********/
if(t%2==0)
/**********第二空**********/
x=10*x+t;
/**********第三空*********/
n=n/10;
******************************************
二、改错题:给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为:87653142时,t中的数为:7531。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
void fun (long s, long *t)
{int d;
long sl=1;
/************found************/
t = 0;
while (s > 0)
{d = s;
/************found************/
if (d%2 == 0)
{ *t = d * sl + *t;
sl *= 10;
}
s /= 10;
}
}
main()
{long s, t;
printf("\nPlease enter s:"); scanf("%ld", &s);
fun(s, &t);
printf("The result is: %ld\n", t);
}
解题答案:
/************found************/
*t=0;
/************found************/
if(d%2!=0)
******************************************
三、程序题:编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat), 即把p2所指的字符串连接到p1所指的字符串后。
例如,分别输入下面两个字符串:
FirstString--
SecondString
程序输出:
FirstString--SecondString
注意: 部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
给定源程序:
#include
void fun(char p1[], char p2[])
{
}
main()
{char s1[80], s2[40] ;void NONO ();
printf("Enter s1 and s2:\n");
scanf("%s%s", s1, s2);
printf("s1=%s\n", s1);
printf("s2=%s\n", s2);
printf("Invoke fun(s1,s2):\n");
fun(s1, s2);
printf("After invoking:\n");
printf("%s\n", s1);
NONO();
}
void NONO ()
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
int i ;
FILE *rf, *wf ;
char s1[80], s2[40] ;
rf = fopen("in.dat","r");
wf = fopen("out.dat","w");
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%s", s1);
fscanf(rf, "%s", s2);
fun(s1, s2);
fprintf(wf, "%s\n", s1);
}
fclose(rf);
fclose(wf);
}
参考答案:
void fun(char p1[], char p2[])
{
char *p=p1;
while(*p)p++;
while(*p2) *p++=*p2++;
*p=0;
}