為大家收集整理了《2013計算機(jī)二級C語言上機(jī)練習(xí)題及答案(6)》供大家參考,希望對大家有所幫助?。?!
填空題:
給定程序中,函數(shù)fun的功能是根據(jù)形參i的值返回某個函數(shù)的值。當(dāng)調(diào)用正確時, 程序輸出:
x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000
請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
double f1(double x)
{ return x*x; }
double f2(double x, double y)
{ return x*y; }
__1__ fun(int i, double x, double y)
{ if (i==1)
return __2__(x);
else
return __3__(x, y);
}
main()
{ double x1=5, x2=3, r;
r = fun(1, x1, x2);
r += fun(2, x1, x2);
printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);
}
解題思路:
本題是根據(jù)給定的公式來計算函數(shù)的值。
第一處:程序中使用雙精度double類型進(jìn)行計算,所以函數(shù)的返回值類型也為double,所以應(yīng)填:double。
第二處:當(dāng)i等于1時,則返回f1函數(shù)的值,所以應(yīng)填:f1。
第三處:如果i不等于1,則返回f2函數(shù)的值,所以應(yīng)填:f2。
改錯題
給定程序MODI1.C中函數(shù)fun的功能是: 比較兩個字符串,將長的那個字符串的首地址作為函數(shù)值返回。
請改正函數(shù)fun中指定部位的錯誤, 使它能得出正確的結(jié)果。
注意: 不要改動main函數(shù), 不得增行或刪行, 也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
char fun(char *s, char *t)
{ int sl=0,tl=0; char *ss, *tt;
ss=s; tt=t;
while(*ss)
{ sl++;
(*ss)++;
}
while(*tt)
{ tl++;
(*tt)++;
}
if(tl>sl) return t;
else return s;
}
main()
{ char a[80],b[80],*p,*q; int i;
printf("\nEnter a string : "); gets(a);
printf("\nEnter a string again : "); gets(b);
printf("\nThe longer is :\n\n\"%s\"\n",fun(a,b));
}
解題思路:
第一處: 試題要求返回字符串的首地址,所以應(yīng)改為:char *fun(char *s,char *t)
第二處: 取字符串指針ss的下一個位置,所以應(yīng)改為:ss++;。
第三處:取字符串指針tt的下一個位置,所以應(yīng)改為:tt++;。
編程題:
請編寫函數(shù)fun,函數(shù)的功能是: 移動字符串中的內(nèi)容,移動的規(guī)則如下: 把第1到第m個字符, 平移到字符串的最后, 把第m+1到最后的字符移到字符串的前部。
例如, 字符串中原有的內(nèi)容為: ABCDEFGHIJK, m的值為3, 則移動后, 字符串中的內(nèi)容應(yīng)該是: DEFGHIJKABC。
注意:部分源程序在文件PROG1.C中。
請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容, 僅在函數(shù)fun的花括號中填入你編寫的若干語句。
給定源程序:
#include
#include
#define N 80
void fun1(char *w) /* 本函數(shù)的功能是將字符串中字符循環(huán)左移一個位置 */
{
int i; char t;
t=w[0];
for(i=0;i w[i]=w[i+1];
w[strlen(w)-1]=t;
}
void fun(char *w, int m) /* 可調(diào)用fun1函數(shù)左移字符 */
{
}
main()
{ char a[N]= "ABCDEFGHIJK";
int m;
printf("The original string:\n");puts(a);
printf("\n\nEnter m: ");scanf("%d",&m);
fun(a,m);
printf("\nThe string after moving:\n");puts(a);
printf("\n\n");
NONO();
}
解題思路:
本題是考察字符串的操作。
1. 由于函數(shù)fun1是將字符串中字符循環(huán)左移一個位置,并通過實參w返回循環(huán)左移一個位置的字符串。
2. 利用循環(huán)for語句來操作多少個字符(m)需要循環(huán)左移。
參考答案:
void fun1(char *w) /* 本函數(shù)的功能是將字符串中字符循環(huán)左移一個位置 */
{
int i; char t;
t=w[0];
for(i=0;i w[i]=w[i+1];
w[strlen(w)-1]=t;
}
void fun(char *w, int m) /* 可調(diào)用fun1函數(shù)左移字符 */
{
int i;
for(i = 0 ; i < m ; i++) fun1(w);
}
填空題:
給定程序中,函數(shù)fun的功能是根據(jù)形參i的值返回某個函數(shù)的值。當(dāng)調(diào)用正確時, 程序輸出:
x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000
請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
double f1(double x)
{ return x*x; }
double f2(double x, double y)
{ return x*y; }
__1__ fun(int i, double x, double y)
{ if (i==1)
return __2__(x);
else
return __3__(x, y);
}
main()
{ double x1=5, x2=3, r;
r = fun(1, x1, x2);
r += fun(2, x1, x2);
printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);
}
解題思路:
本題是根據(jù)給定的公式來計算函數(shù)的值。
第一處:程序中使用雙精度double類型進(jìn)行計算,所以函數(shù)的返回值類型也為double,所以應(yīng)填:double。
第二處:當(dāng)i等于1時,則返回f1函數(shù)的值,所以應(yīng)填:f1。
第三處:如果i不等于1,則返回f2函數(shù)的值,所以應(yīng)填:f2。
改錯題
給定程序MODI1.C中函數(shù)fun的功能是: 比較兩個字符串,將長的那個字符串的首地址作為函數(shù)值返回。
請改正函數(shù)fun中指定部位的錯誤, 使它能得出正確的結(jié)果。
注意: 不要改動main函數(shù), 不得增行或刪行, 也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
char fun(char *s, char *t)
{ int sl=0,tl=0; char *ss, *tt;
ss=s; tt=t;
while(*ss)
{ sl++;
(*ss)++;
}
while(*tt)
{ tl++;
(*tt)++;
}
if(tl>sl) return t;
else return s;
}
main()
{ char a[80],b[80],*p,*q; int i;
printf("\nEnter a string : "); gets(a);
printf("\nEnter a string again : "); gets(b);
printf("\nThe longer is :\n\n\"%s\"\n",fun(a,b));
}
解題思路:
第一處: 試題要求返回字符串的首地址,所以應(yīng)改為:char *fun(char *s,char *t)
第二處: 取字符串指針ss的下一個位置,所以應(yīng)改為:ss++;。
第三處:取字符串指針tt的下一個位置,所以應(yīng)改為:tt++;。
編程題:
請編寫函數(shù)fun,函數(shù)的功能是: 移動字符串中的內(nèi)容,移動的規(guī)則如下: 把第1到第m個字符, 平移到字符串的最后, 把第m+1到最后的字符移到字符串的前部。
例如, 字符串中原有的內(nèi)容為: ABCDEFGHIJK, m的值為3, 則移動后, 字符串中的內(nèi)容應(yīng)該是: DEFGHIJKABC。
注意:部分源程序在文件PROG1.C中。
請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容, 僅在函數(shù)fun的花括號中填入你編寫的若干語句。
給定源程序:
#include
#include
#define N 80
void fun1(char *w) /* 本函數(shù)的功能是將字符串中字符循環(huán)左移一個位置 */
{
int i; char t;
t=w[0];
for(i=0;i w[i]=w[i+1];
w[strlen(w)-1]=t;
}
void fun(char *w, int m) /* 可調(diào)用fun1函數(shù)左移字符 */
{
}
main()
{ char a[N]= "ABCDEFGHIJK";
int m;
printf("The original string:\n");puts(a);
printf("\n\nEnter m: ");scanf("%d",&m);
fun(a,m);
printf("\nThe string after moving:\n");puts(a);
printf("\n\n");
NONO();
}
解題思路:
本題是考察字符串的操作。
1. 由于函數(shù)fun1是將字符串中字符循環(huán)左移一個位置,并通過實參w返回循環(huán)左移一個位置的字符串。
2. 利用循環(huán)for語句來操作多少個字符(m)需要循環(huán)左移。
參考答案:
void fun1(char *w) /* 本函數(shù)的功能是將字符串中字符循環(huán)左移一個位置 */
{
int i; char t;
t=w[0];
for(i=0;i w[i]=w[i+1];
w[strlen(w)-1]=t;
}
void fun(char *w, int m) /* 可調(diào)用fun1函數(shù)左移字符 */
{
int i;
for(i = 0 ; i < m ; i++) fun1(w);
}