2022年湖北專升本C語言指針模擬題
一、單項選擇題
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 語句中的條件表達式應(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) 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 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[ ]= “l(fā)anguage”; 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 41.以下程序的輸出結(jié)果是( D )。 main( ) {char s[ ]=”ABCD”, *p; for(p=s+1; p } A) ABCD BCD CD D B) A B C D C) B C D D) BCD CD D 42.若已定義:int a[9], *p=a; 并在以后的語句中未改變 p 的值,不能表示 a[1]地址的表達式是(C)。 A) p+1 B) a+1 C) a++ D) ++p 43.執(zhí)行以下程序后,y 的值是(C)。 main( ) {int a[ ]={2, 4, 6, 8, 10}; int y=1, x, *p; p=&a[1]; for(x=0;x<3;x++) y+=*(p+x); printf(“%d\n”, y); } A) 17 B) 18 C) 19 D) 20 44.下列程序的輸出結(jié)果是( C )。 main( ) {int a[5]={2, 4, 6, 8, 10}, *p, **k; p=a; k=&p; printf(“%d ”, *(p++)); printf(“%d\n”, **k); } A) 4 4 B) 2 2 C) 2 4 D) 4 6 45.下列程序的輸出結(jié)果是( D)。 #include main( ) {char *p1,*p2,str[50]="xyz"; p1="abcd";p2="ABCD"; strcpy(str+2, strcat(p1+2,p2+1)); printf("%s",str); } A) xyabcAB B) abcABz C) ABabcz D) xycdBCD 46.設(shè)有以下定義: int a[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int (*prt)[3]=a, *p=a[0]; 則下列能夠正確表示數(shù)組元素 a[1][2]的表達式是(D)。 A) *((*prt+1)[2]) B) *(*(p+5)) C) (*prt+1)+2 D) *(*(a+1)+2) 47.閱讀程序: main( ) {int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p; p=a; printf("%x\n",p); printf("%x\n",p+9); } 該程序有兩個 printf 語句,如果第一個 printf 語句輸出的是 194,則第二個 printf 語句的輸出結(jié)果是( D )。 A) 203 B) 204 C) 1a4 D) 1a6 48.以下程序的輸出結(jié)果是(C)。 #include #include void fun(char *w, int m) {char s, *p1, *p2; p1=w; p2=w+m-1; while(p1 {s=*p1++; *p1=*p2--; *p2=s;} } main( ) {char a[ ]="ABCDEFG"; fun(a, strlen(a)); puts(a); } A) GEFDCBA B) AGADAGA C) AGAAGAG D) GAGGAGA 49.以下程序的輸出結(jié)果是(C)。 #include void fun(int *s) {static int j=0; do s[j]+=s[j+1]; while (++j<2); } main( ) {int k, a[10]={1, 2, 3, 4, 5}; for(k=1; k<3; k++) fun (a); for(k=0; k<5; k++) printf (“%d”, a[k]); } A) 34756 B) 23445 C) 35745 D) 12345 50.請讀程序: #include char fun(char *c) {if(*c<=‘Z’&&*c>=‘A’) *c-=‘A’-‘a(chǎn)’; return *c; } main( ) {char s[81], *p=s; gets (s); while(*p) {*p=fun(p); putchar(*p); p++;} putchar(‘\n’); } 若運行時從鍵盤上輸入 OPEN THE DOOR<回車>,則上面程序的輸出結(jié)果為(B)。 A) oPEN tHE dOOR B) open the door C) OPEN THE DOOR D) Open The Door 51.以下程序的輸出結(jié)果是( B)。 #include main( ) {char *s1="AbCdEf",*s2="aB"; s1++;s2++; printf("%d\n",strcmp(s1, s2)); } A) 正數(shù) B) 負數(shù) C) 零 D) 不確定的值 52.下面各語句行中,能正確進行賦字符串操作的語句行是( C)。 A) char st[4][5]={“ABCDE”}; B) char s[5]={‘A’,‘B’,‘C’,‘D’,‘E’}; C) char *s; s= “ABCDE”; D) char *s; scanf(“%s”,s); 53.以下程序的輸出結(jié)果是( C )。 fun(int *s, int n1, int n2) {int i, j, t; i=n1; j=n2; while(i {t=*(s+i); *(s+i)=*(s+j); *(s+j)=t; i++; j--; } } main( ) {int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, i, *p=a; fun (p, 0, 3); fun (p, 4, 9); fun (p, 0, 9); for(i=0; i<10; i++) printf("%d ", *(a+i)); printf(“\n”); } A) 0 9 8 7 6 5 4 3 2 1 B) 4 3 2 1 0 9 8 7 6 5 C) 5 6 7 8 9 0 1 2 3 4 D) 0 9 8 7 6 5 1 2 3 4 54.下面函數(shù)的功能是( B )。 sss (char *s, char *t) {while((*s)&&(*t)&&(*t= =*s)) s++, t++; return(*s-*t); } A) 求字符串的長度 B) 比較兩個字符串的大小 C) 將字符串 s 復(fù)制到字符串 t 中 D) 將字符串 s 連接到字符串 t 中 55.以下程序段給數(shù)組所有的元素輸入數(shù)據(jù),則以下正確答案為( A)。 main() {int a[10], i=0; while (i<10) scanf(“%d”,); … } A) a+(i++) B) &a[i+1] C) a+i D) &a[++i] 56.在下列敘述中,正確的一條是( B)。 A) 語句 int *pt 中的*pt 是指針變量名 B) 語句 int *p=a;等價于 int *p; p=&a[0]; C) 運算符*和&都是取變量地址的運算符 D) 已知指針變量 p 指向變量 a,則&a 和*p 值相同,都是變量 a 的值 57.下列語句執(zhí)行后的結(jié)果是( A)。 y=5; p=&y; x=*p++; A) x=5,y=5 B) x=5,y=6 C) x=6, y=5 D) x=6, y=6 58.在下列語句中,其含義為“p 為帶回一個指針的函數(shù),該指針指向整型數(shù)據(jù)”的定義語句是( A)。 A) int *p(); B) int **p; C) int (*p)(); D) int *p; 59.在下面關(guān)于指針的說法中,錯誤的一條是( B )。 A) 變量的指針就是變量的地址 B) 可以將一個整型量或任何其他非地址類型的數(shù)據(jù)賦給一個指針變量 C) 一個指針變量只能指向同一個類型的變量 D) 指針變量中只能存放地址 60.在下列程序中,輸出結(jié)果與其它程序不同的是(D)。 A) main() {int a[10]; int i; for(i=0;i<10;i++) scanf(“%d”,&a[i]); printf(“\n”); for(i=0;i<10;i++) printf(“%d”,a[i]); } B) main() {int a[10]; int i; for(i=0;i<10;i++) scanf(“%d”,&a[i]); printf(“\n”); for(i=0;i<10;i++) printf(“%d”,*(a+i)); } C) main() {int a[10]; int i, *p; for(i=0;i<10;i++) scanf(“%d”,&a[i]); printf(“\n”); for(p=a;p<(a+10);p++) printf(“%d”,*p); } D) main() {int a[10]; int i, *p; for(i=0;i<10;i++) scanf(“%d”,&a[i]); printf(“\n”); for(i=0;i<10;i++) printf(“%d”,*(p+i)); } 61.以下程序的輸出結(jié)果是(D)。 sub(int *s, int y) {static int t=3; y=s[t]; t--; } main() {int a[ ]={1, 2, 3, 4}, n; int x=4; for(n=0; n<4; n++) {sub(a, x); printf(“%d”, x); } printf(“\n”); } A) 1234 B) 3333 C) 4321 D) 4444 62.以下程序的輸出結(jié)果為( B )。 #idefine FORMAT “%u, %u” main() {int a[3][4]={1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23}; printf(“\n”); printf(FORMAT, **a, *a[0]); printf(FORMAT, *(a[0]+1), *&a[0][1]); printf(FORMAT, a[1][1], *(*(a+1)+1)); } A) 3,3 5,5 9,9 B) 1,1 3,3 9,9 C) 1,1 3,3 5,5 D) 5,5 7,7 9,9 63.以下程序的輸出結(jié)果為(D)。 f(char *s) {char *p=s; while(*p!=‘\0’) p++; return(p-s); } main() { printf(“%d\n”, f(“12345678”)); } A) 12345678 B) 7 C) 1 D) 8 64.以下程序的輸出結(jié)果為(C)。 move(int array[6], int n, int m) {int *p, array_end; array_end=*(array+n-1); for(p=array+n-1;p>array;p--) *p=*(p-1); *array=array_end; m--; if(m>0) move (array, n, m); } main() {static int number[6]={1, 2, 3, 4, 5, 6}; int m=4, j; move(number, 6, m); for(j=0;j<5;j++) printf(“%d,”, number[i]); printf(“%d”, number[5]); } A) 1,2,3,4,5,6 B) 6,5,4,3,2,1 C) 3,4,5,6,1,2 D) 6,1,2,3,4,5 65.在下列敘述中,正確的一條是( B )。 A) 以下程序運行結(jié)果為 Computer and c: main() {char str[4]; str=“Computer and c”; printf(“%s\n”, str); } B) 下面兩種表示方式等價 (1) int fun(int x,int y) (2) int fun(x,y) int x,y; C) 若輸入 1、2,以下程序的運行結(jié)果為 12 main() {int *p,i,a[2]; p=a; for(i=0;i<2;i++) scanf(“%d”,p++); for(i=0;i<2;i++,p++) printf(“%d”,*p); } D) 以下程序的運行結(jié)果為 3 main() {int *p,a[5]={1,3,4,5,6}; p=a; printf(“%d”,*p++); } 66.以下程序的輸出結(jié)果是( A )。 point(char *pt); main() {char b[4]={‘a(chǎn)’,‘c’,‘s’,‘f’}, *pt=b; point(pt); printf(“%c\n”, *pt); } point(char *p) {p+=3; } A) a B) c C) s D) f 67.以下程序的輸出結(jié)果為(A)。 void move(int *pointer) {int i, j, t; for(i=0; i<3; i++) for(j=i; j<3; j++) {t=*(pointer+3*i+j); *(pointer+3*i+j)=*(pointer+3*j+i); *(pointer+3*j+i)=t; }} main() {int a[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}, *p, i; p=&a[0][0]; move(p); for(i=0; i<3; i++) printf(“%d%d%d”, a[i][0], a[i][1], a[i][2]); } A) 147258369 B) 123456789 C) 987654321 D) 127485639 68.以下程序的輸出結(jié)果是( A )。 sub(int x, int y, int *z) {*z=y-x+2;} main() {int a, b, c; sub(16, 7, &a); sub(9, a, &b); sub(a, b, &c); printf(“%d, %d, %d\n”, a, b, c); } A) –7,-14,-5 B) –7,-16,-9 C) –7,-12,-9 D) –9,-14,-5 69.變量 p 為指針變量,若 p=&a,下列說法不正確的是( D )。 A) &*p==&a B) *&a==a C) (*p)++==a++ D) *(p++)==a++ 70.若輸入 10,以下程序的輸出結(jié)果是(B )。 #define MAX 50 main() {int i, k, m, n, num[MAX], *p; scanf(“%d”, &n); p=num; for(i=0; i *(p+i)=i+1; i=0; k=0; m=0; while(m {if(*(p+i)!=0) k++; if(k= =3) {*(p+i)=0; k=0; m++;} i++; if(i= =n) i=0; } while(*p= =0) p++; printf(“%d\n”, *p); } A) 10 B) 4 C) 50 D) 60 71.以下程序的輸出結(jié)果是( B )。 main() {char *alpha[5]={“a”, “bc”, “def”, “1”, “23”}, **p; int i; p=alpha; for(i=0; i<3; i++, p++) printf(“%s”, *p); printf(“\t”); p=p-3; for(i=0; i<3; i++, p++) printf(“%c\t”,**p); } A) abcdef d e f B) abcdef a b d C) abcdef 1 23 D) defabc 1 23 二、填空題 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 的指針變量。請對以下問題進行填空。 (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> 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> 10.函數(shù) void fun(float *sn,int n)的功能是:根據(jù)以下公式計算 S,計算結(jié)果通過形參指針 sn 傳回;n 通過形參傳入,n 的值大于等于 0。請?zhí)羁铡?/p> 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é)果是 HOWhow 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ū)⒆址?s1 中的所有與字符串 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); 以上就是關(guān)于2022年湖北專升本C語言指針模擬題的全部內(nèi)容了,如果你還有專升本相關(guān)的疑惑(如專升本報名、考試動態(tài)、院校招生簡章、統(tǒng)考動態(tài)、湖南專升本院校、歷年真題、考試大綱、專升本等相關(guān)信息),可以在文章下方留下你的聯(lián)系方式,老師會第一時間聯(lián)系到你,為你答疑解惑哦! 部分內(nèi)容來源于網(wǎng)絡(luò)轉(zhuǎn)載、學(xué)生投稿,如有侵權(quán)或?qū)Ρ菊居腥魏我庖姟⒔ㄗh或者投訴,請聯(lián)系郵箱(1296178999@qq.com)反饋。
未經(jīng)本站授權(quán),不得轉(zhuǎn)載、摘編、復(fù)制或者建立鏡像, 如有違反,本站將追究法律責(zé)任!