一、單項選擇題
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]
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
}
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]