為大家收集整理了《2013計(jì)算機(jī)二級(jí)C語言上機(jī)練習(xí)題及答案(23)》供大家參考,希望對(duì)大家有所幫助?。。?BR> 填空題
給定程序中,函數(shù)fun的功能是:找出N×N矩陣中每列元素中的值,并按順序依次存放于形參b所指的一維數(shù)組中。
請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#define N 4
void fun(int (*a)[N], int *b)
{ int i,j;
for(i=0; i
/
b[i]= __1__;
for(j=1; j
if(b[i] __2__ a[j][i]) b[i]=a[j][i];
}
}
main()
{ int x[N][N]={ {12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3} },y[N],i,j;
printf("\nThe matrix :\n");
for(i=0;i
{ for(j=0;j
printf("\n");
}
fun(__3__);
printf("\nThe result is:");
for(i=0; i
printf("\n");
}
解題思路:
第一處:把每列的第1值賦值給b[i],所以應(yīng)填:a[0][i]。
第二處:如果b[i]值小于a[j][i]的值,則把a(bǔ)[j][i]重新賦值給b[i]中,保存的值, 所以應(yīng)填:<。
第三處:在主函數(shù)中,x是存放矩陣數(shù)據(jù),y是存放每列的值,所以應(yīng)填:x,y。
改錯(cuò)題
給定程序MODI1.C中函數(shù)fun的功能是: 交換主函數(shù)中兩個(gè)變量的值。例如: 若變量a中的值原為8,b中的值為3。程序運(yùn)行后a中的值為3, b中的值為8。
請(qǐng)改正程序中的錯(cuò)誤, 使它能計(jì)算出正確的結(jié)果。
注意: 不要改動(dòng) main 函數(shù), 不得增行或刪行, 也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
int fun(int x,int y)
{
int t;
t=x;x=y;y=t;
}
main()
{
int a,b;
a=8;b=3;
fun(&a,&b);
printf("%d, %d\n",a,b);
}
解題思路:
第一處:函數(shù)形參定義不正確,在定義第2個(gè)形參時(shí),也應(yīng)加上int。由于通過該函數(shù)實(shí)現(xiàn)兩數(shù)交換,在C語言中,必須交換地址中的值,所以應(yīng)定義為int *x,int *y。
第二處:要交換地址中的值,不能交換地址,必須指定地址中的值,因此應(yīng)改為
t=*x;*x=*y;*y=t;。
編程題
編寫函數(shù)fun, 函數(shù)的功能是求出小于或等于lim的所有素?cái)?shù)并放在aa數(shù)組中, 函數(shù)返回所求出的素?cái)?shù)的個(gè)數(shù)。函數(shù)fun中給出的語句僅供參考。
注意:部分源程序在文件PROG1.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
給定源程序:
#include
#define MAX 100
int fun(int lim, int aa[MAX])
{ http://ks.exam8.com
int i,j,k=0;
/* 其中變量k用于統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù) */
for(i=2;i<=lim;i++)
{
/* 以下完成判斷aa數(shù)組中小于或等于lim的素?cái)?shù)并統(tǒng)計(jì)個(gè)數(shù) */
}
return k;
}
main()
{
int limit, i, sum;
int aa[MAX] ;
printf("輸入一個(gè)整數(shù)");
scanf("%d", &limit);
sum=fun(limit, aa);
for(i=0 ; i < sum ; i++) {
if(i % 10 == 0 && i != 0) printf("\n") ;
printf("%5d", aa[i]) ;
}
NONO();
}
解題思路:
本題是考察考生如何判斷一個(gè)數(shù)是素?cái)?shù),再求出所有小于lim數(shù)的素?cái)?shù)并存入數(shù)組aa中保存,最后由形參aa返回,素?cái)?shù)的個(gè)數(shù)由函數(shù)值返回。
參考答案:
int fun(int lim, int aa[MAX])
{
int i,j,k=0;
/* 其中變量k用于統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù) */
for(i=2;i<=lim;i++)
{
/* 以下完成判斷aa數(shù)組中小于或等于lim的素?cái)?shù)并統(tǒng)計(jì)個(gè)數(shù) */
for(j = 2 ; j <= (i/2) ; j++)
if(i % j == 0) break;
if(j > (i/2)) aa[k++] = i;
}
return k;
}
給定程序中,函數(shù)fun的功能是:找出N×N矩陣中每列元素中的值,并按順序依次存放于形參b所指的一維數(shù)組中。
請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#define N 4
void fun(int (*a)[N], int *b)
{ int i,j;
for(i=0; i
/
b[i]= __1__;
for(j=1; j
if(b[i] __2__ a[j][i]) b[i]=a[j][i];
}
}
main()
{ int x[N][N]={ {12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3} },y[N],i,j;
printf("\nThe matrix :\n");
for(i=0;i
{ for(j=0;j
printf("\n");
}
fun(__3__);
printf("\nThe result is:");
for(i=0; i
printf("\n");
}
解題思路:
第一處:把每列的第1值賦值給b[i],所以應(yīng)填:a[0][i]。
第二處:如果b[i]值小于a[j][i]的值,則把a(bǔ)[j][i]重新賦值給b[i]中,保存的值, 所以應(yīng)填:<。
第三處:在主函數(shù)中,x是存放矩陣數(shù)據(jù),y是存放每列的值,所以應(yīng)填:x,y。
改錯(cuò)題
給定程序MODI1.C中函數(shù)fun的功能是: 交換主函數(shù)中兩個(gè)變量的值。例如: 若變量a中的值原為8,b中的值為3。程序運(yùn)行后a中的值為3, b中的值為8。
請(qǐng)改正程序中的錯(cuò)誤, 使它能計(jì)算出正確的結(jié)果。
注意: 不要改動(dòng) main 函數(shù), 不得增行或刪行, 也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
int fun(int x,int y)
{
int t;
t=x;x=y;y=t;
}
main()
{
int a,b;
a=8;b=3;
fun(&a,&b);
printf("%d, %d\n",a,b);
}
解題思路:
第一處:函數(shù)形參定義不正確,在定義第2個(gè)形參時(shí),也應(yīng)加上int。由于通過該函數(shù)實(shí)現(xiàn)兩數(shù)交換,在C語言中,必須交換地址中的值,所以應(yīng)定義為int *x,int *y。
第二處:要交換地址中的值,不能交換地址,必須指定地址中的值,因此應(yīng)改為
t=*x;*x=*y;*y=t;。
編程題
編寫函數(shù)fun, 函數(shù)的功能是求出小于或等于lim的所有素?cái)?shù)并放在aa數(shù)組中, 函數(shù)返回所求出的素?cái)?shù)的個(gè)數(shù)。函數(shù)fun中給出的語句僅供參考。
注意:部分源程序在文件PROG1.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
給定源程序:
#include
#define MAX 100
int fun(int lim, int aa[MAX])
{ http://ks.exam8.com
int i,j,k=0;
/* 其中變量k用于統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù) */
for(i=2;i<=lim;i++)
{
/* 以下完成判斷aa數(shù)組中小于或等于lim的素?cái)?shù)并統(tǒng)計(jì)個(gè)數(shù) */
}
return k;
}
main()
{
int limit, i, sum;
int aa[MAX] ;
printf("輸入一個(gè)整數(shù)");
scanf("%d", &limit);
sum=fun(limit, aa);
for(i=0 ; i < sum ; i++) {
if(i % 10 == 0 && i != 0) printf("\n") ;
printf("%5d", aa[i]) ;
}
NONO();
}
解題思路:
本題是考察考生如何判斷一個(gè)數(shù)是素?cái)?shù),再求出所有小于lim數(shù)的素?cái)?shù)并存入數(shù)組aa中保存,最后由形參aa返回,素?cái)?shù)的個(gè)數(shù)由函數(shù)值返回。
參考答案:
int fun(int lim, int aa[MAX])
{
int i,j,k=0;
/* 其中變量k用于統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù) */
for(i=2;i<=lim;i++)
{
/* 以下完成判斷aa數(shù)組中小于或等于lim的素?cái)?shù)并統(tǒng)計(jì)個(gè)數(shù) */
for(j = 2 ; j <= (i/2) ; j++)
if(i % j == 0) break;
if(j > (i/2)) aa[k++] = i;
}
return k;
}