C语言(指针)单元练习二

1有以下程序:

#include <stdio.h>

void fun( int *a, int i, int j)

{ int t;

if(i<j) { t=a[i]; a[i]=a[j]; a[j]=t;

fun(a,++i,--j); } }

main()

{ int a[]={1,2,3,4,5,6},i;

fun(a,0,5);

for(i=0; i<6; i++)

printf("%d ",a[i]); return; }

执行后输出结果是______。A

A.6 5 4 3 2 1 B.4 3 2 1 5 6 C.4 5 6 1 2 3 D.1 2 3 4 5 6

2以下语句的输出结果是______。B

char s[]="\t\ \chinese\ \girl\n";

printf("%d",strlen(s));

A. 12 B.15 C. 13 D. 14

3有以下程序:

#include <stdio.h>

void main()

{ char *s[]={"one","two","three"},*p;

p=s[1];

printf("%c,%s\n",*(p+1), s[0]); }

执行后输出结果是______。C

A. n, two B. t, one C. w, one D. o, two

4若已知说明语句:int a, s[3][3]; 则不能将s[2][1]的值赋给变量a的语句是______。D

A. a=s[2][1]; B.a=*(*(s+2)+1); C. a=*(s[2]+1); D. a=*(*(s+2));

5以下程序的执行结果是______。C

#include <stdio.h>

void main()

{ int i,*p;

p=&i;

*p=8;

printf("i=%d ",i);

}

A. i为不定值 B. i=0

C. i=8 D.程序有错误

6以下程序:

#include <stdio.h>

char fun(char *p)

{ if(*p>='A'&&*p<='Z')

*p-='A'-'a';

return *p;}

main()

{ char s[80],*p=s;

gets(s);

while(*p)

{*p=fun(p);

putchar(*p);

p++;}

return;}

当输入BIG BIG WORLD回车,则输出结果是______。C

A. big big WORLD B. BIG BIG world

C. big big world D. BIG BIG WORLD

7以下程序的运行结果是______。C

#include <stdio.h>

void abc(char *p)

{ int i, j;

for(i=j=0; *(p+i)!='\0'; i++)

if(*(p+i)<'n')

{ *(p+j)=*(p+i);

j++; }

*(p+j)='\0'; }

main()

{ char str[]="morning";

abc(str);

puts(str); return; }

A. morig B. morning C. mig D. or

8设int x []={4,2,3,1},q,*p=&x[1];则执行语句q=(*--p)++后,变量q的值为 ______。A

A.4 B.3 C.2 D.1

9有以下程序:

#include <stdio.h>

#include <string.h>

void main()

{ char str[][20]={"Hello","Beijing"},*p=str;

printf("%d\n",strlen(p+20)); }

程序运行后的输出结果是______。C

A.0 B.5 C.7 D.20

10定义compare(char *s1, char *s2)函数,以实现比较两个字符串大小的功能,在下划线处应填入的是______。B

#include <stdio.h>

compare(char *s1, char *s2)

{ while(*s1&&*s2&& _______ )

{ s1++;

s2++; }

return *s1-*s2; }

main()

{ printf("%d\n", compare("abCd", "abc"); return; }

A. *s1!=*s2 B. *s1==*s2 C. *s1=*s2 D. s1!=s2

11如下程序的执行结果是_______。A

#include <stdio.h>

void main()

{ int a[]={2,4,6,8},*p=a,i;

for (i=0;i<4;i++)

a[i]=*p++;

printf("%d\n",a[2]); }

A.6 B. 8 C. 4 D. 2

12以下程序的输出结果是______。D

#include <stdio.h>

void main()

{ int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4],i;

for(i=0;i<4;i++)

p[i]=&a[i*3];

printf("%d\n",p[3][2]); }

A. 输出项不合法 B. 6

C. 8 D. 12

13若已有定义int (*p)(); 则指针p______。B

A. 代表函数的返回值 B. 指向函数的入口地址

C. 表示函数的类型 D. 表示函数返回值的类型

14以下程序段的输出结果是______。D

int **pp,*p,a=10,b=20;

pp=&p;p=&a;p=&b;

printf("%d,%d\n",*p,**pp);

A.10,20 B.10,10 C.20,10 D. 20,20

15阅读以下函数:

fun(char *s1,char *s2)

{ int i=0;

while(s1[i]==s2[i] && s2[i]!='\0') i++;

return (s1[i]=='\0' && s2[i]=='\0'); }

此函数的功能是______。C

A.将s2所指字符串赋给s1。

B.比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0。

C.比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0。

