違法信息舉報(bào) 客服熱線:400-118-7898
廣告
?
專接本欄目測試廣告

?2022年湖北專升本C語言指針模擬題

普通專升本 責(zé)任編輯:管理員 2022-02-14

摘要:本文是2022年湖北專升本C語言指針模擬題,共有多道選擇題和多道填空題供大家參考。具體詳細(xì)內(nèi)容見下文。

一、單項(xiàng)選擇題

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.以下程序的運(yùn)行結(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) 運(yùn)行后報(bào)錯(cuò)

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<y; p="" y--)

{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ù)組第二個(gè)數(shù)據(jù) B,p2+1 指向 f,即把 fgh 復(fù)制到 BCD 的位置,同時(shí)復(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) 隨機(jī)數(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)。

image.png

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.以下定義語句中,錯(cuò)誤的是( 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.下列程序的運(yùn)行結(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) 編譯出錯(cuò)

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.對于基類型相同的兩個(gè)指針變量之間,不能進(jìn)行的運(yùn)算是(C)。

A) <

B) =

C) +

D) -

24.有以下函數(shù):

char * fun (char *p)

{return p;}

該函數(shù)的返回值是( B)。

A) 無確切的值

B) 形參 p 中存放的地址值

C) 一個(gè)臨時(shí)存儲單元的地址

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 的表達(dá)式是(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 的表達(dá)式是( 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是指向同一個(gè)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.以下程序運(yùn)行后,輸出結(jié)果是( C )。

main()

{char *s=“abcde”;

s+=2;

printf(“%ld\n”, s);

}

A) cde B) 字符 c 的 ASCII 碼值 C) 字符 c 的地址 D) 出錯(cuò)

36.以下程序運(yùn)行后,如果從鍵盤上輸入 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ùn)算符==優(yōu)先級高于賦值運(yùn)算符=,即為 a=(p1==&m))

printf(“%d\n”, a);

}

A) 4

B) 1

C) 0 D) 運(yùn)行時(shí)出錯(cuò),a 無定值

38.以下程序運(yùn)行后,如果從鍵盤上輸入:

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<argc; p="" *argv[i]);

}

A) hello good

B) hg

C) hel

D) hellogood

41.以下程序的輸出結(jié)果是( D )。

main( )

{char s[ ]=”ABCD”, *p;

for(p=s+1; p<s+4; p="" 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]地址的表達(dá)式是(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á)式是(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);

}

該程序有兩個(gè) printf 語句,如果第一個(gè) printf 語句輸出的是 194,則第二個(gè) 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<p2)< p="">

{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’);

}

若運(yùn)行時(shí)從鍵盤上輸入 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) 負(fù)數(shù)

C) 零

D) 不確定的值

52.下面各語句行中,能正確進(jìn)行賦字符串操作的語句行是( 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<j)< p="">

{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) 比較兩個(gè)字符串的大小

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;等價(jià)于 int *p; p=&a[0];

C) 運(yùn)算符*和&都是取變量地址的運(yùn)算符

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 為帶回一個(gè)指針的函數(shù),該指針指向整型數(shù)據(jù)”的定義語句是( A)。

A) int *p();

B) int **p; C) int (*p)();

D) int *p;

59.在下面關(guān)于指針的說法中,錯(cuò)誤的一條是( B )。

A) 變量的指針就是變量的地址

B) 可以將一個(gè)整型量或任何其他非地址類型的數(shù)據(jù)賦給一個(gè)指針變量

C) 一個(gè)指針變量只能指向同一個(gè)類型的變量

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) 以下程序運(yùn)行結(jié)果為 Computer and c:

main()

{char str[4];

str=“Computer and c”;

printf(“%s\n”, str);

}

B) 下面兩種表示方式等價(jià)

(1) int fun(int x,int y)

(2) int fun(x,y)

int x,y;

C) 若輸入 1、2,以下程序的運(yùn)行結(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) 以下程序的運(yùn)行結(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<n; p="" i++)

*(p+i)=i+1;

i=0; k=0; m=0;

while(m<n-1)

