- 相關(guān)推薦
2015年計算機二級考試C語言模擬試題(四)附答案
一、單項選擇題
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) 下面的程序有一個整型輸出值:
main( )
{int a;
a=pp( );
printf(“%d”,a);
}
void pp( )
{ … }
B) 以下程序的運行結(jié)果為1,3,5,7
main( )
{static int a[4]={1,3,5,7};
printf(“%d,%d,%d,%d\n”,a);
}
C) 以下兩個語句是等價的
for(;(c=getchar( ))!=‘\n’;printf(“%c\n”, c));
for(;(c=getchar( ))!=‘\n’;) printf(“%c\n”, c);
D) 以下程序中的PRINT()是一個函數(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的作用是:指定用標識符PI來代替一個( B )。
A) 單精度數(shù)
B) 字符串
C) 雙精度數(shù)
D) 整數(shù)
11.如果在用戶的程序中要使用C庫函數(shù)中的數(shù)學函數(shù)時,應在該源文件中使用的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中用三個#include命令分別包含文件2、文件3和文件4。在下列關(guān)于這幾個文件包含順序的敘述中,正確的一條是( A )。
A) 文件4應出現(xiàn)在文件3之前,文件3應出現(xiàn)在文件2之前
B) 文件2應出現(xiàn)在文件3之前,文件3應出現(xiàn)在文件4之前
C) 文件3應出現(xiàn)在文件2之前,文件2應出現(xiàn)在文件4之前
D) 出現(xiàn)的先后順序可以任意
14.在下面四個程序中,輸出結(jié)果與其它三個不同的是( 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) 出錯
B) 42
C) 48
D) 54
19.下列程序的輸出結(jié)果是( C )。
main()
{char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
printf("%d",*--p);
}
A) 非法
B) a[4]的地址
C) 5
D) 3
20.下列程序的運行結(jié)果是( B )。
void fun(int *a, int *B)
{int *k;
k=a; a=b; b=k;
}
main()
{int a=3, b=6, *x=&a, *y=&b;
fun(x, y);
printf("%d %d", a, B);
}
A) 6 3
B) 3 6
C) 編譯出錯
D) 0 0
21.下面程序的輸出結(jié)果是( C )。
main()
{int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%d\n",*p+9);
}
A) 0
B) 1
C) 10
D) 9
22.假定以下程序經(jīng)編譯和連接后生成可執(zhí)行文件PROG . EXE,如果在此可執(zhí)行文件所在目錄的DOS提示符下鍵入:PROG ABCD EFGH IJKL<回車>,則輸出結(jié)果為( D )。
main( int argc, char *argv[ ])
{while(--argc>0) printf("%s", argv[argc]);
printf("\n");
}
A) ABCDEFGH
B) IJHL
C) ABCDEFGHIJKL
D) IJKLEFGHABCD
23.對于基類型相同的兩個指針變量之間,不能進行的運算是( C )。
A) <
B) =
C) +
D) -
24.有以下函數(shù):
char * fun (char *p)
{return p;}
該函數(shù)的返回值是( B )。
A) 無確切的值 B) 形參p中存放的地址值
C) 一個臨時存儲單元的地址
D) 形參p自身的地址值
25.若有以下說明和定義
fun(int *C){…}
main()
{int (*a)()=fun,*b(),w[10],c;
┆
}
在必要的賦值之后,對fun函數(shù)的正確調(diào)用語句是( B )。
A) a=a(w);
B) (*a)(&C);
C) b=*b(w);
D) fun (B);
26.有如下說明
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
則數(shù)值為9的表達式是( B )。
A) *p+9
B) *(p+8)
C) *p+=9
D) p+8
27.有如下程序:
main()
{char ch[2][5]={“6937”,“8254”},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>‘\0’;j+=2)
s=10*s+p[i][j]-‘0’;
printf(“%d\n”,s);
}
該程序的輸出結(jié)果是( C )。
A) 69825
B 63825
C) 6385
D) 693825
28.若有以下定義和語句:
char *s1=“12345”,*s2=“1234”;
printf(“%d\n”, strlen(strcpy (s1, s2)));
則輸出結(jié)果是( A )。
A) 4
B) 5
C) 9
D) 10
29.下面程序的輸出結(jié)果是( C )。
main( )
{char *s=“121”;
int k=0, a=0, b=0;
do
{k++;
if(k%2= =0) {a=a+s[k]-‘0’; continue;}
b=b+s[k]-‘0’; a=a+s[k]-‘0’;
}
while(s[k+1]);
printf(“k=%d a=%d b=%d\n”, k, a, B);
}
A) k=3 a=2 b=3
B) k=3 a=3 b=2
C) k=2 a=3 b=2
D) k=2 a=2 b=3
30.若有以下的定義:
int a[ ]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=a;
則值為3的表達式是( A )。
A) p+=2,*(p++)
B) p+=2,*++p
C) p+=3,*p++
D) p+=2,++*p
31.以下程序的輸出結(jié)果是( A )。
#include
sub1(char a, char B) {char c; c=a; a=b; b=c;}
sub2(char *a, char B) {char c; c=*a; *a=b; b=c;}
sub3(char *a, char *B) {char c; c=*a; *a=*b; *b=c;}
main()
{char a, b;
a=‘A’; b=‘B’; sub3 (&a, &B); putchar(a); putchar(B);
a=‘A’; b=‘B’; sub2 (&a, B); putchar(a); putchar(B);
a=‘A’; b=‘B’; sub1 (a, B); putchar(a); putchar(B);
}
A) BABBAB
B) ABBBBA
C) BABABA
D) BAABBA
32.設(shè)p1和p2是指向同一個int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是( B )。
A) k=*p1+*p2;
B) p2=k;
C) p1=p2;
D) k=*p1*(*p2);
33.設(shè)有如下定義:
int arr[ ]={6, 7, 8, 9, 10}; int *ptr;
則下列程序段的輸出結(jié)果是( D )。
ptr=arr;
*(ptr+2)+=2;
printf(“%d, %d\n”, *ptr, *(ptr+2));
A) 8,10
B) 6,8
C) 7,9
D) 6,10
34.以下程序的輸出結(jié)果是( D )。
main()
{char a[ ]=“programming”, b[ ]= “language”;
char *p1, *p2;
int i;
p1=a; p2=b;
for(i=0; i<7; i++)
if(*(p1+i)= =*(p2+i)) printf(“%c”, *(p1+i));
}
A) gm
B) rg
C) or
D) ga
35.以下程序運行后,輸出結(jié)果是( C )。
main()
{char *s=“abcde”;
s+=2;
printf(“%ld\n”, s);
}
A) cde
B) 字符c的ASCII碼值
C) 字符c的地址
D) 出錯
36.以下程序運行后,如果從鍵盤上輸入ABCDE<回車>,則輸出結(jié)果為( D )。
#include
#include
func(char str[ ])
{int num=0;
while(*(str+num)!=’\0’) num++;
return(num);
}
main()
{char str[10], *p=str;
gets (p);
printf(“%d\n”, func (p));
}
A) 8
B) 7
C) 6
D) 5
37.以下程序執(zhí)行后,a的值是( C )。
main()
{int a, k=4, m=6, *p1=&k, *p2=&m;
a=p1= =&m;(等于運算符==優(yōu)先級高于賦值運算符=,即為a=(p1==&m))
printf(“%d\n”, a);
}
A) 4
B) 1
C) 0
D) 運行時出錯,a無定值
38.以下程序運行后,如果從鍵盤上輸入:
book<回車>
book<空格><回車>
則輸出結(jié)果是( B )。
#include
main()
{char a1[80], a2[80], *s1=a1, *s2=a2;
gets(s1); gets(s2);
if(!strcmp(s1, s2)) printf(“*”);
else printf(“#”);
printf(“%d\n”, strlen(strcat(s1, s2)));
}
A) *8
B) #9
C) #6
D) *9
39.若有以下調(diào)用語句,則不正確的fun函數(shù)的首部是( D )。
main()
{ …
int a[50], n;
…
fun (n, &a[9]);
…
}
A) void fun(int m,int x[ ])
B) void fun(int s,int h[41])
C) void fun(int p,int *s) D) void fun(int n,int a)
40.假定下列程序的可執(zhí)行文件名為prg . exe,則在該程序所在的子目錄下輸入命令行:
prg hello good<回車>后,程序的輸出結(jié)果是( B )。
main(int argc, char *argv[ ])
{int i;
if(argc<=0) return;
for(i=1; i
}
A) hello good
B) hg
C) hel
D) hellogood
二、填空題
1.下列程序的輸出結(jié)果是 GDABC 。
#include
main( )
{char b[30],*chp;
strcpy(&b[0],"GH");
strcpy(&b[1],"DEF");
strcpy(&b[2],"ABC");
printf("%s\n",B);
}
2.下列程序的字符串中各單詞之間有一個空格,則程序的輸出結(jié)果是 How does she 。
#include
main( )
{char strl[ ]="How do you do",*p1=strl;
strcpy (strl+strlen(strl)/2,"es she");
printf("%s\n",pl);
}
3.若有如下圖所示五個連續(xù)的int類型的存儲單元并賦值如下圖,a[0]的地址小于a[4]的地址。p和s是基類型為int的指針變量。請對以下問題進行填空。
a[0] a[1] a[2] a[3] a[4]
2233445566
(1)若p已指向存儲單元a[1]。通過指針p給s賦值,使s指向最后一個存儲單元a[4]的語句是 s=p+3 。
(2)若指針s指向存儲單元a[2],p指向存儲單元a[0],表達式s-p的值是 2 。
4.以下程序的功能是:將無符號八進制數(shù)字構(gòu)成的字符串轉(zhuǎn)換為十進制整數(shù)。例如,輸入的字符串為:556,則輸出十進制整數(shù)366。請?zhí)羁铡?/p>
#include
main()
{char *p, s[6];
int n;
p=s;
gets (p);
n=*p-'0';
while( *(++p) !='\0') n=n*8+*p-'0';
printf("%d\n", n);
}
5.設(shè)有以下程序:
main()
{int a, b, k=4, m=6, *p1=&k, *p2=&m;
a=(pl= =&m);
b=(*p1)/(*p2)+7;
printf("a=%d\n", a);
printf("b=%d\n",
B);
}
執(zhí)行該程序后,a的值為 0 ,b的值為 7 。
6.下列程序的輸出結(jié)果是 0 。
void fun(int *n)
{while((*n)--);
printf("%d", ++(*n));
}
main()
{int a=100;
fun (&a);
}
7.以下程序的輸出結(jié)果是 10 。
main()
{int arr[ ]={30, 25, 20, 15, 10, 5}, *p=arr;
p++;
printf("%d\n", *(p+3));
}
8.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是 *(p+5) 。
int w[10]={23,54,10,33,47,98,72,80,61}, *p=w;
9.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。請?zhí)羁铡?/p>
strlen (char a[ ], char b[ ])
{int num=0, n=0;
while (*(a+num)!= '\0' ) num++;
while (b[n]){*(a+num)=b[n]; num++; n++ ;}
return(num);
}
10.函數(shù)void fun(float *sn,int n)的功能是:根據(jù)以下公式計算S,計算結(jié)果通過形參指針sn傳回;n通過形參傳入,n的值大于等于0。請?zhí)羁铡?/p>
void fun(float *sn, int n)
{float s=0.0, w, f= -1.0;
int i=0;
for(i=0; i<=n; i++)
{f= -1 *f;
w=f/ (2*i+1);
s+=w;
}
*sn = s;
}
11.下面函數(shù)用來求出兩個整數(shù)之和,并通過形參傳回兩數(shù)相加之和值,請?zhí)羁铡?/p>
int add(int x,int y, int * z)
{ *z =x+y;}
12.以下fun函數(shù)的功能是:累加數(shù)組元素中的值。n為數(shù)組中元素的個數(shù)。累加的和值放入x所指的存儲單元中。請?zhí)羁铡?/p>
fun(int b[ ],int n,int *x)
{int k,r=0;
for(k=0;k
*x =r;
}
13.以下函數(shù)的功能是:把兩個整型指針變量所指的存儲單元中的內(nèi)容進行交換。請?zhí)羁铡?/p>
exchange(int *x,int *y)
{int t;
t=*y; *y= *x ; *x= t ;
}
14.以下程序的輸出是 49 。
main()
{int a[10]={19,23,44,17,37,28,49,36},*p;
p=a;
printf(“%d\n”,(p+=3)[3]);
}
15.下面程序的輸出結(jié)果是 024 。
#define MAX 3
int a[MAX];
main()
{fun1();fun2(a);printf(“\n”);}
fun1()
{int k,t=0;
for(k=0;k
}
fun2(int b[])
{int k;
for(k=0;k
}
16.下面程序的輸出結(jié)果是 ABCDCD 。
char b[]=“ABCD”;
main()
{char *chp;
for(chp=b; *chp; chp+=2) printf(“%s”, chp);
printf(“\n”);
}
17.以下程序的功能是:從鍵盤上輸入一行字符,存入一個字符數(shù)組中,然后輸出該字符串,請?zhí)羁铡?/p>
#include
main()
{char str[81],*sptr;
int i;
for(i=0;i<80;i++)
{str[i]=getchar();
if(str[i]==‘\n’) break;
}
str[i]= '\0' ;
sptr=str;
while(*sptr) putchar( *sptr++ );
}
18.fun1函數(shù)的調(diào)用語句為:fun1(&a,&b,&C);它將三個整數(shù)按由大到小的順序調(diào)整后依次放入a、b、c三個變量中,a中放最大數(shù)。請?zhí)羁铡?/p>
void fun2(int *x, int *y)
{int t;
t=*x; *x=*y; *y=t;
}
void fun1(int *pa,int *pb,int *pC)
{if(*pc>*pB) fun2( pc,pb );
if(*pa<*pC) fun2( pa,pb );
if(*pa<*pB) fun2( pa,pc );
}
19.以下函數(shù)用來在w數(shù)組中插入數(shù)x,w數(shù)組中的數(shù)已按由小到大的順序存放,n所指存儲單元中存放數(shù)組中數(shù)據(jù)的個數(shù),x插入后數(shù)組中的數(shù)仍有序。請?zhí)羁铡?/p>
void fun(char *w,char x,int *n)
{int i,p;
p=0;
w[*n]=x;
while(x>w[p]) p++ ;
for(i=*n;i>p;i--) w[i]= w[i-1] ;
w[p]=x;
++*n;
}
20.閱讀程序:
main()
{char str1[]=“how do you do”, str2[10];
char *p1=str1, *p2=str2;
scanf(“%s”, p2);
printf(“%s ”, p2);
printf(“%s\n”, p1);
}運行上面的程序,輸入字符串HOW DO YOU DO,則程序的輸出結(jié)果是 HOW how do you do 。
21.下面程序的輸出結(jié)果是 SO 。
main()
{char *p[]={“BOOL”, “OPK”, “H”, “SP”};
int i;
for(i=3;i>=0;i--,i--) printf(“%c”,*p[i]);
printf(“\n”);
}
22.下面程序的輸出結(jié)果是 17 。
funa(int a,int B)
{return a+b;}
funb(int a,int B)
{return a-b;}
sub(int(*t)(),int x,int y)
{return((*t)(x,y));}
main()
{int x,(*p)();
p=funa;
x=sub(p,9,3);
x+=sub(funb,8,3);
printf(“%d\n”, x);
}
23.下面程序的輸出結(jié)果是 XYZA 。
#include
void fun(char *a1,char *a2,int n)
{int k;
for(k=0;k
a2[k]=(a1[k]-‘A’-3+26)%26+‘A’;
a2[n]=‘\0’;
}
main()
{char s1[5]=“ABCD”, s2[5];
fun (s1, s2, 4);
puts(s2);
}
24.下面程序的輸出結(jié)果是 7 1 。
void as(int x,int y,int *cp,int *dp)
{*cp=x+y;
*dp=x-y;
}
main()
{int a=4,b=3,c,d;
as(a,b,&c,&D);
printf(“%d %d\n”,c,D);
}
25.下面程序的輸出結(jié)果是 eybdooG 。
#include
main()
{static char b[]=“Goodbye”;
char *chp=&b[7];
while(--chp>=&b[0]) putchar(*chp);
putchar(‘\n’);
}
26.若輸入:this test terminal,以下程序的輸出結(jié)果為:terminal test this。填空補充以下程序。
#include
#define MAXLINE 20
main()
{int i;
char *pstr[3],str[3][MAXLINE];
for(i=0;i<3;i++) pstr[i]=str[i];
for(i=0;i<3;i++) scanf(“%s”,pstr[i]);
sort(pstr);
for(i=0;i<3;i++) printf(“%s\n”,pstr[i]);
}
sort( char *pstr [3] )
{int i,j;
char *p;
for(i=0;i<3;i++)
{for(j=i+1;j<3;j++)
{if(strcmp(*(pstr+i),*(pstr+j))>0)
{p=*(pstr+i);
*(pstr+i)= *(patr+j) ;
*(pstr+j)=p;
}
}
}
}
27.以下程序利用指針法將兩個數(shù)按從小到大的順序輸出來。
main()
{int a,b, *p1,*p2 , p ;
printf(“input a, b:”);
scanf(“%d%d”, &a,&B);
p1=&a ;
p2=&b;
if(a
{p=p1; p1=p2; p2=p;}
printf(“a=%d b=%d\n”,a,B);
printf(“max=%d min=%d\n”, *p1,*p2 );
}
28.以下程序的輸出結(jié)果是 8 。
fun(int n,int *s)
{int f1,f2;
if(n==1||n==2) *s=1;
else
{fun(n-1,&f1);
fun(n-2,&f2);
*s=f1+f2;
}
}
main()
{int x;
fun(6,&x);
printf(“%d\n”,x);
}
29.下面的程序通過函數(shù)average計算數(shù)組中各元素的平均值,請?zhí)羁铡?/p>
float average(int *pa,int n)
{int i;
float avg=0.0;
for(i=0;i
avg=avg+ *(pa+i) ;
avg= avg/n ;
return avg;
}
main()
{int i,a[5]={2,4,6,8,10};
float mean;
mean=average(a,5);
printf(“mean=%f\n”,mean);
}
30.以下程序?qū)⒆址畇1中的所有與字符串str1相同的子串替換成字符串str2,并將替換后的新串存于字符數(shù)組s2中。
#include
void replace(char *s1,char *s2,char *str1,char *str2)
{char *t0,*t1,*t2;
while( *s1 )
{for(t0=s1,t1=str1;(*t1!=‘\0’&& *t0=*t1 );t0++,t1++);
if(*t1!=‘\0’) *s2++ = *s1++ ;
else
{for(t1=str2;*t1!=‘\0’;) *s2++ = *t1++ ;
s1=t0 ;
}
}
*s2=‘\0’;
}
main()
{static char s1[]=“abcef ababcd abab.”, s2[25];
replace (s1, s2, “abc”, “XYZ”);
printf(“%s\n”, s2);
}
31.以下語句的輸出結(jié)果是 hELLO! 。
char s[80],*sp=“HELLO!”;
sp=strcpy (s, sp); s[0]=‘h’; puts(s);
【計算機二級考試C語言模擬試題四附答案】相關(guān)文章:
計算機二級C語言模擬試題及答案12-08
C語言模擬試題及答案03-28
2015年計算機二級C語言模擬試題及答案03-12
計算機二級C++模擬試題及答案02-06
2017計算機二級C語言上機測試題附答案03-30
2017計算機二級C語言基礎(chǔ)測試題附答案03-04
計算機二級《C語言》試題及答案201611-21