D.比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0。

16以下程序的运行结果是______。D

#include <stdio.h>

void fun(char *s);

main()

{ static char str[]="123";

fun(str); return;}

void fun(char *s)

{ if(*s)

{ fun(++s);

printf("%s\n", --s); } }

A. 3 B. 123 C. 1 D. 3

32 12 12 23

321 1 123 123

17以下程序的输出结果是______。D

#include <stdio.h>

void main()

{ int a[]={1,2,3,4,5,6},*p;

p=a;

*(p+3)+=2;

printf("%d,%d\n",*p,*(p+3)); }

A. 0,5 B. 1,5 C. 0,6 D. 1,6

18执行以下程序段后,a的值是______。B

static int s[]={6,8,2,5,4,9,1,3};

int a=0,i;

for(i=1;i<8;i+=2)

a+=*(s+i);

A. 13 B.25 C. 15 D. 不确定

19 有以下程序:

#include <stdio.h>

void fun(char *a, char *b)

{ a=b; (*a)++; }

main()

{ char c1='A',c2='a',*p1,*p2;

p1=&c1; p2=&c2; fun(p1,p2);

printf("%c%c\n",c1,c2); return; }

程序运行后的输出结果是______。A

A.Ab B.aa C.Aa D.Bb

20在说明语句:int *f();中,标识符f代表的是______。D

A. 一个用于指向整型数据的指针变量。

B. 一个用于指向一维数组的行指针。

C. 一个用于指向函数的指针变量。

D. 一个返回值为指针型的函数名。

21有如下语句说明:

  1. char(*ptr)[5]; 2. int *fip(); 3. int (*pfi)(); 4. int **pfpi;

正确的说法是______。B

A.第1个不合法 B.都合法 C.第3个不合法 D.第4个不合法

22以下程序的输出结果为______。D

static char s[]="language";

char *p;

p=s;

while(*p)

printf("%c",*p-32);

p++;

A. LANGUAGE B. LANG C. language D. 陷入死循环

23有以下程序段:

#include <stdio.h>

void main()

{ int a=5,*b,**c;

c=&b; b=&a;

...... }

程序在执行了c=&b;b=&a;语句后,表达式:**c的值是______。C

  1. 变量a的地址 B.变量b中的值 C.变量a中的值 D.变量b的地址

24若有定义char *language[]={"FORTRAN", "BASIC", "PASCAL", "JAVA", "C"}; 则language[2]的值是______。B

A. 一个字符 B. 一个地址 C. 一个字符串 D. 不定值

25以下程序的运行结果是______。D

#include <stdio.h>

void sub(int *x, int y, int z)

{ *x=y-z; }

main()

{ int a, b, c;

sub(&a, 10, 5);

sub(&b, a, 7);

sub(&c, a, b);

printf("%d,%d,%d\n", a, b, c); return; }

A. 10,-2,5 B. 10,5,7 C. 10,-2,7 D. 5,-2,7

判断

1 《缺失》

2内存单元间接访问是直接根据变量名存取变量的值。N

3int *p[3];定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素。N

4以下程序:

#include <stdio.h>

void main()

{ int a[5]={2,1,3,4,5};

int *p1,*p2,num;

p1=&a[0]; p2=&a[3]; num=p2-p1;

printf("num=%d\n",num); }

输出结果为num=2。N

5当指针p指向数组a的首址后,由于p[i]和a[i]都能引用数组元素,所以这里p和a是等价的。N

6数组名代表数组的起始地址。Y

7当两个指针指向同一数组时,两个指针相减的差即为两个指针相隔的元素个数。Y

8各个变量定义为:int i;char c,*s;float f,g;

则表达式 *(s+i)+(int)f和 *s+(int)c均为整型。Y

9以下程序:

#include <stdio.h>

void swap(int *,int *);

main()

{ int a=3, b=8;

swap(&a, &b);

printf("a=%d, b=%d\n",a,b); return; }

void swap(int * x , int * y)

{ int temp=*x; *x=*y; *y=temp; }

输出结果为:a=3,b=8。N

10指针变量本身也是一种变量,它存放各种类型数据的地址。Y

填空

1以下程序的运行结果是___________。1 3 5 7 9

#include <stdio.h>

main ( )

{ static int a[10],i;

for (i=0;i<10;i++) a[i]=i+1;

for (i=0;i<10;i=i+2) printf("%d ",*(a+i)); return;}

2以下函数的功能是删除字符串s中的所有数字字符,请填空。s[i]<'0'|| s[i]>'9' 或 !(s[i]>='0'&&s[i]<='9')

