為大家收集整理了《2013計(jì)算機(jī)二級C語言上機(jī)練習(xí)題及答案(3)》供大家參考,希望對大家有所幫助?。?!
第一題:
已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體中,給定程序的功能是找出成績最低的學(xué)生記錄,通過形參返回函數(shù)。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的橫線上填入所編寫的若干表達(dá)式或語句。
#include
#include
#define N 10
typedef struct ss
{
char num[10];
int s;
} STU;
fun(STU a[], STU *s)
{
stu h;
int i;
h = a[0];
for (i=1; i if (a[i].s < h.s)
h = a[i];
*s = h;
}
main()
{
STU a[N] =
{
{"A01", 81}, {"A02", 89}, {"A03", 66}, {"A04", 87},
{"A05", 77}, {"A06", 90}, {"A07", 79}, {"A08", 61},
{"A09", 80}, {"A10", 71}
}, m;
int i;
printf("***** The original data *****\n");
for (i=0; i printf("No = %s Mark = %d\n", a[i].num, a[i].s);
fun(a, &m);
printf("***** THE RESULT *****\n");
printf("The lowest : %s , %d\n", m.num, m.s);
}
第二題:
下列給定程序中,函數(shù)fun的功能是:將字符串p中的所有字符復(fù)制到字符串b中,要求每復(fù)制三個(gè)字符之后插入一個(gè)空格。例如,在調(diào)用fun函數(shù)之前給字符串a(chǎn)輸入ABCDEFGHIJK,調(diào)用函數(shù)之后,字符串之后,字符串b 中的內(nèi)容則為ABC DEF GHI JK。
請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include
void fun(char *p, char *b)
{
int i, k = 0;
while (*p)
{
/********found********/
i = 0;
/********found********/
while (i<3 && *p)
{
b[k] = *p;
k++;
p++;
i++;
}
/********found********/
if (*p)
b[k++] = ' ';
}
b[k] = '\0';
}
main()
{
char a[80], b[80];
printf("Enter a string: ");
gets(a);
printf("The original string: ");
puts(a);
fun(a, b);
printf("\nThe string after insert space: ");
puts(b);
printf("\n\n");
}
第三題:
請編寫一個(gè)函數(shù)fun,它的功能是:計(jì)算并輸出給定整數(shù)n的所有因子(不包括1與自身)之和。規(guī)定n的值不大于1000。
例如,若主函數(shù)從鍵盤給n輸入的值為856,則輸出為sum=763。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
#include
int fun(int n)
{
}
main()
{
int n,sum;
FILE *out ;
printf("Input n: ");
scanf("%d",&n);
sum=fun(n);
printf("sum=%d\n",sum);
out=fopen ("out.dat","w");
fprintf(out, "%d\n", fun(123));
fprintf(out, "%d\n", fun(456));
fprintf(out, "%d\n", fun(789));
fprintf(out, "%d\n", fun(147));
fprintf(out, "%d", fun(258));
fclose (out );
}
int fun(int n)
{
int s=0,i;
for(i=2;i<=n-1;i++)
if(n%i==0)
s+=i;
return s;
}
第一題:
已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體中,給定程序的功能是找出成績最低的學(xué)生記錄,通過形參返回函數(shù)。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的橫線上填入所編寫的若干表達(dá)式或語句。
#include
#include
#define N 10
typedef struct ss
{
char num[10];
int s;
} STU;
fun(STU a[], STU *s)
{
stu h;
int i;
h = a[0];
for (i=1; i if (a[i].s < h.s)
h = a[i];
*s = h;
}
main()
{
STU a[N] =
{
{"A01", 81}, {"A02", 89}, {"A03", 66}, {"A04", 87},
{"A05", 77}, {"A06", 90}, {"A07", 79}, {"A08", 61},
{"A09", 80}, {"A10", 71}
}, m;
int i;
printf("***** The original data *****\n");
for (i=0; i printf("No = %s Mark = %d\n", a[i].num, a[i].s);
fun(a, &m);
printf("***** THE RESULT *****\n");
printf("The lowest : %s , %d\n", m.num, m.s);
}
第二題:
下列給定程序中,函數(shù)fun的功能是:將字符串p中的所有字符復(fù)制到字符串b中,要求每復(fù)制三個(gè)字符之后插入一個(gè)空格。例如,在調(diào)用fun函數(shù)之前給字符串a(chǎn)輸入ABCDEFGHIJK,調(diào)用函數(shù)之后,字符串之后,字符串b 中的內(nèi)容則為ABC DEF GHI JK。
請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
#include
void fun(char *p, char *b)
{
int i, k = 0;
while (*p)
{
/********found********/
i = 0;
/********found********/
while (i<3 && *p)
{
b[k] = *p;
k++;
p++;
i++;
}
/********found********/
if (*p)
b[k++] = ' ';
}
b[k] = '\0';
}
main()
{
char a[80], b[80];
printf("Enter a string: ");
gets(a);
printf("The original string: ");
puts(a);
fun(a, b);
printf("\nThe string after insert space: ");
puts(b);
printf("\n\n");
}
第三題:
請編寫一個(gè)函數(shù)fun,它的功能是:計(jì)算并輸出給定整數(shù)n的所有因子(不包括1與自身)之和。規(guī)定n的值不大于1000。
例如,若主函數(shù)從鍵盤給n輸入的值為856,則輸出為sum=763。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
#include
int fun(int n)
{
}
main()
{
int n,sum;
FILE *out ;
printf("Input n: ");
scanf("%d",&n);
sum=fun(n);
printf("sum=%d\n",sum);
out=fopen ("out.dat","w");
fprintf(out, "%d\n", fun(123));
fprintf(out, "%d\n", fun(456));
fprintf(out, "%d\n", fun(789));
fprintf(out, "%d\n", fun(147));
fprintf(out, "%d", fun(258));
fclose (out );
}
int fun(int n)
{
int s=0,i;
for(i=2;i<=n-1;i++)
if(n%i==0)
s+=i;
return s;
}

