為大家收集整理了《2013計算機二級C語言上機練習(xí)題及答案(9)》供大家參考,希望對大家有所幫助!??!
一、填空題:
請補充main函數(shù),該函數(shù)的功能是:從鍵盤輸入兩個字符串并人別保存在字符數(shù)組成str1 t 和str2中,用字符串str2 替換字符串聯(lián)str1前面的所有字符,注意:str2的長度不大于str1, 否則需要重新輸入.
例如,如果輸入不敷出str1=”abced”,str2=”gg”, 則輸出ggced.
僅在橫線上填入所編寫的若干表達式語句,勿改動函數(shù)的其它任何內(nèi)容.
#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,則應(yīng)輸出Am A Student To Take The Examination.
請改正程序中的錯誤,使程序能得出正確的結(jié)果.
注意;不要動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)
#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)
三、編程題
請編寫函數(shù)fun,它的功能是:求Fibonacci數(shù)列中大于t(t>3)的最小的一個數(shù),結(jié)果由函數(shù)返回.其中Fibonacci數(shù)列F(n)的定義為:
F(0)=0,F(1)=1
F()=F(n-1)+F(n-2)
假如:當(dāng) t=1000時, 函數(shù)值為1567.
請勿改動主函數(shù)動main其它的函數(shù)中的任何內(nèi)容,僅在函數(shù)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:
}
一、填空題:
請補充main函數(shù),該函數(shù)的功能是:從鍵盤輸入兩個字符串并人別保存在字符數(shù)組成str1 t 和str2中,用字符串str2 替換字符串聯(lián)str1前面的所有字符,注意:str2的長度不大于str1, 否則需要重新輸入.
例如,如果輸入不敷出str1=”abced”,str2=”gg”, 則輸出ggced.
僅在橫線上填入所編寫的若干表達式語句,勿改動函數(shù)的其它任何內(nèi)容.
#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,則應(yīng)輸出Am A Student To Take The Examination.
請改正程序中的錯誤,使程序能得出正確的結(jié)果.
注意;不要動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)
#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)
三、編程題
請編寫函數(shù)fun,它的功能是:求Fibonacci數(shù)列中大于t(t>3)的最小的一個數(shù),結(jié)果由函數(shù)返回.其中Fibonacci數(shù)列F(n)的定義為:
F(0)=0,F(1)=1
F()=F(n-1)+F(n-2)
假如:當(dāng) t=1000時, 函數(shù)值為1567.
請勿改動主函數(shù)動main其它的函數(shù)中的任何內(nèi)容,僅在函數(shù)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:
}