為大家收集整理了《2013計算機二級C語言上機題庫及答案解析(15)》供大家參考,希望對大家有所幫助?。。?BR> 第一題:填空題
請補充fun函數(shù),該函數(shù)的功能是:尋找兩個整數(shù)之間的所有素數(shù)(包括這兩個整數(shù)),
把結(jié)果保存在數(shù)組bb中,函數(shù)返回素數(shù)的個數(shù)。
例如:輸入3和17,則輸出為3 5 7 11 13 17
請勿改動主函數(shù)mian和其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的橫線上填入所編寫的若干表達或語句。
#include
#include
#define N 1000
int fun(int n, int m, int bb[N])
{
int i, j, k = 0, flag;
for (j=n; j<=m; j++)
{
___1___;
for (i=2; i if (___2___)
{
flag = 0;
break;
}
if (___3___)
bb[k++] = j;
}
return k;
}
main()
{
int n = 0, m = 0, i, k;
int bb[N];
printf("Input n\n");
scanf("%d", &n);
printf("Input m\n");
scanf("%d", &m);
for (i=0; i bb[i] = 0;
k = fun(n, m, bb);
for (i=0; i printf("M", bb[i]);
}
填空題答案:
第1處填空:flag=1
第2處填空:j%i==0或0==j%i或!(j%i)
第3處填空:flag==1或1==flag
第二題:改錯題
下列給定程序中,函數(shù)fun的功能是:為一個偶數(shù)尋找兩個素數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針轉(zhuǎn)會主函數(shù)。
請改正函數(shù)fun中的錯誤,使它能得出正確的結(jié)果。
注意:不要動main函數(shù),不得增行或刪除,也不得更改程序的結(jié)構(gòu)!
#include
#include
void fun(int a, int *b, int *c)
{
int i, j, d, y;
for (i=3; i {
/********found********/
y = 0;
for (j=2; j<=sqrt((double)i); j++)
if (i%j == 0)
y = 0;
if (y == 1)
{
/********found********/
d = i-a;
for (j=2; j<=sqrt((double)i); j++)
if (d%j == 0)
y = 0;
if (y == 1)
{
*b = i;
*c = d;
}
}
}
}
main()
{
int a, b, c;
do
{
printf("\nInput a: ");
scanf("%d", &a);
} while (a%2);
fun(a, &b, &c);
printf("\n\n%d=%d + %d\n", a, b, c);
}
改錯題答案:
第一處:y=0;應(yīng)改為y=1;
第二處:d= i-a;應(yīng)改為d= a-I;
第三題:編程題
請編寫函數(shù)fun,該函數(shù)的功能:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在行參n所指的存儲單元中。
例如,若二維數(shù)組中的數(shù)據(jù)為:
33 33 33 33
44 44 44 44
55 55 55 55
則一維數(shù)組中的內(nèi)容應(yīng)是:
33 33 33 33 44 44 44 44 55 55 55 55
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
include
void fun(int (*s)[10], int *b, int *n, int mm, int nn)
{
}
main()
{
int w[10][10] = {{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j ;
int a[100] = {0}, n = 0 ;
FILE *out ;
printf("The matrix:\n") ;
for(i = 0 ; i < 3 ; i++)
{
for(j = 0 ; j < 4 ; j++)
printf("=",w[i][j]) ;
printf("\n") ;
}
fun(w, a, &n, 3, 4) ;
printf("The A array:\n") ;
out=fopen ("out.dat","w");
for(i = 0 ; i < n ; i++)
{
printf("=",a[i]);
fprintf(out, "%d\n",a[i]);
}
fclose (out );
printf("\n\n") ;
}
編程題答案:
void fun(int(*s)[10],int *n, int mm,int nn)
{
int I, j;
for(i=0;i {
b{*n}=*(*(s+i)+j);
n=n+1;
}
}
請補充fun函數(shù),該函數(shù)的功能是:尋找兩個整數(shù)之間的所有素數(shù)(包括這兩個整數(shù)),
把結(jié)果保存在數(shù)組bb中,函數(shù)返回素數(shù)的個數(shù)。
例如:輸入3和17,則輸出為3 5 7 11 13 17
請勿改動主函數(shù)mian和其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的橫線上填入所編寫的若干表達或語句。
#include
#include
#define N 1000
int fun(int n, int m, int bb[N])
{
int i, j, k = 0, flag;
for (j=n; j<=m; j++)
{
___1___;
for (i=2; i if (___2___)
{
flag = 0;
break;
}
if (___3___)
bb[k++] = j;
}
return k;
}
main()
{
int n = 0, m = 0, i, k;
int bb[N];
printf("Input n\n");
scanf("%d", &n);
printf("Input m\n");
scanf("%d", &m);
for (i=0; i bb[i] = 0;
k = fun(n, m, bb);
for (i=0; i printf("M", bb[i]);
}
填空題答案:
第1處填空:flag=1
第2處填空:j%i==0或0==j%i或!(j%i)
第3處填空:flag==1或1==flag
第二題:改錯題
下列給定程序中,函數(shù)fun的功能是:為一個偶數(shù)尋找兩個素數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針轉(zhuǎn)會主函數(shù)。
請改正函數(shù)fun中的錯誤,使它能得出正確的結(jié)果。
注意:不要動main函數(shù),不得增行或刪除,也不得更改程序的結(jié)構(gòu)!
#include
#include
void fun(int a, int *b, int *c)
{
int i, j, d, y;
for (i=3; i {
/********found********/
y = 0;
for (j=2; j<=sqrt((double)i); j++)
if (i%j == 0)
y = 0;
if (y == 1)
{
/********found********/
d = i-a;
for (j=2; j<=sqrt((double)i); j++)
if (d%j == 0)
y = 0;
if (y == 1)
{
*b = i;
*c = d;
}
}
}
}
main()
{
int a, b, c;
do
{
printf("\nInput a: ");
scanf("%d", &a);
} while (a%2);
fun(a, &b, &c);
printf("\n\n%d=%d + %d\n", a, b, c);
}
改錯題答案:
第一處:y=0;應(yīng)改為y=1;
第二處:d= i-a;應(yīng)改為d= a-I;
第三題:編程題
請編寫函數(shù)fun,該函數(shù)的功能:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在行參n所指的存儲單元中。
例如,若二維數(shù)組中的數(shù)據(jù)為:
33 33 33 33
44 44 44 44
55 55 55 55
則一維數(shù)組中的內(nèi)容應(yīng)是:
33 33 33 33 44 44 44 44 55 55 55 55
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
include
void fun(int (*s)[10], int *b, int *n, int mm, int nn)
{
}
main()
{
int w[10][10] = {{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j ;
int a[100] = {0}, n = 0 ;
FILE *out ;
printf("The matrix:\n") ;
for(i = 0 ; i < 3 ; i++)
{
for(j = 0 ; j < 4 ; j++)
printf("=",w[i][j]) ;
printf("\n") ;
}
fun(w, a, &n, 3, 4) ;
printf("The A array:\n") ;
out=fopen ("out.dat","w");
for(i = 0 ; i < n ; i++)
{
printf("=",a[i]);
fprintf(out, "%d\n",a[i]);
}
fclose (out );
printf("\n\n") ;
}
編程題答案:
void fun(int(*s)[10],int *n, int mm,int nn)
{
int I, j;
for(i=0;i {
b{*n}=*(*(s+i)+j);
n=n+1;
}
}