為大家收集整理了《2013年計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)及答案解析(14)》供大家參考,希望對(duì)大家有所幫助?。?!
第一題:請(qǐng)補(bǔ)充函數(shù)fun,該函數(shù)的功能是比較字符串str1和str2的大小,并返回比較的結(jié)果。
例如:當(dāng)str1=“abcd”,str2=”abc”時(shí),fun函數(shù)返回”>”。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的橫線上填入所編寫的若干表達(dá)式和語(yǔ)句。#include
#include
#define N 80
char *fun(char *str1, char *str2)
{
char *p1 = str1, *p2 = str2;
while (*p1 && *p2)
{
if (___1___)
return "<";
if (___2___)
return ">";
p1++;
p2++;
}
if (*p1 == *p2)
return "==";
if (*p1 == ___3___)
return "<";
else
return ">";
}
main()
{
char str1[N], str2[N];
printf("Input str1:\n");
gets(str1);
printf("Input str2:\n");
gets(str2);
printf("\n*******the result********\n");
printf("\nstr1 %s str2", fun(str1, str2));
}
填空題參考答案:
第1處填空:*p1<*p2或*p2>*p1
第2處填空:*p1>*p2或*p2<*p1
第3處填空:’\0’或0
第二題:下列給定程序中,函數(shù)fun的功能是:比較兩個(gè)字符串,將長(zhǎng)的那個(gè)字符串的首地址作為函數(shù)值返回。
請(qǐng)改正函數(shù)fun中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include
#include
/********found********/
double fun(char *s, char *t)
{
int s1 = 0, t1 = 0;
char *ss, *tt;
ss = s;
tt = t;
/********found********/
while (*ss)
{
s1++;
(*ss)++;
}
/********found********/
while (*tt)
{
t1++;
(*tt)++;
}
if (t1 > s1)
return t;
else
return s;
}
main()
{
char a[80], b[80];
printf("\nEnter a string : ");
gets(a);
printf("\nEnter a string again : ");
gets(b);
printf("\nThe longer is :\n\n%s\n", fun(a, b));
}
改錯(cuò)題參考答案:
第一處: double fun(char *s, char *t) 應(yīng)改為 char *fun(char *s, char *t)
第二處: (*ss)++; 應(yīng)改為 ss++;
第三處: (*tt)++; 應(yīng)改為 tt++;
第三題:學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,它的功能是:把低于平均分的學(xué)生數(shù)據(jù)放在b 所指的數(shù)組中,低于平均分的學(xué)生人數(shù)通過(guò)形參n傳回,平均分通過(guò)函數(shù)值返回。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫在若干語(yǔ)句。
#include
#define N 8
typedef struct
{
char num[10];
double s;
} STREC;
double fun ( STREC *a, STREC *b, int *n )
{
}
main()
{
STREC s[N]={{"GA05",85}, {"GA03",76}, {"GA02",69}, {"GA04",85},
{"GA01",91}, {"GA07",72}, {"GA08",64}, {"GA06", 87}};
STREC h[N], t;FILE *out ;
int i, j, n;
double ave;
ave=fun ( s, h, &n );
printf ("The %d student data which is lower than %7.3f:\n", n, ave );
for (i=0; i printf ("%s %4.1f\n", h[i]. num, h[i]. s);
printf ("\n");
out=fopen ("out.dat","w");
fprintf (out, "%d\n%7.3f\n", n, ave);
for (i=0; i for(j=i+1;j if(h[i].s>h[j].s)
{
t=h[i] ;
h[i]=h[j];
h[j]=t;
}
for(i=0;i fprintf (out, "%4.1f\n", h[i].s );
fclose (out );
}
編程題參考答案:
double fun (STREC *a, STREC *b, int *n)
{
double aver=0.0;
int i, j=0;
*n=0;
for (i=0; i aver+=a[i].s;
aver/=N;
for(i=0;i if(a[i].s {
b[j]=a[i];
(*n)++;
j++;
}
return aver;
}
第一題:請(qǐng)補(bǔ)充函數(shù)fun,該函數(shù)的功能是比較字符串str1和str2的大小,并返回比較的結(jié)果。
例如:當(dāng)str1=“abcd”,str2=”abc”時(shí),fun函數(shù)返回”>”。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的橫線上填入所編寫的若干表達(dá)式和語(yǔ)句。#include
#include
#define N 80
char *fun(char *str1, char *str2)
{
char *p1 = str1, *p2 = str2;
while (*p1 && *p2)
{
if (___1___)
return "<";
if (___2___)
return ">";
p1++;
p2++;
}
if (*p1 == *p2)
return "==";
if (*p1 == ___3___)
return "<";
else
return ">";
}
main()
{
char str1[N], str2[N];
printf("Input str1:\n");
gets(str1);
printf("Input str2:\n");
gets(str2);
printf("\n*******the result********\n");
printf("\nstr1 %s str2", fun(str1, str2));
}
填空題參考答案:
第1處填空:*p1<*p2或*p2>*p1
第2處填空:*p1>*p2或*p2<*p1
第3處填空:’\0’或0
第二題:下列給定程序中,函數(shù)fun的功能是:比較兩個(gè)字符串,將長(zhǎng)的那個(gè)字符串的首地址作為函數(shù)值返回。
請(qǐng)改正函數(shù)fun中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include
#include
/********found********/
double fun(char *s, char *t)
{
int s1 = 0, t1 = 0;
char *ss, *tt;
ss = s;
tt = t;
/********found********/
while (*ss)
{
s1++;
(*ss)++;
}
/********found********/
while (*tt)
{
t1++;
(*tt)++;
}
if (t1 > s1)
return t;
else
return s;
}
main()
{
char a[80], b[80];
printf("\nEnter a string : ");
gets(a);
printf("\nEnter a string again : ");
gets(b);
printf("\nThe longer is :\n\n%s\n", fun(a, b));
}
改錯(cuò)題參考答案:
第一處: double fun(char *s, char *t) 應(yīng)改為 char *fun(char *s, char *t)
第二處: (*ss)++; 應(yīng)改為 ss++;
第三處: (*tt)++; 應(yīng)改為 tt++;
第三題:學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,它的功能是:把低于平均分的學(xué)生數(shù)據(jù)放在b 所指的數(shù)組中,低于平均分的學(xué)生人數(shù)通過(guò)形參n傳回,平均分通過(guò)函數(shù)值返回。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫在若干語(yǔ)句。
#include
#define N 8
typedef struct
{
char num[10];
double s;
} STREC;
double fun ( STREC *a, STREC *b, int *n )
{
}
main()
{
STREC s[N]={{"GA05",85}, {"GA03",76}, {"GA02",69}, {"GA04",85},
{"GA01",91}, {"GA07",72}, {"GA08",64}, {"GA06", 87}};
STREC h[N], t;FILE *out ;
int i, j, n;
double ave;
ave=fun ( s, h, &n );
printf ("The %d student data which is lower than %7.3f:\n", n, ave );
for (i=0; i printf ("%s %4.1f\n", h[i]. num, h[i]. s);
printf ("\n");
out=fopen ("out.dat","w");
fprintf (out, "%d\n%7.3f\n", n, ave);
for (i=0; i for(j=i+1;j if(h[i].s>h[j].s)
{
t=h[i] ;
h[i]=h[j];
h[j]=t;
}
for(i=0;i fprintf (out, "%4.1f\n", h[i].s );
fclose (out );
}
編程題參考答案:
double fun (STREC *a, STREC *b, int *n)
{
double aver=0.0;
int i, j=0;
*n=0;
for (i=0; i aver+=a[i].s;
aver/=N;
for(i=0;i if(a[i].s {
b[j]=a[i];
(*n)++;
j++;
}
return aver;
}