一、填空题
请补充main函数,该函数的功能是:从键盘输入两个字符串并人别保存在字符数组成str1 t 和str2中,用字符串str2 替换字符串联str1前面的所有字符,注意:str2的长度不大于str1, 否则需要重新输入.
例如,如果输入不敷出str1=”abced”,str2=”gg”, 则输出ggced.
仅在横线上填入所编写的若干表达式语句,勿改动函数的其它任何内容.
#include
#include
main()
{
char str1[81], str2[81];
char *p1 = str1, *p2 = str2;
do
{
printf(" Input str1 \n");
gets(str1);
printf(" Input str2 \n");
gets(str2);
} while (strlen(str1) ___1___ strlen(str2));
while (___2___)
*p1++ = *p2++;
printf(" Display str1 \n");
puts(___3___);
}
参考答案:
第1处填空:<
第2处填空:*p2或p2[0]
第3处填空:str1
二、改错题
下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此本行(这里的”单词”是反指由空格隔开的字符串).例如,若输入I am a student to take the examination,则应输出Am A Student To Take The Examination.
请改正程序中的错误,使程序能得出正确的结果.
注意;不要动main函数,不得增行或删行,也不得更改程序的结构
#include
#include
#include
/********found********/
void upfst(char p)
{
int k = 0;
for (; *p; p++)
if (k)
{
if (*p == ' ')
k = 0;
}
else
{
if (*p != ' ')
{
k = 1;
*p = toupper(*p);
}
}
}
main()
{
char chrstr[81];
printf("\nPlease enter an English text line: ");
gets(chrstr);
printf("\n\nBefore changing:\n %s", chrstr);
upfst(chrstr);
printf("\nAfter changing:\n %s\n", chrstr);
}
参考答案:
第1处void upfst(char p)改为void upfst(char *p)
三、编程题
请编写函数fun,它的功能是:求Fibonacci数列中大于t(t>3)的最小的一个数,结果由函数返回.其中Fibonacci数列F(n)的定义为:
F(0)=0,F(1)=1
F()=F(n-1)+F(n-2)
假如:当 t=1000时, 函数值为1567.
请勿改动主函数动main其它的函数中的任何内容,仅在函数fun花括号中填入所编写的若干语句.
#include
#include
#include
int fun (int t)
{
}
main()
{
int n;
FILE *out;
n=1000;
printf("n=%d,f=%d\n",n,fun(n));
out=fopen ("out.dat", "w");
for (n = 500; n < 3000; n+=500)
fprintf(out, "%d\n", fun(n));
fclose (out );
}
参考答案:
int fun(int t)
{
int a=1,b=1,c=0,I;
for(i=4;i<=t;i++)
{
if(c
{
c=a+b;
a=b;
b=c;
}
else
break;
}
return c:
}