為大家收集整理了《2014年計(jì)算機(jī)二級(jí)C單選密押試題及答案》供大家參考,希望對(duì)大家有所幫助!?。?BR> 一 單項(xiàng)選擇題
1.以下程序的輸出結(jié)果是( C )。
int d=1;
fun(int p)
{static int d=5;
d+=p;
printf("%d ",D);
return(D);
}
main( )
{ int a=3; printf("%d\n",fun(a+fun(D)));}
A) 6 9 9
B) 6 6 9
C) 6 15 15
D) 6 6 15
2.下列程序執(zhí)行后的輸出結(jié)果是( C )。
void func1(int i);
void func2(int i);
char st[ ]="hello,friend!";
void func1(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func2(i);}
}
void func2(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{int i=0; func1(i); printf("\n");}
A) hello
B) hel
C) hlo
D) hlm
3.在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是( B )。
A) 地址傳遞
B) 單向值傳遞
C) 由實(shí)參傳給形參,再由形參傳回實(shí)參
D) 傳遞方式由用戶指定
4.以下函數(shù)值的類型是( A )。
fun( float x )
{float y;
y=3*x-4;
return y;
}
A) int
B) 不確定
C) void
D) float
5.設(shè)有以下函數(shù):
f( int a)
{int b=0;
static int c=3;
b++; c++;
return(a+b+C);
}
如果在下面的程序中調(diào)用該函數(shù),則輸出結(jié)果是( A )。
main()
{int a=2, i;
for(i=0;i<3;i++) printf("%d\n", f(a));
}
A) 7
B) 7
C) 7
D) 7
8 9 10 7
9 11 13 7
6.以下程序的輸出結(jié)果是( B )。
int a, b;
void fun()
{a=100; b=200;}
main()
{int a=5, b=7;
fun();
printf("%d%d\n", a,
B);
}
A) 100200
B) 57
C) 200100
D) 75
7.以下所列的各函數(shù)首部中,正確的是( C )。
A) void play(var a:Integer, var b:Integer)
B) void play(int a, B)
C) void play(int a, int B)
D) Sub play(a as integer, b as integer)
8.以下程序的輸出結(jié)果是( C )。
fun(int x, int y, int z)
{z=x*x+y*y; }
main()
{int a=31;
fun(5, 2, a);
printf("%d", a);
}
A) 0
B) 29
C) 31
D) 無定值}
9.當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則實(shí)參向形參傳遞的是( B )。
A) 數(shù)組的長(zhǎng)度
B) 數(shù)組的首地址
C) 數(shù)組每一個(gè)元素的地址
D) 數(shù)組每個(gè)元素中的值
10.以下程序的輸出結(jié)果是( A )。
long fun( int n)
{long s;
if(n= =1 || n= =2) s=2;
else s=n-fun(n-1);
return s;
}
main()
{printf("%ld\n", fun(3)); }
A) 1
B) 2
C) 3
D) 4
11.有如下函數(shù)調(diào)用語句:
func(rec1, rec2+rec3, (rec4, rec5));
在該函數(shù)調(diào)用語句中,含有的實(shí)參個(gè)數(shù)是( A )。
A) 3
B) 4
C) 5
D) 有語法錯(cuò)
12.有如下程序:
int func(int a,int B)
{return(a+B);}
main( )
{int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%d\n”,r);
}
該程序的輸出的結(jié)果是( D )。
A) 12
B) 13
C) 14
D) 15
13.以下程序的輸出結(jié)果是( B )。
long fib(int n)
{if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main( )
{printf(“%ld\n”,fib(3));}
A) 2
B) 4
C) 6
D) 8
14.在C語言中,變量的隱含存儲(chǔ)類別是( A )。
A) auto
B) static
C) extern
D) 無存儲(chǔ)類別
15.在下列的函數(shù)調(diào)用中,不正確的是( D )。
A) max(a,B);
B) max(3,a+B);
C) max(3,5);
D) int max(a,B);
16.以下程序的輸出結(jié)果是( C )。
func(int x, int y)
{int z;
z=x+y;
return z;
}
main( )
{int a=10, b=20, c=30, s;
s=func((a--, b++, a+B), c--);
printf(“%d\n”, s);
}
A) 30
B) 40
C) 60
D) 50
17.現(xiàn)有以下程序:
#include
inverse(char str[ ])
{char t;
int i, j;
for(i=0, j=strlen(str); i
{t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
main( )
{char str[100];
scanf(“%s”, str);
inverse(str);
printf(“%s\n”, str);
}
如果輸入an anple,該程序的輸出結(jié)果是( D )。
A) an anple
B) elpna na
C) an
D) na
18.在下列敘述中,正確的一條是( A )。
A) puts和gets函數(shù)只能輸入或輸出一個(gè)字符串
B) 在C語言中,函數(shù)可以遞歸調(diào)用或遞歸定義
C) 用scanf函數(shù)輸入數(shù)據(jù)時(shí)可以規(guī)定精度,例如scanf(“%7.2f”,&a);
D) 外部變量只限于本文件中使用
19.以下程序的輸出結(jié)果是( C )。
power(int x, int n)
{int p;
if(n>0) p=power(x, n-1)*x;
else p=1;
return (p);
}
main( )
{int x=2, n=3;
printf(“%d\n”, power(x, n));
}
A) 5
B) 6
C) 8
D) 9
20.在C語言的函數(shù)中( C )。
A) 必須有形參
B) 形參必須是變量名
C) 可以有也可以沒有形參
D) 數(shù)組名不能作形參
一 單項(xiàng)選擇題
1.以下程序的輸出結(jié)果是( C )。
int d=1;
fun(int p)
{static int d=5;
d+=p;
printf("%d ",D);
return(D);
}
main( )
{ int a=3; printf("%d\n",fun(a+fun(D)));}
A) 6 9 9
B) 6 6 9
C) 6 15 15
D) 6 6 15
2.下列程序執(zhí)行后的輸出結(jié)果是( C )。
void func1(int i);
void func2(int i);
char st[ ]="hello,friend!";
void func1(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func2(i);}
}
void func2(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{int i=0; func1(i); printf("\n");}
A) hello
B) hel
C) hlo
D) hlm
3.在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是( B )。
A) 地址傳遞
B) 單向值傳遞
C) 由實(shí)參傳給形參,再由形參傳回實(shí)參
D) 傳遞方式由用戶指定
4.以下函數(shù)值的類型是( A )。
fun( float x )
{float y;
y=3*x-4;
return y;
}
A) int
B) 不確定
C) void
D) float
5.設(shè)有以下函數(shù):
f( int a)
{int b=0;
static int c=3;
b++; c++;
return(a+b+C);
}
如果在下面的程序中調(diào)用該函數(shù),則輸出結(jié)果是( A )。
main()
{int a=2, i;
for(i=0;i<3;i++) printf("%d\n", f(a));
}
A) 7
B) 7
C) 7
D) 7
8 9 10 7
9 11 13 7
6.以下程序的輸出結(jié)果是( B )。
int a, b;
void fun()
{a=100; b=200;}
main()
{int a=5, b=7;
fun();
printf("%d%d\n", a,
B);
}
A) 100200
B) 57
C) 200100
D) 75
7.以下所列的各函數(shù)首部中,正確的是( C )。
A) void play(var a:Integer, var b:Integer)
B) void play(int a, B)
C) void play(int a, int B)
D) Sub play(a as integer, b as integer)
8.以下程序的輸出結(jié)果是( C )。
fun(int x, int y, int z)
{z=x*x+y*y; }
main()
{int a=31;
fun(5, 2, a);
printf("%d", a);
}
A) 0
B) 29
C) 31
D) 無定值}
9.當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則實(shí)參向形參傳遞的是( B )。
A) 數(shù)組的長(zhǎng)度
B) 數(shù)組的首地址
C) 數(shù)組每一個(gè)元素的地址
D) 數(shù)組每個(gè)元素中的值
10.以下程序的輸出結(jié)果是( A )。
long fun( int n)
{long s;
if(n= =1 || n= =2) s=2;
else s=n-fun(n-1);
return s;
}
main()
{printf("%ld\n", fun(3)); }
A) 1
B) 2
C) 3
D) 4
11.有如下函數(shù)調(diào)用語句:
func(rec1, rec2+rec3, (rec4, rec5));
在該函數(shù)調(diào)用語句中,含有的實(shí)參個(gè)數(shù)是( A )。
A) 3
B) 4
C) 5
D) 有語法錯(cuò)
12.有如下程序:
int func(int a,int B)
{return(a+B);}
main( )
{int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%d\n”,r);
}
該程序的輸出的結(jié)果是( D )。
A) 12
B) 13
C) 14
D) 15
13.以下程序的輸出結(jié)果是( B )。
long fib(int n)
{if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main( )
{printf(“%ld\n”,fib(3));}
A) 2
B) 4
C) 6
D) 8
14.在C語言中,變量的隱含存儲(chǔ)類別是( A )。
A) auto
B) static
C) extern
D) 無存儲(chǔ)類別
15.在下列的函數(shù)調(diào)用中,不正確的是( D )。
A) max(a,B);
B) max(3,a+B);
C) max(3,5);
D) int max(a,B);
16.以下程序的輸出結(jié)果是( C )。
func(int x, int y)
{int z;
z=x+y;
return z;
}
main( )
{int a=10, b=20, c=30, s;
s=func((a--, b++, a+B), c--);
printf(“%d\n”, s);
}
A) 30
B) 40
C) 60
D) 50
17.現(xiàn)有以下程序:
#include
inverse(char str[ ])
{char t;
int i, j;
for(i=0, j=strlen(str); i
{t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
main( )
{char str[100];
scanf(“%s”, str);
inverse(str);
printf(“%s\n”, str);
}
如果輸入an anple,該程序的輸出結(jié)果是( D )。
A) an anple
B) elpna na
C) an
D) na
18.在下列敘述中,正確的一條是( A )。
A) puts和gets函數(shù)只能輸入或輸出一個(gè)字符串
B) 在C語言中,函數(shù)可以遞歸調(diào)用或遞歸定義
C) 用scanf函數(shù)輸入數(shù)據(jù)時(shí)可以規(guī)定精度,例如scanf(“%7.2f”,&a);
D) 外部變量只限于本文件中使用
19.以下程序的輸出結(jié)果是( C )。
power(int x, int n)
{int p;
if(n>0) p=power(x, n-1)*x;
else p=1;
return (p);
}
main( )
{int x=2, n=3;
printf(“%d\n”, power(x, n));
}
A) 5
B) 6
C) 8
D) 9
20.在C語言的函數(shù)中( C )。
A) 必須有形參
B) 形參必須是變量名
C) 可以有也可以沒有形參
D) 數(shù)組名不能作形參
21.當(dāng)輸入a1b2c3d4e時(shí),以下程序的輸出結(jié)果為( A )。
#include
main( )
{char str[40];
printf(“請(qǐng)輸入含有四個(gè)數(shù)字字符的字符串:\n”);
scanf(“%s”,str);
insert(str);
}
insert(char str[ ])
{int i;
for(i=strlen(str);i>0;i--)
{str[2*i]=str[i];
str[2*i-1]= ‘ ’;
}
printf(“\n結(jié)果是:%s”, str);
}
A) a 1 b 2 c 3 d 4 e
B) 1 2 3 4
C) a 1 b 2
D) 因輸入錯(cuò)誤,程序出錯(cuò)
22.在下列敘述中,錯(cuò)誤的一條是( A )。
A) 主函數(shù)main中定義的變量在整個(gè)文件或程序中有效
B) 不同函數(shù)中,可以使用相同名字的變量
C) 函數(shù)中的形式參數(shù)是局部變量
D) 在一個(gè)函數(shù)內(nèi)部,可在復(fù)合語句中定義變量,這些變量只在本復(fù)合語句中有效
23.以下程序的輸出結(jié)果是( A )。
#include
main( )
{int i;
for(i=0; i<2; i++)
as ( );
}
as( )
{int lv=0;
static int sv=0;
printf(“l(fā)v=%d, sv=%d”, lv, sv);
lv++;
sv++;
}
A) lv=0,sv=0,lv=0,sv=1
B) lv=0,sv=0,lv=1,sv=1
C) lv=0,sv=0,lv=0,sv=0
D) lv=0,sv=1,lv=0,sv=1
24.在下列敘述中,錯(cuò)誤的一條是( B )。
A) 全局變量存放在靜態(tài)存儲(chǔ)區(qū)中,在程序開始執(zhí)行時(shí)就給全局變量分配存儲(chǔ)區(qū),程序執(zhí)行完才釋放
B) 在有參函數(shù)中,形參在整個(gè)程序一開始執(zhí)行時(shí)便分配內(nèi)存單元
C) 用數(shù)組名作函數(shù)實(shí)參和形參時(shí),應(yīng)在主調(diào)函數(shù)和被調(diào)用函數(shù)中分別定義數(shù)組
D) 在同一個(gè)源文件中,全局變量與局部變量同名時(shí),在局部變量的作用范圍內(nèi),全局變量不起作用
25.在下列語句中,不正確的是( D )。
A) c=2*max(a,B); B) m=max(a,max(b,C));
C) printf(“%d”,max(a,B));
D) int max(int x,int max(int y,int z));
26.若輸入1.5、2.5,以下程序的輸出結(jié)果為( C )。
main( )
{int max(float x, float y);
float a, b;
int c;
scanf(“%f, %f” , &a, &B);
c=max(a, B);
printf(“%d”, C);
}
max(float x, float y)
{float z;
z=x>y ? x : y;
return(z);
}
A) 1
B) 2.5
C) 2
D) 3
27、下列程序結(jié)構(gòu)中,正確的是( D )。
A) main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
int add(float x,float y)
{ … }
B) main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
float add(float x,float y)
{ … }
C) float add();
main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
float add(float x,float y)
{ … }
D) float add(float x,float y)
{ … }
main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
28.在下列敘述中,錯(cuò)誤的一條是( B )。
A) scanf函數(shù)可以用來輸入任何類型的多個(gè)數(shù)據(jù)
B) 數(shù)組名作函數(shù)參數(shù)時(shí),也采用“值傳遞”方式
C) 如果形參發(fā)生改變,不會(huì)改變主調(diào)函數(shù)的實(shí)參值
D) 函數(shù)的實(shí)參與形參的類型應(yīng)一致
29.以下程序的輸出結(jié)果是( B )。
main()
{int i=1,j=3;
printf(“%d”,i++);
{int i=0;
i+=j*2;
printf(“%d,%d”,i,j);
}
printf(“%d,%d\n”,i,j);
}
A) 1,6,3,1,3
B) 1,6,3,2,3
C) 1,6,3,6,3
D) 1,7,3,2,3
30.C語言中形參的缺省存儲(chǔ)類別是( A )。
A) 自動(dòng)(auto)
B) 靜態(tài)(static)
C) 寄存器(register)
D) 外部(extern)
31.設(shè)有如下函數(shù):
ggg(float x)
{printf(“\n%d”, x*x);}
則函數(shù)的類型為( C )。
A) 與參數(shù)x的類型相同
B) void
C) int
D) 無法確定
32.C語言規(guī)定,程序中各函數(shù)之間( A )
A) 既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用
B) 不允許直接遞歸調(diào)用也不允許間接遞歸調(diào)用
C) 允許直接遞歸調(diào)用不允許間接遞歸調(diào)用
D) 不允許直接遞歸調(diào)用允許間接遞歸調(diào)用
33.下面程序的輸出結(jié)果是( A )。
main()
{int i=2,p;
p=f(i,i+1);
printf(“%d”,p);
}
int f(int a,int B)
{int c;
c=a;
if(a>B) c=1;
else
if(a==B) c=0;
else c=-1;
return(C);
}
A) -1
B) 0
C) 1
D) 2
34.以下程序的輸出結(jié)果為( B )。
f(int b[ ], int n)
{int i, r;
r=1;
for(i=0; i<=n; i++) r=r*b[i];
return(r);
}
main()
{int x, a[ ]={2,3,4,5,6,7,8,9};
x=f(a, 3);
printf(“%d\n”, x);
}
A) 720
B) 120
C) 24
D) 6
35.下列程序執(zhí)行后的輸出結(jié)果是( D )。
f(int a)
{int b=0;
static c=3;
a=c++, b++;
return(a);
}
main( )
{int a=2, i, k;
for(i=0;i<2;i++)
k=f(a++);
printf(“%d\n”, k);
}
A) 3
B) 0
C) 5
D) 4
36.下列程序執(zhí)行后輸出的結(jié)果是( A )。
int d=1;
fun(int p)
{int d=5;
d+=p++;
printf(“%d”, D);
}
main( )
{int a=3;
fun(a);
d+=a++;
printf(“%d\n”, D);
}
A) 84
B) 96
C) 94
D) 85
37.以下程序的輸出結(jié)果是( B )。
fun(int k)
{if(k>0) fun(k-1);
printf(“%d”, k);
}
main( )
{int w=5;
fun(w);
}
A) 54321
B) 012345
C) 12345
D) 543210
38.以下說法中正確的是( C )。
A) C語言程序總是從第一個(gè)定義的函數(shù)開始執(zhí)行
B) 在C語言程序中,被調(diào)用的函數(shù)必須在main()函數(shù)中定義
C) C語言程序總是從main()函數(shù)開始執(zhí)行
D) C語言程序中的main()函數(shù)必須放在程序的開始部分
39.以下程序的輸出結(jié)果是( C )。
int abc(int u, int v);
main()
{int a=24, b=16, c;
c=abc (a, B);
printf(“%d\n”, C);
}
int abc(int u, int v)
{int w;
while(v)
{w= u%v; u=v; v=w;}
return u;
}
A) 6
B) 7
C) 8
D) 9
二 填空題
1.下列程序的輸出結(jié)果是 5 6 。
int t(int x, int y, int cp, int dp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main( )
{int a=4, b=3, c=5, d=6;
t(a, b, c, D);
printf("%d %d\n", c, D);
}
2.以下程序的運(yùn)行結(jié)果是 8,17 。
#include
main()
{int k=4, m=1, p;
p=func(k, m); printf("%d,", p);
p=func(k, m); printf("%d\n", p);
}
func(int a, int B)
{static int m=0, i=2;
i+=m+1;
m=i+a+b;
return m;
}
3.以下程序輸出的最后一個(gè)值是 120 。
int ff(int n)
{static int f=l;
f=f*n;
return f;
}
main()
{int i;
for(i=1;i<=5;i++) printf("%d\n",ff(i));
}
4.以下函數(shù)的功能是:求x的y次方,請(qǐng)?zhí)羁铡?BR> double fun(double x, int y)
{int i;
double z;
for(i=1, z=x; i
return z;
}
5.若變量n中的值為24,則prnt函數(shù)共輸出 5 行,最后一行有 4 個(gè)數(shù)。
void prnt(int n, int aa[ ])
{int i;
for(i=1; i<=n; i++)
{printf("%6d", aa[i]);
if(!(i%5)) printf("\n");
}
printf("\n");
}
6.以下程序中,主函數(shù)調(diào)用了LineMax函數(shù),實(shí)現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的值。請(qǐng)?zhí)羁铡?BR> #define N 3
#define M 4
void LineMax(int x[N][M])
{int i, j, p;
for(i=0; i
{p=0;
for(j=1; j
if(x[i][p]
printf("The max value in line %d is %d\n", i, x[i][p] );
}
}
main()
{int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
LineMax(x)
}
7.函數(shù)pi的功能是根據(jù)以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+ … +1/(n*n)
請(qǐng)?jiān)谙旅娴暮瘮?shù)中填空,完成求π的功能。
#include “math.h”
double pi(long n)
{double s=0.0;
long i;
for(i=1;i<=n; i++) s=s+ 1.0/i*i ;
return(sqrt(6*s));
}
8.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且fun函數(shù)為void類型;請(qǐng)寫出fun函數(shù)的首部 void fun( double b[10][22]) 。要求形參名為b。
main()
{double s[10][22];
int n;
…
fun(s);
…
}
9.輸入12時(shí),程序輸出結(jié)果為 12 is not prime number. ;若輸入17,輸出結(jié)果為 17 is prime number. 。
main()
{int number;
scanf(“%d”, &number);
if(prime(number)) printf(“\n%d is prime number.”, number);
else printf(“\n%d is not prime number.”, number);
}
int prime(int number)
{int flag=1, n;
for(n=2; n
if(number%n= =0) flag=0;
return(flag);
}
10.理解下面的程序,填空完善程序。
main()
{int a, b, c;
scanf(“%d %d”, &a,%b );
c= max (a,
B);
printf(“a=%d b=%d max=%d\n”, a, b,
C);
}
int max(x, y)
int x,int y ;
{int z;
if(x>y) z=x;
else z=y;
return z ;
}
11.下面程序的輸出結(jié)果是 2,5,1,2,3,-2 。
main()
{int a=3, b=2, c=1;
c-=++b;
b*=a+c;
{int b=5, c=12;
c/=b*2;
a-=c;
printf(“%d, %d, %d,”, a, b,
C);
a+=--c;
}
printf(“%d, %d, %d”, a, b,
C);
}
12.下面的findmax函數(shù)返回?cái)?shù)組s中值為的元素的下標(biāo),數(shù)組中元素的個(gè)數(shù)由t傳人,請(qǐng)?zhí)羁铡?BR> findmax(int s[ ], int t)
{int k, p;
for(p=0, k=p; p
if(s[p]>s[k]) p=k ;
return k;
}
13.下面程序的輸出結(jié)果是 7 。
fun(int x)
{int p;
if(x= =0||x= =1) return(3);
p=x-fun(x-2);
return p;
}
main()
{printf(“%d\n”, fun(9));}
14.函數(shù)fun的功能是:使一個(gè)字符串按逆序存放,請(qǐng)?zhí)羁铡?BR> void fun(char str[ ])
{char m;
int i, j;
for(i=0, j=strlen(str); i< strlen(str) ; i++, j--)
{m=str[i];
str[i]= str[j-1] ;
str[j-1]=m;
}
printf(“%s\n”, str);
}
一、單項(xiàng)選擇題
1.以下說法中正確的是( D )。
A) #define和printf都是C語句
B) #define是C語句,而printf不是
C) printf是C語句,但#define不是
D) #define和printf都不是C語句
2.以下程序的輸出結(jié)果是( C )。
#define f(x) x*x
main( )
{int a=6, b=2, c;
c=f(a)/f(
B);
printf("%d\n", c);
}
A) 9
B) 6
C) 36
D) 18
3.下列程序執(zhí)行后的輸出結(jié)果是( B )。
#define MA(x) x*(x-1)
main( )
{int a=1, b=2; printf("%d\n", MA(1+a+
B));}
A) 6
B) 8
C) 10
D) 12
4.以下程序的輸出結(jié)果是( D )。
#define M(x, y, z) x*y+z
main( )
{int a=1, b=2, c=3;
printf("%d\n", M(a+b, b+c, c+a));
}
A) 19
B) 17
C) 15
D) 12
5.以下程序的輸出結(jié)果是( B )。
#define SQR(X) X*X
main( )
{int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n", a);
}
A) 16
B) 2
C) 9
D) 1
6.有如下程序:
#define N 2
#define M N+1
#define NUM 2*M+1
main( )
{int i;
for(i=1; i<=NUM; i++) printf(“%d\n”, i);
}《 M=3,NUM=6》
該程序中的for循環(huán)執(zhí)行的次數(shù)是( B )。
A) 5
B) 6
C) 7
D) 8
7.以下程序的輸出結(jié)果是( C )。
#include
#define MIN(x, y) (x)< (y)?(x):(y)
main( )
{int a, b, c;
a=20;b=10;
c=5*MIN(a, B);
printf(“%d\n”, c);
}
A) 20
B) 200
C) 10
D) 50
8.在下列敘述中,正確的是( C )。
A) 下面的程序有一個(gè)整型輸出值:
main( )
{int a;
a=pp( );
printf(“%d”,a);
}
void pp( )
{ … }
B) 以下程序的運(yùn)行結(jié)果為1,3,5,7
main( )
{static int a[4]={1,3,5,7};
printf(“%d,%d,%d,%d\n”,a);
}
C) 以下兩個(gè)語句是等價(jià)的
for(;(c=getchar( ))!=‘\n’;printf(“%c\n”, c));
for(;(c=getchar( ))!=‘\n’;) printf(“%c\n”, c);
D) 以下程序中的PRINT()是一個(gè)函數(shù)
#define PRINT(V) printf(“V=%d\t”, V)
main( )
{int a,b;
a=1;
b=2;
PRINT(a);
PRINT(B);
}
9.在下列#include命令中,正確的一條是( D )。
A) #include[string.h]
B) #include{math.h}
C) #include(stdio.h)
D) #include
10.宏定義#define PI 3.1415926的作用是:指定用標(biāo)識(shí)符PI來代替一個(gè)( B )。
A) 單精度數(shù)
B) 字符串
C) 雙精度數(shù)
D) 整數(shù)
11.如果在用戶的程序中要使用C庫函數(shù)中的數(shù)學(xué)函數(shù)時(shí),應(yīng)在該源文件中使用的include命令是( B )。
A) #include
B) #include
C) #include
D) #include
12.若輸入60和13,以下程序的輸出結(jié)果是( D )。
#define SURPLUS(a,B) ((a)%(B))
main( )
{int a,b;
scanf(“%d,%d”,&a,&B);
printf(“%d\n”,SURPLUS(a,B));
}
A) 60
B) 13
C) 73
D) 8
13.如果文件1包含文件2,文件2中要用到文件3的內(nèi)容,而文件3中要用到文件4的內(nèi)容,則可在文件1中用三個(gè)#include命令分別包含文件2、文件3和文件4。在下列關(guān)于這幾個(gè)文件包含順序的敘述中,正確的一條是( A )。
A) 文件4應(yīng)出現(xiàn)在文件3之前,文件3應(yīng)出現(xiàn)在文件2之前
B) 文件2應(yīng)出現(xiàn)在文件3之前,文件3應(yīng)出現(xiàn)在文件4之前
C) 文件3應(yīng)出現(xiàn)在文件2之前,文件2應(yīng)出現(xiàn)在文件4之前
D) 出現(xiàn)的先后順序可以任意
14.在下面四個(gè)程序中,輸出結(jié)果與其它三個(gè)不同的是( C )。
A) #define MAX(a,B) ((a)>(B)?(a):(B))
main( )
{int a,b,c;
scanf(“%d,%d,%d”,&a,&b,&c);
printf(“%d\n”,MAX(MAX(a,B),c));
}
B) main( )
{int a,b,c;
scanf(“%d,%d,%d”,&a,&b,&c);
printf(“%d\n”,max(a,b,c));
}
max(int x,int y,int z)
{int t;
t=(x>y?x:y);
return(t>z?t:z);
}
C) main( )
{int a,b,c,max;
scanf(“%d,%d,%d”,&a,&b,&c);
if(a>b>c) max=a;
if(b>c>a) max=b;
if(c>a>B) max=c;
printf(“%d\n”,max);
}
D) main( )
{int a,b,c,max;
scanf(“%d,%d,%d”,&a,&b,&c);
max=a>b?a:b;
if(c>max) max=c;
printf(“%d\n”,max);
}
15.以下for語句構(gòu)成的循環(huán)執(zhí)行了( C )次。
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main( )
{int i, n=0;
for(i=1; i<=NUM; i++)
{n++;
printf(“%d”, n);
}
printf(“\n”);
}
A) 4
B) 6
C) 8
D) 9
16.以下程序的輸出結(jié)果是( B )。
#include
#define FUDGE(y) 2.84+y
#define PR(a) printf(“%d”, (int)(a))
#define PRINT1(a) PR(a); putchar(‘\n’)
main( )
{int x=2;
PRINT1(FUDGE(5)*x);
}
A) 11
B) 12
C) 13
D) 15
17.以下程序的輸出結(jié)果是( A )。
#define SUB(x, y) (x)*y
main( )
{int a=3, b=4;
printf(“%d\n”, SUB(a++, b++));
}
A) 12
B) 15
C) 16
D) 20
18.設(shè)有以下宏定義:
#define N 3
#define Y(n) ((N+1)*n)
則執(zhí)行語句:z=2*(N+Y(5+1));后,z的值為( C )。
A) 出錯(cuò)
B) 42
C) 48
D) 54
1.以下程序的輸出結(jié)果是( C )。
int d=1;
fun(int p)
{static int d=5;
d+=p;
printf("%d ",D);
return(D);
}
main( )
{ int a=3; printf("%d\n",fun(a+fun(D)));}
A) 6 9 9
B) 6 6 9
C) 6 15 15
D) 6 6 15
2.下列程序執(zhí)行后的輸出結(jié)果是( C )。
void func1(int i);
void func2(int i);
char st[ ]="hello,friend!";
void func1(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func2(i);}
}
void func2(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{int i=0; func1(i); printf("\n");}
A) hello
B) hel
C) hlo
D) hlm
3.在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是( B )。
A) 地址傳遞
B) 單向值傳遞
C) 由實(shí)參傳給形參,再由形參傳回實(shí)參
D) 傳遞方式由用戶指定
4.以下函數(shù)值的類型是( A )。
fun( float x )
{float y;
y=3*x-4;
return y;
}
A) int
B) 不確定
C) void
D) float
5.設(shè)有以下函數(shù):
f( int a)
{int b=0;
static int c=3;
b++; c++;
return(a+b+C);
}
如果在下面的程序中調(diào)用該函數(shù),則輸出結(jié)果是( A )。
main()
{int a=2, i;
for(i=0;i<3;i++) printf("%d\n", f(a));
}
A) 7
B) 7
C) 7
D) 7
8 9 10 7
9 11 13 7
6.以下程序的輸出結(jié)果是( B )。
int a, b;
void fun()
{a=100; b=200;}
main()
{int a=5, b=7;
fun();
printf("%d%d\n", a,
B);
}
A) 100200
B) 57
C) 200100
D) 75
7.以下所列的各函數(shù)首部中,正確的是( C )。
A) void play(var a:Integer, var b:Integer)
B) void play(int a, B)
C) void play(int a, int B)
D) Sub play(a as integer, b as integer)
8.以下程序的輸出結(jié)果是( C )。
fun(int x, int y, int z)
{z=x*x+y*y; }
main()
{int a=31;
fun(5, 2, a);
printf("%d", a);
}
A) 0
B) 29
C) 31
D) 無定值}
9.當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則實(shí)參向形參傳遞的是( B )。
A) 數(shù)組的長(zhǎng)度
B) 數(shù)組的首地址
C) 數(shù)組每一個(gè)元素的地址
D) 數(shù)組每個(gè)元素中的值
10.以下程序的輸出結(jié)果是( A )。
long fun( int n)
{long s;
if(n= =1 || n= =2) s=2;
else s=n-fun(n-1);
return s;
}
main()
{printf("%ld\n", fun(3)); }
A) 1
B) 2
C) 3
D) 4
11.有如下函數(shù)調(diào)用語句:
func(rec1, rec2+rec3, (rec4, rec5));
在該函數(shù)調(diào)用語句中,含有的實(shí)參個(gè)數(shù)是( A )。
A) 3
B) 4
C) 5
D) 有語法錯(cuò)
12.有如下程序:
int func(int a,int B)
{return(a+B);}
main( )
{int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%d\n”,r);
}
該程序的輸出的結(jié)果是( D )。
A) 12
B) 13
C) 14
D) 15
13.以下程序的輸出結(jié)果是( B )。
long fib(int n)
{if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main( )
{printf(“%ld\n”,fib(3));}
A) 2
B) 4
C) 6
D) 8
14.在C語言中,變量的隱含存儲(chǔ)類別是( A )。
A) auto
B) static
C) extern
D) 無存儲(chǔ)類別
15.在下列的函數(shù)調(diào)用中,不正確的是( D )。
A) max(a,B);
B) max(3,a+B);
C) max(3,5);
D) int max(a,B);
16.以下程序的輸出結(jié)果是( C )。
func(int x, int y)
{int z;
z=x+y;
return z;
}
main( )
{int a=10, b=20, c=30, s;
s=func((a--, b++, a+B), c--);
printf(“%d\n”, s);
}
A) 30
B) 40
C) 60
D) 50
17.現(xiàn)有以下程序:
#include
inverse(char str[ ])
{char t;
int i, j;
for(i=0, j=strlen(str); i
{t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
main( )
{char str[100];
scanf(“%s”, str);
inverse(str);
printf(“%s\n”, str);
}
如果輸入an anple,該程序的輸出結(jié)果是( D )。
A) an anple
B) elpna na
C) an
D) na
18.在下列敘述中,正確的一條是( A )。
A) puts和gets函數(shù)只能輸入或輸出一個(gè)字符串
B) 在C語言中,函數(shù)可以遞歸調(diào)用或遞歸定義
C) 用scanf函數(shù)輸入數(shù)據(jù)時(shí)可以規(guī)定精度,例如scanf(“%7.2f”,&a);
D) 外部變量只限于本文件中使用
19.以下程序的輸出結(jié)果是( C )。
power(int x, int n)
{int p;
if(n>0) p=power(x, n-1)*x;
else p=1;
return (p);
}
main( )
{int x=2, n=3;
printf(“%d\n”, power(x, n));
}
A) 5
B) 6
C) 8
D) 9
20.在C語言的函數(shù)中( C )。
A) 必須有形參
B) 形參必須是變量名
C) 可以有也可以沒有形參
D) 數(shù)組名不能作形參
一 單項(xiàng)選擇題
1.以下程序的輸出結(jié)果是( C )。
int d=1;
fun(int p)
{static int d=5;
d+=p;
printf("%d ",D);
return(D);
}
main( )
{ int a=3; printf("%d\n",fun(a+fun(D)));}
A) 6 9 9
B) 6 6 9
C) 6 15 15
D) 6 6 15
2.下列程序執(zhí)行后的輸出結(jié)果是( C )。
void func1(int i);
void func2(int i);
char st[ ]="hello,friend!";
void func1(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func2(i);}
}
void func2(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{int i=0; func1(i); printf("\n");}
A) hello
B) hel
C) hlo
D) hlm
3.在調(diào)用函數(shù)時(shí),如果實(shí)參是簡(jiǎn)單變量,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是( B )。
A) 地址傳遞
B) 單向值傳遞
C) 由實(shí)參傳給形參,再由形參傳回實(shí)參
D) 傳遞方式由用戶指定
4.以下函數(shù)值的類型是( A )。
fun( float x )
{float y;
y=3*x-4;
return y;
}
A) int
B) 不確定
C) void
D) float
5.設(shè)有以下函數(shù):
f( int a)
{int b=0;
static int c=3;
b++; c++;
return(a+b+C);
}
如果在下面的程序中調(diào)用該函數(shù),則輸出結(jié)果是( A )。
main()
{int a=2, i;
for(i=0;i<3;i++) printf("%d\n", f(a));
}
A) 7
B) 7
C) 7
D) 7
8 9 10 7
9 11 13 7
6.以下程序的輸出結(jié)果是( B )。
int a, b;
void fun()
{a=100; b=200;}
main()
{int a=5, b=7;
fun();
printf("%d%d\n", a,
B);
}
A) 100200
B) 57
C) 200100
D) 75
7.以下所列的各函數(shù)首部中,正確的是( C )。
A) void play(var a:Integer, var b:Integer)
B) void play(int a, B)
C) void play(int a, int B)
D) Sub play(a as integer, b as integer)
8.以下程序的輸出結(jié)果是( C )。
fun(int x, int y, int z)
{z=x*x+y*y; }
main()
{int a=31;
fun(5, 2, a);
printf("%d", a);
}
A) 0
B) 29
C) 31
D) 無定值}
9.當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則實(shí)參向形參傳遞的是( B )。
A) 數(shù)組的長(zhǎng)度
B) 數(shù)組的首地址
C) 數(shù)組每一個(gè)元素的地址
D) 數(shù)組每個(gè)元素中的值
10.以下程序的輸出結(jié)果是( A )。
long fun( int n)
{long s;
if(n= =1 || n= =2) s=2;
else s=n-fun(n-1);
return s;
}
main()
{printf("%ld\n", fun(3)); }
A) 1
B) 2
C) 3
D) 4
11.有如下函數(shù)調(diào)用語句:
func(rec1, rec2+rec3, (rec4, rec5));
在該函數(shù)調(diào)用語句中,含有的實(shí)參個(gè)數(shù)是( A )。
A) 3
B) 4
C) 5
D) 有語法錯(cuò)
12.有如下程序:
int func(int a,int B)
{return(a+B);}
main( )
{int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%d\n”,r);
}
該程序的輸出的結(jié)果是( D )。
A) 12
B) 13
C) 14
D) 15
13.以下程序的輸出結(jié)果是( B )。
long fib(int n)
{if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main( )
{printf(“%ld\n”,fib(3));}
A) 2
B) 4
C) 6
D) 8
14.在C語言中,變量的隱含存儲(chǔ)類別是( A )。
A) auto
B) static
C) extern
D) 無存儲(chǔ)類別
15.在下列的函數(shù)調(diào)用中,不正確的是( D )。
A) max(a,B);
B) max(3,a+B);
C) max(3,5);
D) int max(a,B);
16.以下程序的輸出結(jié)果是( C )。
func(int x, int y)
{int z;
z=x+y;
return z;
}
main( )
{int a=10, b=20, c=30, s;
s=func((a--, b++, a+B), c--);
printf(“%d\n”, s);
}
A) 30
B) 40
C) 60
D) 50
17.現(xiàn)有以下程序:
#include
inverse(char str[ ])
{char t;
int i, j;
for(i=0, j=strlen(str); i
{t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
main( )
{char str[100];
scanf(“%s”, str);
inverse(str);
printf(“%s\n”, str);
}
如果輸入an anple,該程序的輸出結(jié)果是( D )。
A) an anple
B) elpna na
C) an
D) na
18.在下列敘述中,正確的一條是( A )。
A) puts和gets函數(shù)只能輸入或輸出一個(gè)字符串
B) 在C語言中,函數(shù)可以遞歸調(diào)用或遞歸定義
C) 用scanf函數(shù)輸入數(shù)據(jù)時(shí)可以規(guī)定精度,例如scanf(“%7.2f”,&a);
D) 外部變量只限于本文件中使用
19.以下程序的輸出結(jié)果是( C )。
power(int x, int n)
{int p;
if(n>0) p=power(x, n-1)*x;
else p=1;
return (p);
}
main( )
{int x=2, n=3;
printf(“%d\n”, power(x, n));
}
A) 5
B) 6
C) 8
D) 9
20.在C語言的函數(shù)中( C )。
A) 必須有形參
B) 形參必須是變量名
C) 可以有也可以沒有形參
D) 數(shù)組名不能作形參
21.當(dāng)輸入a1b2c3d4e時(shí),以下程序的輸出結(jié)果為( A )。
#include
main( )
{char str[40];
printf(“請(qǐng)輸入含有四個(gè)數(shù)字字符的字符串:\n”);
scanf(“%s”,str);
insert(str);
}
insert(char str[ ])
{int i;
for(i=strlen(str);i>0;i--)
{str[2*i]=str[i];
str[2*i-1]= ‘ ’;
}
printf(“\n結(jié)果是:%s”, str);
}
A) a 1 b 2 c 3 d 4 e
B) 1 2 3 4
C) a 1 b 2
D) 因輸入錯(cuò)誤,程序出錯(cuò)
22.在下列敘述中,錯(cuò)誤的一條是( A )。
A) 主函數(shù)main中定義的變量在整個(gè)文件或程序中有效
B) 不同函數(shù)中,可以使用相同名字的變量
C) 函數(shù)中的形式參數(shù)是局部變量
D) 在一個(gè)函數(shù)內(nèi)部,可在復(fù)合語句中定義變量,這些變量只在本復(fù)合語句中有效
23.以下程序的輸出結(jié)果是( A )。
#include
main( )
{int i;
for(i=0; i<2; i++)
as ( );
}
as( )
{int lv=0;
static int sv=0;
printf(“l(fā)v=%d, sv=%d”, lv, sv);
lv++;
sv++;
}
A) lv=0,sv=0,lv=0,sv=1
B) lv=0,sv=0,lv=1,sv=1
C) lv=0,sv=0,lv=0,sv=0
D) lv=0,sv=1,lv=0,sv=1
24.在下列敘述中,錯(cuò)誤的一條是( B )。
A) 全局變量存放在靜態(tài)存儲(chǔ)區(qū)中,在程序開始執(zhí)行時(shí)就給全局變量分配存儲(chǔ)區(qū),程序執(zhí)行完才釋放
B) 在有參函數(shù)中,形參在整個(gè)程序一開始執(zhí)行時(shí)便分配內(nèi)存單元
C) 用數(shù)組名作函數(shù)實(shí)參和形參時(shí),應(yīng)在主調(diào)函數(shù)和被調(diào)用函數(shù)中分別定義數(shù)組
D) 在同一個(gè)源文件中,全局變量與局部變量同名時(shí),在局部變量的作用范圍內(nèi),全局變量不起作用
25.在下列語句中,不正確的是( D )。
A) c=2*max(a,B); B) m=max(a,max(b,C));
C) printf(“%d”,max(a,B));
D) int max(int x,int max(int y,int z));
26.若輸入1.5、2.5,以下程序的輸出結(jié)果為( C )。
main( )
{int max(float x, float y);
float a, b;
int c;
scanf(“%f, %f” , &a, &B);
c=max(a, B);
printf(“%d”, C);
}
max(float x, float y)
{float z;
z=x>y ? x : y;
return(z);
}
A) 1
B) 2.5
C) 2
D) 3
27、下列程序結(jié)構(gòu)中,正確的是( D )。
A) main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
int add(float x,float y)
{ … }
B) main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
float add(float x,float y)
{ … }
C) float add();
main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
float add(float x,float y)
{ … }
D) float add(float x,float y)
{ … }
main()
{float a,b,c;
scanf(“%f,%f”,&a,&B);
c=add(a,B);
…
}
28.在下列敘述中,錯(cuò)誤的一條是( B )。
A) scanf函數(shù)可以用來輸入任何類型的多個(gè)數(shù)據(jù)
B) 數(shù)組名作函數(shù)參數(shù)時(shí),也采用“值傳遞”方式
C) 如果形參發(fā)生改變,不會(huì)改變主調(diào)函數(shù)的實(shí)參值
D) 函數(shù)的實(shí)參與形參的類型應(yīng)一致
29.以下程序的輸出結(jié)果是( B )。
main()
{int i=1,j=3;
printf(“%d”,i++);
{int i=0;
i+=j*2;
printf(“%d,%d”,i,j);
}
printf(“%d,%d\n”,i,j);
}
A) 1,6,3,1,3
B) 1,6,3,2,3
C) 1,6,3,6,3
D) 1,7,3,2,3
30.C語言中形參的缺省存儲(chǔ)類別是( A )。
A) 自動(dòng)(auto)
B) 靜態(tài)(static)
C) 寄存器(register)
D) 外部(extern)
31.設(shè)有如下函數(shù):
ggg(float x)
{printf(“\n%d”, x*x);}
則函數(shù)的類型為( C )。
A) 與參數(shù)x的類型相同
B) void
C) int
D) 無法確定
32.C語言規(guī)定,程序中各函數(shù)之間( A )
A) 既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用
B) 不允許直接遞歸調(diào)用也不允許間接遞歸調(diào)用
C) 允許直接遞歸調(diào)用不允許間接遞歸調(diào)用
D) 不允許直接遞歸調(diào)用允許間接遞歸調(diào)用
33.下面程序的輸出結(jié)果是( A )。
main()
{int i=2,p;
p=f(i,i+1);
printf(“%d”,p);
}
int f(int a,int B)
{int c;
c=a;
if(a>B) c=1;
else
if(a==B) c=0;
else c=-1;
return(C);
}
A) -1
B) 0
C) 1
D) 2
34.以下程序的輸出結(jié)果為( B )。
f(int b[ ], int n)
{int i, r;
r=1;
for(i=0; i<=n; i++) r=r*b[i];
return(r);
}
main()
{int x, a[ ]={2,3,4,5,6,7,8,9};
x=f(a, 3);
printf(“%d\n”, x);
}
A) 720
B) 120
C) 24
D) 6
35.下列程序執(zhí)行后的輸出結(jié)果是( D )。
f(int a)
{int b=0;
static c=3;
a=c++, b++;
return(a);
}
main( )
{int a=2, i, k;
for(i=0;i<2;i++)
k=f(a++);
printf(“%d\n”, k);
}
A) 3
B) 0
C) 5
D) 4
36.下列程序執(zhí)行后輸出的結(jié)果是( A )。
int d=1;
fun(int p)
{int d=5;
d+=p++;
printf(“%d”, D);
}
main( )
{int a=3;
fun(a);
d+=a++;
printf(“%d\n”, D);
}
A) 84
B) 96
C) 94
D) 85
37.以下程序的輸出結(jié)果是( B )。
fun(int k)
{if(k>0) fun(k-1);
printf(“%d”, k);
}
main( )
{int w=5;
fun(w);
}
A) 54321
B) 012345
C) 12345
D) 543210
38.以下說法中正確的是( C )。
A) C語言程序總是從第一個(gè)定義的函數(shù)開始執(zhí)行
B) 在C語言程序中,被調(diào)用的函數(shù)必須在main()函數(shù)中定義
C) C語言程序總是從main()函數(shù)開始執(zhí)行
D) C語言程序中的main()函數(shù)必須放在程序的開始部分
39.以下程序的輸出結(jié)果是( C )。
int abc(int u, int v);
main()
{int a=24, b=16, c;
c=abc (a, B);
printf(“%d\n”, C);
}
int abc(int u, int v)
{int w;
while(v)
{w= u%v; u=v; v=w;}
return u;
}
A) 6
B) 7
C) 8
D) 9
二 填空題
1.下列程序的輸出結(jié)果是 5 6 。
int t(int x, int y, int cp, int dp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main( )
{int a=4, b=3, c=5, d=6;
t(a, b, c, D);
printf("%d %d\n", c, D);
}
2.以下程序的運(yùn)行結(jié)果是 8,17 。
#include
main()
{int k=4, m=1, p;
p=func(k, m); printf("%d,", p);
p=func(k, m); printf("%d\n", p);
}
func(int a, int B)
{static int m=0, i=2;
i+=m+1;
m=i+a+b;
return m;
}
3.以下程序輸出的最后一個(gè)值是 120 。
int ff(int n)
{static int f=l;
f=f*n;
return f;
}
main()
{int i;
for(i=1;i<=5;i++) printf("%d\n",ff(i));
}
4.以下函數(shù)的功能是:求x的y次方,請(qǐng)?zhí)羁铡?BR> double fun(double x, int y)
{int i;
double z;
for(i=1, z=x; i
return z;
}
5.若變量n中的值為24,則prnt函數(shù)共輸出 5 行,最后一行有 4 個(gè)數(shù)。
void prnt(int n, int aa[ ])
{int i;
for(i=1; i<=n; i++)
{printf("%6d", aa[i]);
if(!(i%5)) printf("\n");
}
printf("\n");
}
6.以下程序中,主函數(shù)調(diào)用了LineMax函數(shù),實(shí)現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的值。請(qǐng)?zhí)羁铡?BR> #define N 3
#define M 4
void LineMax(int x[N][M])
{int i, j, p;
for(i=0; i
{p=0;
for(j=1; j
if(x[i][p]
printf("The max value in line %d is %d\n", i, x[i][p] );
}
}
main()
{int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
LineMax(x)
}
7.函數(shù)pi的功能是根據(jù)以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+ … +1/(n*n)
請(qǐng)?jiān)谙旅娴暮瘮?shù)中填空,完成求π的功能。
#include “math.h”
double pi(long n)
{double s=0.0;
long i;
for(i=1;i<=n; i++) s=s+ 1.0/i*i ;
return(sqrt(6*s));
}
8.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且fun函數(shù)為void類型;請(qǐng)寫出fun函數(shù)的首部 void fun( double b[10][22]) 。要求形參名為b。
main()
{double s[10][22];
int n;
…
fun(s);
…
}
9.輸入12時(shí),程序輸出結(jié)果為 12 is not prime number. ;若輸入17,輸出結(jié)果為 17 is prime number. 。
main()
{int number;
scanf(“%d”, &number);
if(prime(number)) printf(“\n%d is prime number.”, number);
else printf(“\n%d is not prime number.”, number);
}
int prime(int number)
{int flag=1, n;
for(n=2; n
if(number%n= =0) flag=0;
return(flag);
}
10.理解下面的程序,填空完善程序。
main()
{int a, b, c;
scanf(“%d %d”, &a,%b );
c= max (a,
B);
printf(“a=%d b=%d max=%d\n”, a, b,
C);
}
int max(x, y)
int x,int y ;
{int z;
if(x>y) z=x;
else z=y;
return z ;
}
11.下面程序的輸出結(jié)果是 2,5,1,2,3,-2 。
main()
{int a=3, b=2, c=1;
c-=++b;
b*=a+c;
{int b=5, c=12;
c/=b*2;
a-=c;
printf(“%d, %d, %d,”, a, b,
C);
a+=--c;
}
printf(“%d, %d, %d”, a, b,
C);
}
12.下面的findmax函數(shù)返回?cái)?shù)組s中值為的元素的下標(biāo),數(shù)組中元素的個(gè)數(shù)由t傳人,請(qǐng)?zhí)羁铡?BR> findmax(int s[ ], int t)
{int k, p;
for(p=0, k=p; p
if(s[p]>s[k]) p=k ;
return k;
}
13.下面程序的輸出結(jié)果是 7 。
fun(int x)
{int p;
if(x= =0||x= =1) return(3);
p=x-fun(x-2);
return p;
}
main()
{printf(“%d\n”, fun(9));}
14.函數(shù)fun的功能是:使一個(gè)字符串按逆序存放,請(qǐng)?zhí)羁铡?BR> void fun(char str[ ])
{char m;
int i, j;
for(i=0, j=strlen(str); i< strlen(str) ; i++, j--)
{m=str[i];
str[i]= str[j-1] ;
str[j-1]=m;
}
printf(“%s\n”, str);
}
一、單項(xiàng)選擇題
1.以下說法中正確的是( D )。
A) #define和printf都是C語句
B) #define是C語句,而printf不是
C) printf是C語句,但#define不是
D) #define和printf都不是C語句
2.以下程序的輸出結(jié)果是( C )。
#define f(x) x*x
main( )
{int a=6, b=2, c;
c=f(a)/f(
B);
printf("%d\n", c);
}
A) 9
B) 6
C) 36
D) 18
3.下列程序執(zhí)行后的輸出結(jié)果是( B )。
#define MA(x) x*(x-1)
main( )
{int a=1, b=2; printf("%d\n", MA(1+a+
B));}
A) 6
B) 8
C) 10
D) 12
4.以下程序的輸出結(jié)果是( D )。
#define M(x, y, z) x*y+z
main( )
{int a=1, b=2, c=3;
printf("%d\n", M(a+b, b+c, c+a));
}
A) 19
B) 17
C) 15
D) 12
5.以下程序的輸出結(jié)果是( B )。
#define SQR(X) X*X
main( )
{int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n", a);
}
A) 16
B) 2
C) 9
D) 1
6.有如下程序:
#define N 2
#define M N+1
#define NUM 2*M+1
main( )
{int i;
for(i=1; i<=NUM; i++) printf(“%d\n”, i);
}《 M=3,NUM=6》
該程序中的for循環(huán)執(zhí)行的次數(shù)是( B )。
A) 5
B) 6
C) 7
D) 8
7.以下程序的輸出結(jié)果是( C )。
#include
#define MIN(x, y) (x)< (y)?(x):(y)
main( )
{int a, b, c;
a=20;b=10;
c=5*MIN(a, B);
printf(“%d\n”, c);
}
A) 20
B) 200
C) 10
D) 50
8.在下列敘述中,正確的是( C )。
A) 下面的程序有一個(gè)整型輸出值:
main( )
{int a;
a=pp( );
printf(“%d”,a);
}
void pp( )
{ … }
B) 以下程序的運(yùn)行結(jié)果為1,3,5,7
main( )
{static int a[4]={1,3,5,7};
printf(“%d,%d,%d,%d\n”,a);
}
C) 以下兩個(gè)語句是等價(jià)的
for(;(c=getchar( ))!=‘\n’;printf(“%c\n”, c));
for(;(c=getchar( ))!=‘\n’;) printf(“%c\n”, c);
D) 以下程序中的PRINT()是一個(gè)函數(shù)
#define PRINT(V) printf(“V=%d\t”, V)
main( )
{int a,b;
a=1;
b=2;
PRINT(a);
PRINT(B);
}
9.在下列#include命令中,正確的一條是( D )。
A) #include[string.h]
B) #include{math.h}
C) #include(stdio.h)
D) #include
10.宏定義#define PI 3.1415926的作用是:指定用標(biāo)識(shí)符PI來代替一個(gè)( B )。
A) 單精度數(shù)
B) 字符串
C) 雙精度數(shù)
D) 整數(shù)
11.如果在用戶的程序中要使用C庫函數(shù)中的數(shù)學(xué)函數(shù)時(shí),應(yīng)在該源文件中使用的include命令是( B )。
A) #include
B) #include
C) #include
D) #include
12.若輸入60和13,以下程序的輸出結(jié)果是( D )。
#define SURPLUS(a,B) ((a)%(B))
main( )
{int a,b;
scanf(“%d,%d”,&a,&B);
printf(“%d\n”,SURPLUS(a,B));
}
A) 60
B) 13
C) 73
D) 8
13.如果文件1包含文件2,文件2中要用到文件3的內(nèi)容,而文件3中要用到文件4的內(nèi)容,則可在文件1中用三個(gè)#include命令分別包含文件2、文件3和文件4。在下列關(guān)于這幾個(gè)文件包含順序的敘述中,正確的一條是( A )。
A) 文件4應(yīng)出現(xiàn)在文件3之前,文件3應(yīng)出現(xiàn)在文件2之前
B) 文件2應(yīng)出現(xiàn)在文件3之前,文件3應(yīng)出現(xiàn)在文件4之前
C) 文件3應(yīng)出現(xiàn)在文件2之前,文件2應(yīng)出現(xiàn)在文件4之前
D) 出現(xiàn)的先后順序可以任意
14.在下面四個(gè)程序中,輸出結(jié)果與其它三個(gè)不同的是( C )。
A) #define MAX(a,B) ((a)>(B)?(a):(B))
main( )
{int a,b,c;
scanf(“%d,%d,%d”,&a,&b,&c);
printf(“%d\n”,MAX(MAX(a,B),c));
}
B) main( )
{int a,b,c;
scanf(“%d,%d,%d”,&a,&b,&c);
printf(“%d\n”,max(a,b,c));
}
max(int x,int y,int z)
{int t;
t=(x>y?x:y);
return(t>z?t:z);
}
C) main( )
{int a,b,c,max;
scanf(“%d,%d,%d”,&a,&b,&c);
if(a>b>c) max=a;
if(b>c>a) max=b;
if(c>a>B) max=c;
printf(“%d\n”,max);
}
D) main( )
{int a,b,c,max;
scanf(“%d,%d,%d”,&a,&b,&c);
max=a>b?a:b;
if(c>max) max=c;
printf(“%d\n”,max);
}
15.以下for語句構(gòu)成的循環(huán)執(zhí)行了( C )次。
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main( )
{int i, n=0;
for(i=1; i<=NUM; i++)
{n++;
printf(“%d”, n);
}
printf(“\n”);
}
A) 4
B) 6
C) 8
D) 9
16.以下程序的輸出結(jié)果是( B )。
#include
#define FUDGE(y) 2.84+y
#define PR(a) printf(“%d”, (int)(a))
#define PRINT1(a) PR(a); putchar(‘\n’)
main( )
{int x=2;
PRINT1(FUDGE(5)*x);
}
A) 11
B) 12
C) 13
D) 15
17.以下程序的輸出結(jié)果是( A )。
#define SUB(x, y) (x)*y
main( )
{int a=3, b=4;
printf(“%d\n”, SUB(a++, b++));
}
A) 12
B) 15
C) 16
D) 20
18.設(shè)有以下宏定義:
#define N 3
#define Y(n) ((N+1)*n)
則執(zhí)行語句:z=2*(N+Y(5+1));后,z的值為( C )。
A) 出錯(cuò)
B) 42
C) 48
D) 54