void dele(char *s)

{ int n=0,i;

for(i=0; s[i]; i++)

if (___________ )

s[n++]=s[i];

s[n]= '\0' ; }

3定义int a[]={1,2,3,4,5},*p=a; 表达式*++p的值是___________。2

4下面程序是判断输入的字符是否中心对称,(如"xyzzyx"和"xyzyx"都中心对称),请填空。p2--

#include <stdio.h>

#include <string.h>

main()

{ char s[100],*p1,*p2; int n;

gets(s);

n=strlen(s);

p1=s;

p2= s+n-1 ;

while(p1<p2)

if (*p1!=*p2) break;

else {p1++; ___________ ;}

if (p1<p2) printf("NO\n");

else printf("YES\n"); return;}

5以下程序的执行结果是___________。3,4,5,

#include <stdio.h>

void main()

{ int a[5]={3,4,5,6,7}; int i,*p;

for (p=a;p<(a+3);p++) printf("%d,",*p); }

6若有以下程序:

#include <stdio.h>

int f(int x, int y)

{ return (y-x)*x; }

main()

{ int a=3,b=4,c=5,d;

d = f(f(3,4),f(3,5));

printf("%d\n",d); return; }

执行后输出结果是___________。9

7以下程序的fun函数用于统计字符串s中元音字母(a,A,e,E,i,I,o,O,u,U)的个数,请填空。==*s

#include <stdio.h>

fun(char *s)

{ char a[]="aAeEiIoOuU", *p;

int n=0;

while( *s!='\0' )

{ for(p=a; *p; p++)

if(*p ___________ )

{ n++;

break; }

s++; }

return n; }

main()

{ char str[255];

gets(str);

printf("元音字母的个数为: %d\n", fun(str)); return; }

8以下程序的执行结果是___________。5,2

#include <stdio.h>

void main()

{ int a[2],*p=a;

*p=2;

p++;*p=5;

printf("%d,",*p);

p--;

printf("%d\n",*p); }

9若有定义:int a[3][2]={2,4,6,8,10,12};则*(a[1]+1)的值是___________。8

10以下程序的执行结果是___________。i=10,j=2

#include <stdio.h>

void main()

{ int i,j,*p,*q;

i=2;j=10;

p=&i;q=&j;

*p=10;*q=2;

printf("i=%d,j=%d\n",i,j); }

11以下程序段的输出结果是___________。4

float a[8]= {1,2,3,4,5,6,7,8};

float *p1,*p2;

int b;

p1=&a[3];

p2=&a[7];

b=p2-p1;

printf("%d\n",b);

12执行以下程序段后,指针变量p所指对象的值为____________。3

static int a[8]={1,2,3,4,5,6,7,8};

int *p;

p=a;

p++;

p+=6;

p--;

p-=3;

13若有以下定义和语句:

int a[4]={0,1,2,3},*p;

p=&a[2];

则*--p的值是___________。1

14以下程序的执行结果是___________。1,2,3,4,5,

#include <stdio.h>

void main()

{ int a[5]={1,2,3,4,5};

int i;

for (i=0;i<5;i++) printf("%d,",*(a+i)); }

15当程序输入0 -5 3时,程序依次输出哪三个数? 、___。-5 0 3

#include <stdio.h>

#define SIZE 3

void swap(int *a,int *b);

main()

{ int data[SIZE];

int i,j;

for(i=0;i<SIZE;i++) scanf("%d",&data[i]);

for(i=0;i<SIZE-1;i++)

for(j=i+1;j<SIZE;j++)

if(data[i]>data[j]) swap(&data[i],&data[j]);

for(i=0;i<SIZE;i++) printf("%d ",data[i]); return; }

void swap(int *a,int *b)

{ int temp;

temp=*a;*a=*b;*b=temp; }

相关推荐
UestcXiye9 分钟前
《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列
c++·计算机网络·ip·tcp
好奇龙猫1 小时前
【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
人工智能·算法
霁月风1 小时前
设计模式——适配器模式
c++·适配器模式
sp_fyf_20241 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
香菜大丸2 小时前
链表的归并排序
数据结构·算法·链表
jrrz08282 小时前
LeetCode 热题100(七)【链表】(1)
数据结构·c++·算法·leetcode·链表
oliveira-time2 小时前
golang学习2
算法
咖啡里的茶i2 小时前
Vehicle友元Date多态Sedan和Truck
c++
海绵波波1072 小时前
Webserver(4.9)本地套接字的通信
c++
@小博的博客2 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习