為大家收集整理了《2013計算機二級C語言上機練習題及答案(3)》供大家參考,希望對大家有所幫助?。?!
第一題:
已知學生的記錄由學號和學習成績構成,N名學生的數(shù)據(jù)已存入a結構體中,給定程序的功能是找出成績最低的學生記錄,通過形參返回函數(shù)。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在fun函數(shù)的橫線上填入所編寫的若干表達式或語句。
#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中的所有字符復制到字符串b中,要求每復制三個字符之后插入一個空格。例如,在調用fun函數(shù)之前給字符串a(chǎn)輸入ABCDEFGHIJK,調用函數(shù)之后,字符串之后,字符串b 中的內容則為ABC DEF GHI JK。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!
#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");
}
第三題:
請編寫一個函數(shù)fun,它的功能是:計算并輸出給定整數(shù)n的所有因子(不包括1與自身)之和。規(guī)定n的值不大于1000。
例如,若主函數(shù)從鍵盤給n輸入的值為856,則輸出為sum=763。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(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;
}
第一題:
已知學生的記錄由學號和學習成績構成,N名學生的數(shù)據(jù)已存入a結構體中,給定程序的功能是找出成績最低的學生記錄,通過形參返回函數(shù)。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在fun函數(shù)的橫線上填入所編寫的若干表達式或語句。
#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中的所有字符復制到字符串b中,要求每復制三個字符之后插入一個空格。例如,在調用fun函數(shù)之前給字符串a(chǎn)輸入ABCDEFGHIJK,調用函數(shù)之后,字符串之后,字符串b 中的內容則為ABC DEF GHI JK。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!
#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");
}
第三題:
請編寫一個函數(shù)fun,它的功能是:計算并輸出給定整數(shù)n的所有因子(不包括1與自身)之和。規(guī)定n的值不大于1000。
例如,若主函數(shù)從鍵盤給n輸入的值為856,則輸出為sum=763。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(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;
}