{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.下列程序的字符串中各單詞之間有一個(gè)空格,則程序的輸出結(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.若有如下圖所示五個(gè)連續(xù)的 int 類型的存儲單元并賦值如下圖,a[0]的地址小于 a[4]的地址。p 和 s是基類型為 int 的指針變量。請對以下問題進(jìn)行填空。

image.png

(1)若 p 已指向存儲單元 a[1]。通過指針 p 給 s 賦值,使 s 指向最后一個(gè)存儲單元 a[4]的語句是s=p+3。

(2)若指針 s 指向存儲單元 a[2],p 指向存儲單元 a[0],表達(dá)式 s-p 的值是 2。

4.以下程序的功能是:將無符號八進(jìn)制數(shù)字構(gòu)成的字符串轉(zhuǎn)換為十進(jìn)制整數(shù)。例如,輸入的字符串為:556,則輸出十進(jìn)制整數(shù) 366。請?zhí)羁铡?/p>

image.png

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ù)組元素的表達(dá)式是*(p+5)

int w[10]={23,54,10,33,47,98,72,80,61}, *p=w;

9.以下函數(shù)把 b 字符串連接到 a 字符串的后面,并返回 a 中新字符串的長度。請?zhí)羁铡?/p>

image.png

10.函數(shù) void fun(float *sn,int n)的功能是:根據(jù)以下公式計(jì)算 S,計(jì)算結(jié)果通過形參指針 sn 傳回;n 通過形參傳入,n 的值大于等于 0。請?zhí)羁铡?/p>

image.png

11.下面函數(shù)用來求出兩個(gè)整數(shù)之和,并通過形參傳回兩數(shù)相加之和值,請?zhí)羁铡?/p>

int add(int x,int y, int*z)

{*z=x+y;}

12.以下 fun 函數(shù)的功能是:累加數(shù)組元素中的值。n 為數(shù)組中元素的個(gè)數(shù)。累加的和值放入 x 所指的存儲單元中。請?zhí)羁铡?/p>

fun(int b[ ],int n,int *x)

{int k,r=0;

for(k=0;k<n;k++) r= r+b[k];

*x=r;

}

13.以下函數(shù)的功能是:把兩個(gè)整型指針變量所指的存儲單元中的內(nèi)容進(jìn)行交換。請?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<max;k++) p="" printf(“%d”,*(b+k));

}

16.下面程序的輸出結(jié)果是 ABCDCD。

char b[]=“ABCD”;

main()

{char

*chp;

for(chp=b; *chp; chp+=2) printf(“%s”, chp);

printf(“\n”);

}

17.以下程序的功能是:從鍵盤上輸入一行字符,存入一個(gè)字符數(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);它將三個(gè)整數(shù)按由大到小的順序調(diào)整后依次放入 a、b、c三個(gè)變量中,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ù)的個(gè)數(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);

}

運(yùn)行上面的程序,輸入字符串 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<n;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。填空補(bǔ)充以下程序。

#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.以下程序利用指針法將兩個(gè)數(shù)按從小到大的順序輸出來。

main()

{int a,b, *p1,*p2 , p;

printf(“input a, b:”);

scanf(“%d%d”, &a,&b);

p1=&a;

p2=&b;

if(a<b)

{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 計(jì)算數(shù)組中各元素的平均值,請?zhí)羁铡?/p>

float average(int *pa,int n)

{int i;

float avg=0.0;

for(i=0;i<n;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);

更多資料

廣東省專升本《大學(xué)語文》真題

云南專升本《高等數(shù)學(xué)》真題(2019年)

統(tǒng)招專升本《高等數(shù)學(xué)》真題回憶版(2021年)

更多課程

《市場營銷學(xué)》公開課—業(yè)務(wù)成長戰(zhàn)略

1節(jié)課

《基礎(chǔ)會計(jì)》公開課—會計(jì)要素-反映財(cái)務(wù)狀況的會計(jì)要素

1節(jié)課

《管理學(xué)》公開課——馬斯洛需要層次理論

1節(jié)課

溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權(quán)威部門公布的內(nèi)容為準(zhǔn)!

專升本備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

資料下載
  • 統(tǒng)招專升本《大學(xué)語文》真題資料

    下載
  • 統(tǒng)招專升本《大學(xué)語文》真題回憶版(2021年)

    下載
  • 統(tǒng)招專升本《大學(xué)語文》備考資料一

    下載
  • 全國版專接本《大學(xué)語文》真題匯編

    下載