C語言考試
1、程序char c[5]={‘a’,’b’,’’,’c’,’’}; printf(“%s”,c);的運行結果是:
答案:(D)
A、'a''b'
B、ab
C、ab c
D、ab
2、以下程序的輸出結果是:#include main(){ int a=2,c=5; printf("a=%%d,b=%%d ",a,c);}
答案:(D)
A、a=%2,b=%5
B、a=2,b=5
C、a=%%d,b=%%d
D、a=%d,b=%d
3、有以下程序:main(){ int y=10; while(y--) ; printf(“y=%d ”,y);}程序執行後的輸出結果是:
答案:(B)
A、y=0
B、y=-1
C、y=1
D、while構成無限循環
4、下列程序的輸出結果是:main( ) { int a=7,b=5; printf("%d ",b=b/a);}
答案:(C)
A、5
B、1
C、0
D、不確定值
5、設有說明:char w;int x;float y;double z;則表達式w*x+z-y值的數據類型爲:
答案:(D)
A、float
B、char
C、int
D、double
6、x、y、z被定義爲int型變量,若從鍵盤給x、y、z輸入數據,正確的輸入語句是:
答案:(B)
A、INPUT x、y、z;
B、scanf("%d%d%d",&x,&y,&z);
C、scanf("%d%d%d",x,y,z);
D、read("%d%d%d",&x,&y,&z);
7、設變量x和y均已經正確定義並賦值。以下if語句中,在編譯時將產生錯誤信息的是:
答案:(C)
A、if(x++);
B、if(x>y &&y!=0)x++;
C、if(x>0) x-- else y++;
D、if(y<0){;} else x++;
8、以下程序的輸出結果是:main(){ int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf("%d,%d ",a,b);}
答案:(B)
A、6,1
B、2,1
C、6,0
D、2,0
9、判斷字符串a是否大於b,應當使用:
答案:(D)
A、if (a>b)
B、if (strcmp(a,b))
C、if (strcmp(b,a)>0)
D、if (strcmp(a,b)>0)
10、下列說法中正確的是:
答案:(D)
A、一個數組能夠存儲許多不同類型的值
B、數組的下標可以是float數據類型
C、如果初始化值列表中的個數少於數組的元素的個數,C編譯器會自動補齊
D、初始化值列表中的值的個數多於數組元素的個數是錯誤的
11、表示關係12<=x<=y的C語言表達式爲:
答案:(B)
A、(12<=x)&(x<=y)
B、(12<=x)&&(x<=y)
C、(12<=x)|(x<=y)
D、(12<=x)||(x<=y)
12、按照c語言規定的用戶標識符命名規則,不能出現在標識符中的是:
答案:(B)
A、大寫字母
B、連接符
C、數字字符
D、下劃線
13、以下程序的輸出結果爲:main( ){ int i=010,j=10; printf("%d,%d ",i++,j--);}
答案:(C)
A、11,9
B、9,10
C、8,10
D、9,9
14、表達式3.6-5/2+1.2+5%2的值是:
答案:(D)
A、4.3
B、4.8
C、3.3
D、3.8
15、當調用函數時,實參是一個數組名,則向函數傳送的是:
答案:(B)
A、數組的長度
B、數組的首地址
C、數組每一個元素的地址
D、數組每個元素的值
16、以下說法中正確的是:
答案:(C)
A、C語言程序中是從第一定義的函數開始執行
B、在C語言程序中,要調用的函數必須在main()函數中定義
C、C語言程序總是從main()函數開始執行
D、C語言程序中的main()函數必須放在程序的開始部分
17、以下定義語句中正確的是:
答案:(C)
A、char a='A' b='B';
B、float a=b=10.0;
C、int a=10,*b=&a;
D、float *a,b=&a;
18、爲避免嵌套的條件分支語句if…else的二義性,C語言規定,C程序中的else總是與____組成配對關係。
答案:(A)
A、其上面距它最近的,並且沒有其他else與其配對的if相配對
B、在同一行上的if
C、縮排位置相同的if
D、在其之前未配對的if
19、設a、b、c、d、m、n均爲int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式(m=a>b)&&(n=c>d)運算後,n的值爲:
答案:(C)
A、0
B、1
C、2
D、3
20、若i爲整型變量,則以下循環執行次數是:for(i=2;i==0;) printf("%d",i--);
答案:(B)
A、無限次
B、0次
C、1次
D、2次
21、設有說明 int (*ptr)();其中標識符ptr是:
答案:(B)
A、是一個指向整形變量的指針
B、是一個指針,它指向一個函數值是int的函數
C、是一個函數名
D、定義不合法
22、設 int x=1, y=1; 表達式(!x||y--)的值是:
答案:(B)
A、0
B、1
C、2
D、-1
23、請讀程序: main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; } printf("a=%d,b=%d ",a,b);}
答案:(A)
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2,b=0
24、有以下程序main(){ int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++){ printf("%d ",m[k][i]); }}執行後輸出結果是:
答案:(C)
A、4 5 6
B、2 5 8
C、3 6 9
D、7 8 9
25、若執行下面程序時:int x;scanf("%d",&x);if(x++ > 5){ printf( "%d ",x)};else{ printf("%d ",++x)};從鍵盤上輸入5,則輸出是:
答案:(A)
A、7
B、6
C、5
D、4
26、已知職工記錄描述如下,在C中,系統爲變量w分配( )字節的空間。struct worker{ int no; char name[20]; char sex;} w;
答案:(A)
A、28
B、20
C、25
D、6
27、以下程序的輸出結果是:char s[] = "abcde";s += 2;printf("%d ",s[0]);
答案:(D)
A、輸出字符a的ASCII碼
B、輸出字符c的ASCII碼
C、輸出字符c
D、程序出錯
28、設有以下定義:#define N 3 #define Y(n) ((N+1)*n)則執行語句:z=2 * (N+Y(5+1));後,z的值爲:
答案:(C)
A、出錯
B、42
C、48
D、54
29、以下代碼的輸出結果爲:int x = 10,y = 10;for(int i = 0; x > 8; y = ++i){ printf(“%d %d”, x-- , y); }
答案:(D)
A、10 1 9 2
B、9 8 7 6
C、9 10 9 10
D、10 10 9 1
30、設變量定義爲int x , *p = &x;則&(*p)相當於:
答案:(C)
A、*(&x)
B、*p
C、p
D、x
31、在C語言程序中,以下說法正確的是:
答案:(B)
A、函數的定義可以嵌套,但函數的調用不可以嵌套
B、函數的定義不可以嵌套,但函數的調用可以嵌套
C、函數的定義和函數的調用都不可以嵌套
D、函數的定義和函數的調用都可以嵌套
32、如有定義int * p = malloc(15);p當int型數組使用,最多可以使用多少元素:
答案:(A)
A、3
B、4
C、15
D、16
33、有以下程序main(){ int k=4,n=0; for(;n < k;) { n++; if(n%3!=0) continue; k--; } printf("%d,%d ",k,n);}程序運行後的輸出結果是:
答案:(C)
A、1,1
B、2,2
C、3,3
D、4,4
34、以下錯誤的描述是:函數調用可以:
答案:(D)
A、出現在執行語句中
B、出現在一個表達式中
C、做爲一個函數的實參
D、做爲一個函數的形參
35、動態分配內存,定義一個int型的包含12個元素的數組,如下定義正確的是:
答案:(A)
A、int *p = malloc(sizeof(int)*12);
B、int a[12] = malloc(12,sizeof,int);
C、int a[12] = calloc(12,sizeof(int));
D、int *p = calloc(sizeof(int)*12)
36、有以下程序main(){ int i; for(i=1;i<40;i++) { if(i++%5==0) if(++i%8==0) printf("%d ",i); } printf(" ");}執行後的輸出結果是:
答案:(C)
A、5
B、24
C、32
D、40
37、下面選項中正確的賦值語句是(設 char a[5],*p=a;):
答案:(A)
A、p="abcd";
B、a="abcd";
C、*p="abcd";
D、*a="abcd";
38、請讀程序:#include 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 ",x);}上面程序的輸出結果是:
答案:(B)
A、720
B、120
C、24
D、6
39、有以下程序void f(int x,int y){ int t; if(x < y) {t=x; x=y; y=t;}}main(){ int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf("%d,%d,%d ",a,b,c);}執行後輸出結果是:
答案:(D)
A、3,4,5
B、5,3,4
C、5,4,3
D、4,3,5
40、設有如下定義:struct jan{int a;float b;}c2,*p;若有p=&c2;則對c2中的成員a的正確引用是:
答案:(B)
A、(*p).c2.a
B、(*p).a
C、p->c2.a
D、p.c2.a
二、判斷題(共10題,每題1分)
1、通過return語句,函數可以帶回一個或一個以上的返回值。
答案:(F)
正確
錯誤
2、在循環體內使用break語句和continue語句的作用相同。
答案:(F)
正確
錯誤
3、條件運算符?和:是一對運算符,不能分開單獨使用。
答案:(T)
正確
錯誤
4、枚舉類型中的元素都具有一個整型值。
答案:(T)
正確
錯誤
5、函數strcmp從頭至尾順序地將其對應字符比較,遇到兩個字符不等時,兩個字符相減得到一個int型值,兩個字符串完全相同時,則返回0。
答案:(T)
正確
錯誤
6、char *p="girl";的含義是定義字符型指針變量p,p的值是字符串"girl"。
答案:(F)
正確
錯誤
7、continue 不是結束本次循環,而是終止整個循環的執行。
答案:(F)
正確
錯誤
8、在對二維數組初始化時,不可以省略行數,但能省略列數
答案:(F)
正確
錯誤
9、條件表達式不能取代一般if的語句。
答案:(F)
正確
錯誤
10、數組名能與其它變量名相同。數組名後是用方括號括起來的常量表達式,不能用圓括號。
答案:(T)
正確
錯誤
答案:(D)
A、'a''b'
B、ab
C、ab c
D、ab
2、以下程序的輸出結果是:#include main(){ int a=2,c=5; printf("a=%%d,b=%%d ",a,c);}
答案:(D)
A、a=%2,b=%5
B、a=2,b=5
C、a=%%d,b=%%d
D、a=%d,b=%d
3、有以下程序:main(){ int y=10; while(y--) ; printf(“y=%d ”,y);}程序執行後的輸出結果是:
答案:(B)
A、y=0
B、y=-1
C、y=1
D、while構成無限循環
4、下列程序的輸出結果是:main( ) { int a=7,b=5; printf("%d ",b=b/a);}
答案:(C)
A、5
B、1
C、0
D、不確定值
5、設有說明:char w;int x;float y;double z;則表達式w*x+z-y值的數據類型爲:
答案:(D)
A、float
B、char
C、int
D、double
6、x、y、z被定義爲int型變量,若從鍵盤給x、y、z輸入數據,正確的輸入語句是:
答案:(B)
A、INPUT x、y、z;
B、scanf("%d%d%d",&x,&y,&z);
C、scanf("%d%d%d",x,y,z);
D、read("%d%d%d",&x,&y,&z);
7、設變量x和y均已經正確定義並賦值。以下if語句中,在編譯時將產生錯誤信息的是:
答案:(C)
A、if(x++);
B、if(x>y &&y!=0)x++;
C、if(x>0) x-- else y++;
D、if(y<0){;} else x++;
8、以下程序的輸出結果是:main(){ int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf("%d,%d ",a,b);}
答案:(B)
A、6,1
B、2,1
C、6,0
D、2,0
9、判斷字符串a是否大於b,應當使用:
答案:(D)
A、if (a>b)
B、if (strcmp(a,b))
C、if (strcmp(b,a)>0)
D、if (strcmp(a,b)>0)
10、下列說法中正確的是:
答案:(D)
A、一個數組能夠存儲許多不同類型的值
B、數組的下標可以是float數據類型
C、如果初始化值列表中的個數少於數組的元素的個數,C編譯器會自動補齊
D、初始化值列表中的值的個數多於數組元素的個數是錯誤的
11、表示關係12<=x<=y的C語言表達式爲:
答案:(B)
A、(12<=x)&(x<=y)
B、(12<=x)&&(x<=y)
C、(12<=x)|(x<=y)
D、(12<=x)||(x<=y)
12、按照c語言規定的用戶標識符命名規則,不能出現在標識符中的是:
答案:(B)
A、大寫字母
B、連接符
C、數字字符
D、下劃線
13、以下程序的輸出結果爲:main( ){ int i=010,j=10; printf("%d,%d ",i++,j--);}
答案:(C)
A、11,9
B、9,10
C、8,10
D、9,9
14、表達式3.6-5/2+1.2+5%2的值是:
答案:(D)
A、4.3
B、4.8
C、3.3
D、3.8
15、當調用函數時,實參是一個數組名,則向函數傳送的是:
答案:(B)
A、數組的長度
B、數組的首地址
C、數組每一個元素的地址
D、數組每個元素的值
16、以下說法中正確的是:
答案:(C)
A、C語言程序中是從第一定義的函數開始執行
B、在C語言程序中,要調用的函數必須在main()函數中定義
C、C語言程序總是從main()函數開始執行
D、C語言程序中的main()函數必須放在程序的開始部分
17、以下定義語句中正確的是:
答案:(C)
A、char a='A' b='B';
B、float a=b=10.0;
C、int a=10,*b=&a;
D、float *a,b=&a;
18、爲避免嵌套的條件分支語句if…else的二義性,C語言規定,C程序中的else總是與____組成配對關係。
答案:(A)
A、其上面距它最近的,並且沒有其他else與其配對的if相配對
B、在同一行上的if
C、縮排位置相同的if
D、在其之前未配對的if
19、設a、b、c、d、m、n均爲int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式(m=a>b)&&(n=c>d)運算後,n的值爲:
答案:(C)
A、0
B、1
C、2
D、3
20、若i爲整型變量,則以下循環執行次數是:for(i=2;i==0;) printf("%d",i--);
答案:(B)
A、無限次
B、0次
C、1次
D、2次
21、設有說明 int (*ptr)();其中標識符ptr是:
答案:(B)
A、是一個指向整形變量的指針
B、是一個指針,它指向一個函數值是int的函數
C、是一個函數名
D、定義不合法
22、設 int x=1, y=1; 表達式(!x||y--)的值是:
答案:(B)
A、0
B、1
C、2
D、-1
23、請讀程序: main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; } printf("a=%d,b=%d ",a,b);}
答案:(A)
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2,b=0
24、有以下程序main(){ int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++){ printf("%d ",m[k][i]); }}執行後輸出結果是:
答案:(C)
A、4 5 6
B、2 5 8
C、3 6 9
D、7 8 9
25、若執行下面程序時:int x;scanf("%d",&x);if(x++ > 5){ printf( "%d ",x)};else{ printf("%d ",++x)};從鍵盤上輸入5,則輸出是:
答案:(A)
A、7
B、6
C、5
D、4
26、已知職工記錄描述如下,在C中,系統爲變量w分配( )字節的空間。struct worker{ int no; char name[20]; char sex;} w;
答案:(A)
A、28
B、20
C、25
D、6
27、以下程序的輸出結果是:char s[] = "abcde";s += 2;printf("%d ",s[0]);
答案:(D)
A、輸出字符a的ASCII碼
B、輸出字符c的ASCII碼
C、輸出字符c
D、程序出錯
28、設有以下定義:#define N 3 #define Y(n) ((N+1)*n)則執行語句:z=2 * (N+Y(5+1));後,z的值爲:
答案:(C)
A、出錯
B、42
C、48
D、54
29、以下代碼的輸出結果爲:int x = 10,y = 10;for(int i = 0; x > 8; y = ++i){ printf(“%d %d”, x-- , y); }
答案:(D)
A、10 1 9 2
B、9 8 7 6
C、9 10 9 10
D、10 10 9 1
30、設變量定義爲int x , *p = &x;則&(*p)相當於:
答案:(C)
A、*(&x)
B、*p
C、p
D、x
31、在C語言程序中,以下說法正確的是:
答案:(B)
A、函數的定義可以嵌套,但函數的調用不可以嵌套
B、函數的定義不可以嵌套,但函數的調用可以嵌套
C、函數的定義和函數的調用都不可以嵌套
D、函數的定義和函數的調用都可以嵌套
32、如有定義int * p = malloc(15);p當int型數組使用,最多可以使用多少元素:
答案:(A)
A、3
B、4
C、15
D、16
33、有以下程序main(){ int k=4,n=0; for(;n < k;) { n++; if(n%3!=0) continue; k--; } printf("%d,%d ",k,n);}程序運行後的輸出結果是:
答案:(C)
A、1,1
B、2,2
C、3,3
D、4,4
34、以下錯誤的描述是:函數調用可以:
答案:(D)
A、出現在執行語句中
B、出現在一個表達式中
C、做爲一個函數的實參
D、做爲一個函數的形參
35、動態分配內存,定義一個int型的包含12個元素的數組,如下定義正確的是:
答案:(A)
A、int *p = malloc(sizeof(int)*12);
B、int a[12] = malloc(12,sizeof,int);
C、int a[12] = calloc(12,sizeof(int));
D、int *p = calloc(sizeof(int)*12)
36、有以下程序main(){ int i; for(i=1;i<40;i++) { if(i++%5==0) if(++i%8==0) printf("%d ",i); } printf(" ");}執行後的輸出結果是:
答案:(C)
A、5
B、24
C、32
D、40
37、下面選項中正確的賦值語句是(設 char a[5],*p=a;):
答案:(A)
A、p="abcd";
B、a="abcd";
C、*p="abcd";
D、*a="abcd";
38、請讀程序:#include 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 ",x);}上面程序的輸出結果是:
答案:(B)
A、720
B、120
C、24
D、6
39、有以下程序void f(int x,int y){ int t; if(x < y) {t=x; x=y; y=t;}}main(){ int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf("%d,%d,%d ",a,b,c);}執行後輸出結果是:
答案:(D)
A、3,4,5
B、5,3,4
C、5,4,3
D、4,3,5
40、設有如下定義:struct jan{int a;float b;}c2,*p;若有p=&c2;則對c2中的成員a的正確引用是:
答案:(B)
A、(*p).c2.a
B、(*p).a
C、p->c2.a
D、p.c2.a
二、判斷題(共10題,每題1分)
1、通過return語句,函數可以帶回一個或一個以上的返回值。
答案:(F)
正確
錯誤
2、在循環體內使用break語句和continue語句的作用相同。
答案:(F)
正確
錯誤
3、條件運算符?和:是一對運算符,不能分開單獨使用。
答案:(T)
正確
錯誤
4、枚舉類型中的元素都具有一個整型值。
答案:(T)
正確
錯誤
5、函數strcmp從頭至尾順序地將其對應字符比較,遇到兩個字符不等時,兩個字符相減得到一個int型值,兩個字符串完全相同時,則返回0。
答案:(T)
正確
錯誤
6、char *p="girl";的含義是定義字符型指針變量p,p的值是字符串"girl"。
答案:(F)
正確
錯誤
7、continue 不是結束本次循環,而是終止整個循環的執行。
答案:(F)
正確
錯誤
8、在對二維數組初始化時,不可以省略行數,但能省略列數
答案:(F)
正確
錯誤
9、條件表達式不能取代一般if的語句。
答案:(F)
正確
錯誤
10、數組名能與其它變量名相同。數組名後是用方括號括起來的常量表達式,不能用圓括號。
答案:(T)
正確
錯誤
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.