一、單項選擇題
1.以下程序的輸出結(jié)果是( B)。
main( )
{char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;
int i;
i=8;
p=a+i;
printf("%s\n",p-3);
}
A) 6
B) 6789
C) ‘6’
D) 789
2.以下程序的運行結(jié)果是( A )。
#include "stdio.h"
main( )
{int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p=a+5,*q=NULL;
*q=*(p+5);
printf("%d %d\n", *p, *q);
}
A) 運行后報錯
B) 6 6
C) 6 11
D) 5 5
3.若有以下的說明和語句,則在執(zhí)行for語句后,*(*(pt+l)+2)表示的數(shù)組元素是( C )。
int t[3][3],*pt[3],k;
for(k=0; k<3; k++) pt[k]=&t[k][0];
A) t[2][0]
B) t[2][2]
C) t[l][2]
D) t[2][l]
4.下面程序把數(shù)組元素中的最大值放入a[0]中,則在if語句中的條件表達(dá)式應(yīng)該是( B )。
main( )
{int a[10]={6,7,2,9,1,10,5,8,4,3}, *p=a, i;
for(i=0; i<10; i++, p++)
if(________) *a=*p;
printf("%d",*a);
}
A) p>a
B) *p>a[0]
C) *p>*a[0]
D) *p[0]> *a[0]
5.以下程序的輸出結(jié)果是( A )。
#include
#include
main( )
{char *a="abcdefghi";
int k;
fun (a); puts(a);
}
fun(char *s)
{int x, y;
char c;
for(x=0, y=strlen(s)-1; x {c=s[y]; s[y]=s[x]; s[x]=c;} } A) ihgfedcba B) abcdefghi C) abcdedeba D) ihgfefghi 6.以下程序的輸出結(jié)果是( B )。 main( ) {char *s="12134211";int v[4]={0,0,0,0},k,i; for(k=0;s[k];k++) {switch(s[k]) {case '1':i=0; case '2':i=1; case '3':i=2; case '4':i=3; } v[i]++; } for(k=0;k<4;k++) printf("%d ",v[k]); } A) 4 2 1 1 B) 0 0 0 8 C) 4 6 7 8 D) 8 8 8 8 7.以下程序的輸出結(jié)果是( D )。 #include main( ) {char *p1,*p2,str[50]="ABCDEFG"; p1="abcd";p2="efgh"; strcpy(str+1,p2+1);strcpy(str+3,p1+3); printf("%s",str);str+1表示數(shù)組第二個數(shù)據(jù)B,p2+1指向f,即把fgh復(fù)制到BCD的位置,同時復(fù)制‘\0’ } A) AfghdEFG B) Abfhd C) Afghd D) Afgd 8.若有以下定義和語句: double r=99,*p=&r; *p=r; 則以下正確的敘述是( D )。 A) 以上兩處的*p含義相同,都說明給指針變量p賦值 B) 在"double r=99,*p=&r; "中,把r的地址賦給了p所指的存儲單元 C) 語句"*p=r; "把變量r的值賦給指針變量p D) 語句"*p=r; "取變量r的值放回r中 9.若已定義: int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p=a, i; 其中0≤ i ≤9, 則對a數(shù)組元素不正確的引用是( D )。 A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))=*a[i] 10.下列程序執(zhí)行后的輸出結(jié)果是( A )。 void func(int *a, int b[ ]) {b[0]=*a+6;} main() {int a, b[5]; a=0; b[0]=3; func(&a, B); printf("%d\n", b[0]); } A) 6 B) 3 C) 8 D) 9 11.下列程序執(zhí)行后的輸出結(jié)果是( B )。 main() {int a[3][3], *p, i; p=&a[0][0]; for(i=0; i<9; i++) p[i]=i+1; printf("%d\n", a[1][2]); } A) 3 B) 6 C) 9 D) 隨機數(shù) 12.請選出正確的程序段( C )。 A) int *p; B) int *s, k; C) int *s, k; D) int *s, k; scanf("%d", p); *s=100; char *p, c; char *p, c; s=&k; s=&k; p=&c; p=&c; *p='a'; s=p; *s=1; 13.已知指針p的指向如下圖所示,則執(zhí)行語句 *- -p; 后*p的值是( B )。 a[0] a[1] a[2] a[3] a[4] 1020304050 A) 30 B) 20 C) 19 D) 29 14.設(shè)已有定義: char *st="how are you";下列程序段中正確的是( A )。 A) char a[11], *p; strcpy(p=a+1, &st[4]); B) char a[11]; strcpy(++a, st); C) char a[11]; strcpy(a, st); D) char a[ ], *p; strcpy(p=&a[1], st+2); 15.以下程序的輸出結(jié)果是( C )。 main( ) {int i, x[3][3]={9, 8, 7, 6, 5, 4, 3, 2, 1}, *p=&x[1][1]; for(i=0; i<4; i+=2) printf("%d ", p[i]); } A) 5 2 B) 5 1 C) 5 3 D) 9 7 16.若有說明:int i, j=2,*p=&i;,則能完成i=j賦值功能的語句是( B )。 A) i=*p; B) *p=*&j; C) i=&j; D) i=**p; 17.以下定義語句中,錯誤的是(D )。 A) int a[ ]={1,2}; B) char *a[3]; C) char s[10]="test"; D) int n=5,a[n]; 18.下列程序段的輸出結(jié)果是(A )。 void fun(int *x, int *y) {printf("%d %d", *x, *y); *x=3; *y=4;} main() {int x=1,y=2; fun(&y, &x); printf("%d %d", x, y); } A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |