C语言(指针)单元练习

一.选择题

1.下列程序的输出结果是______。                  A

#include <stdio.h>

#include <string.h>

main()

{ char *p1,*p2,s[10]="12345";

   p1="abcde";

   p2="ABCDE";

   strcpy(s+2,p1+3);

   strcat(s,p2+2);

   printf("%s",s);

   return;}

A. 12deCDE   B.12abcAB  C. cdABC45    D. abcBDE

2. 以下程序运行之后的输出结果是______。           B

  #include <stdio.h>

  void main()

  {  int  *p,*p1,*p2,a=3,b=7;

     p1=&a; p2=&b;

     if(a<b) { p=p1;p1=p2;p2=p; }

     printf("%d,%d ",*p1,*p2);

     printf("%d,%d",a,b);

}

A. 3,7 7,3 B. 7,3 3,7

C. 7,3 7,3 D. 3,7 3,7

3. 以下函数的功能是______。                     B

  fun(int *p1,*p2)

  {int *p;

   *p=*p1;

   *p1=*p2;

   *p2=*p;}

A. 正确,但没有交换*p1和*p2的值。

B. 使用了空指针,可能造成系统故障。

C. 能成功交换*p1和*p2的值。

D. 能成功交换*p1和*p2的地址。

4. 有以下程序:                 B

#include <stdio.h>

void main()

{ int x[8]={8,7,6,5,0,0},*s;

s=x+3;

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

执行后输出结果是______。

A.随机值         B.0             C.5            D.6

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

#include <stdio.h>

#include <string.h>

void main()

{  char b1[8]="abcdefg",b2[8],*pb=b1+3;

while (--pb>=b1)  strcpy(b2,pb);

printf("%d\n",strlen(b2)); }

A. 8            B. 3            C. 1             D. 7

6. 若有以下说明:                                       D

int w[3][4]={{0,1},{2,4},{5,8}};

int (*p)[4]=w;

则数值为4的表达式是______。

A. *w[1]+1      B. p++,*(p+1)     C. w[2][2]       D. p[1][1]

7. 以下程序的输出结果是______。                   A

#include <stdio.h>

int i;

fun(int a, int *b);

main()

{  int i=1, j=2;

     fun(fun(i, &j), &j); return; }

fun(int a, int *b)

{  static int m=2;

     i+=m+a;

     m=++(*b);

     printf("%d,%d\n", i, m);

     return (m);  }

A. 3,3           B. 3,3          C. 3,3           D. 3,3

   9,4             6,3             9,3              6,4

                      6.4

8. 若有语句:int a=4, *p=&a;,下面均代表地址的一组选项是______。   C

A. a,p,&*a      B. *&a,&a,*p     C. &a,p,&*p      D. *&p,*p,&a

9. 以下程序的输出结果为______。            C

#include <stdio.h>

void main()

{  char s[]="123",*p;

 p=s;

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

A. 123       B. 231       C. 321      D. 312

10. 以下程序的输出结果是______。          A

#include <stdio.h>

void main()

{ static char s1[]="programe",s2[]="language";

   char *p1,*p2;   int i;

   p1=s1;   p2=s2;

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

     if(*(p1+i)==*(p2+i))

       printf("%c",*(p1+i));

   }

A. gae   B.ga  C. pro    D. lang

11. 以下定义中与int *p[4]等价的是______。           C

A. int p[4]       B. int *p         C. int *(p[4])     D. int (*p)[4]

12. 以下程序的运行结果是______。               A

#include <stdio.h>

void main()

{  char *s="xcbc3abcd";

 int a, b, c, d;

 a=b=c=d=0;

     for(; *s; s++)

       switch(*s)

       {  case 'c': c++;

          case 'b': b++;

          default : d++; break;

          case 'a': a++;    }

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

A. a=1,b=5,c=3,d=8                 B. a=1,b=2,c=3,d=3

C. a=9,b=5,c=3,d=8                D. a=0,b=2,c=3,d=3

13. 设char *aa[2]={"abcd","ABCD"}; 则以下说法中正确的是______。  C

A. aa数组元素的值分别是"abcd"和"ABCD"。

B. aa是指针变量,它指向含有两个数组元素的字符型一维数组。

C. aa数组的两个元素分别存放的是含有4个字符的一维字符数组首地址。

D. aa数组的两个元素中各自存放了字符'a'和'A'的地址。

14. 已知函数定义如下:                                      B

  fun (char *p1)

  {  char *p2=p1;

     while(*p2!= '\0')

     p2++;

     return (p2-p1); }

在主函数中用语句printf("%d",fun("hello world!"));调用上述函数,则输出结果为______。

A. 13          B.12           C. 11          D. 10

15. 若有以下定义: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

16. 以下程序段执行完后,a的值为______。A

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

  int a,*p;

  p=&s[0][1];

  a=(*p)*(*p+3)*(*p+5);

A. 24    B. 15   C. 28    D. 不确定

17设x为一数字字符,则其所对应的十进制数值为______。B

A.x             B.x-‘0’          C.*x             D.&x

18以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址,若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为______。B

#include <stdio.h>

#include <string.h>

char *scmp(char *s1, char *s2)

{  if(strcmp(s1,s2)<0)

return(s1);

else return(s2);  }

main()

{  int i; char string[20], str[3][20];

for(i=0;i<3;i++) gets(str[i]);

strcpy(string,scmp(str[0],str[1]));

strcpy(string,scmp(string,str[2]));

printf("%s\n",string); return;}

A.abcd          B.abba          C.abc           D.abca

19. 以下程序的输出结果是______。A

  #include <stdio.h>

void main()

{  int *p1,*p2,*p,a=7,b=9;

     p1=&a;p2=&b;

     if(a<b)  {p=p1;p1=p2;p2=p;}

     printf("%d,%d ",*p1,*p2);

     printf("%d,%d ",a,b);  }

A. 9,7  7,9       B. 7,9  7,9   C. 7,9  9,7      D. 9,7  9,7

20. 有以下程序:                    B

#include <stdio.h>

int *f(int *x, int *y)

{  if (*x < *y)  return x;

else  return y;  }

main()

{ int a=7,b=8,*p,*q, *r;

p=&a; q=&b;

r = f(p,q);

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

执行后输出结果是______。

A.7,8,8          B.7,8,7          C.8,7,7          D.8,7,8

21. 已知有以下的说明,那么执行语句a=p+2;后, a[0]的值等于多少______。       D

float a[3]={1.2,45.6,-23.0};

float *p=a;

A. 1.2          B. 45.6           C. -23.0         D. 语句有错

22. 如下程序的执行结果是______。                                     C

#include <stdio.h>

void main()

{  int p1,m1,n1,dv,df;

char *p="a+b-c+d/e",c;

p1=m1=n1=dv=df=0;

while ((c=*p++)!='\0')

{  switch(c)

        {  case '+':p1++;break;

           case '-':m1++;break;

           case '*':n1++;break;

           case '/':dv++;break;

           default:df++;  }  }

printf("%d,%d,%d,%d\n",p1,m1,dv,df);  }

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

23. 有以下程序:                    B

#include <stdio.h>

void 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.2

24. 如下程序的执行结果是______。A

#include <stdio.h>

void main()

{  int a[3][3]={{2},{4},{6}},i,*p=&a[0][0];

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

{  if (i==0) a[i][i+1]=*p+1;

        else ++p;

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

printf("\n"); }

A. 23           B. 26            C. 33            D. 36

25. 已知char s[]="789",*p;则执行下列语句后的输出是______。B

  p=s;

  printf("%c",*(p+2));

A.字符'8' B.字符'9' C.字符'8' 的地址 D.字符'9'的地址

二、判断题

1.(对)以下程序:

#include <stdio.h>

int fun(int array[],int n)

{  int m=0,i;

           for(i=0; i<n; i++)   { m+=*array; array++; }

           return m;  }

main()

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

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

其输出结果是1~10的总和。   

2.(对)有如下定义:int a[]={1,3,5,7,9}, i, *p ;

则语句:

for(i=0; i<5; i++)  printf("a[%d]=%d\t",i,a[i]);

与语句:

for(p=a, i=0; i<5; i++)  printf("a[%d]=%d\t",i,p[i]); 等价的。

3.(错)以下程序:

#include <stdio.h>

main()

{  int i=10,*p;

           p=&i;     *p=5;

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

输出结果为10。

4.(错)在定义:int *fun();中,标识符fun是一个用于指向函数的指针变量。

5.(错)可通过int *i=NULL;  scanf("%d",i);  正确进行整数赋值。

6.(错)指针加1表示每次向下移动1个字节。

7.(对)相同类型的指针可以进行减法运算。

8.(错)函数fun(int *p){ return *p; }的返回值是不确定的值。

9.(错)使用指针变量作函数参数采取的是"值传递"的方式。

10.(对)如果数组中每个元素都是具有相同的数据类型的指针,则这种数组称为指针数组。

三、填空题

1. 以下程序的执行结果是___12________。

#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]); }

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

3. 已知有以下的说明,

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

那么a[*(a+a[3])]的值为_____0______。

4. 在C程序中,指针变量的值增1,表示指针变量指向______下一个_____存储单元。

5. 以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标,请填空。row

#include <stdio.h>

#define N 3

#define M 3

select(int a[N][M],int *n)

{  int i,j,row=1,colum=1;

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

for(j=0;j<M;j++)

if(a[i][j]>a[row][colum]){row=i;colum=j;}

*n=______row_____;

return  a[row][colum];  }

main()

{  int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;

max=select(a,&n);

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

6. 输入10个整数存入一维数组,从中查找某个整数X,查到则输出其是第几个数,查不到则输出“Not Find!”。请填空。

  #include <stdio.h>

  void main ()

  {  int a[10],*p=a,x,n,flag=0;

     for (;p<a+10;p++) scanf ("%d",p);

     scanf ("%d",&x);

     for (n=1,p=a; ______n<=10_____ ;p++,n++)

        if (*p==x) {flag = 1;break;}

     if (! flag) printf ("Not Find! \n");

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

7. 执行以下程序后,输出结果为_564379207816xyz__________。       

#include <stdio.h>

void main()

{  char *s[6]={"564","379","207","816","xyz","abc"};

     char **p;

     int i;

     p=s;

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

       printf("%s",p[i]);

     }

8. 一个专门用来存放另一个变量地址的变量叫___指针变量________。

9. 以下程序的执行结果是___ch=f________。

#include <stdio.h>

void main()

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

p=a;

*(p+3)+=2;

printf("ch=%c\n",*(p+5)); }

10. 以下程序的执行结果是______a=100_____。

#include <stdio.h>

void main()

{  int a=50,*p;

p=&a;

*p=100;

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

11. 以下程序的输出结果是__7_________。

#include <stdio.h>

void sub(int *a,int n,int k);

main()

{  int x=0;

sub(&x,8,1);

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

void sub(int *a,int n,int k)

{  if(k<=n) sub(a,n/2,2*k);

*a+=k;  }

12. mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。

请填空。

int mystrlen(char *str)

{  int i;

for(i=0; __*(str+i)或str[i]_________!='\0';i++);   return i;   }

13. 以下程序的执行结果是___s=24________。

#include <stdio.h>

void main()

{  int a[]={2,3,4},*p,s,i;

s=1;p=a;

for (i=0;i<3;i++)   s*=*(p+i);

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

14. 执行以下程序段后,a的值为___4________。

  static int s[]={5,8,4,6,10,7};

  int a,i,*p;

  a=10; p=&s[0];

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

    a=(*(p+i)<a)?*(p+i):a;

15. 执行以下程序段后,m的值是____6_______。

  int a[]={7,4,6,3,10},m,k,*ptr;

  m=10;

  ptr=&a[0];

  for(k=0;k<5;k+=2)  m=(*(ptr+k)<m)?*(ptr+k):m;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/745497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Covalent Network(CQT)与 Celo 集成,推动 Web3 下一代现实资产解决方案的发展

Covalent Network&#xff08;CQT&#xff09;是一个统一的区块链 API 提供商&#xff0c;其已正式与 Celo 集成&#xff0c;Celo 是一个以移动优先的 EVM 兼容链。这一重要的里程碑旨在提升 Celo 生态系统中开发者的能力&#xff0c;通过授予他们访问关键链上数据的权限&#…

[Django 0-1] Apps模块

Apps 源码分析 Apps 下主要有两个类: AppConfig和Apps. 目录结构 apps/ # 应用目录 ├── __init__.py # 应用初始化文件 ├── config.py # AppConfig 类 ├── registry.py # Apps 类AppConfig 位于 apps/co…

Python | Bootstrap图介绍

在进入Bootstrap 图之前&#xff0c;让我们先了解一下Bootstrap&#xff08;或Bootstrap 抽样&#xff09;是什么。 Bootstrap 抽样&#xff08;Bootstrap Sampling&#xff09;&#xff1a;这是一种方法&#xff0c;我们从一个数据集中重复地取一个样本数据来估计一个总体参数…

基于SpringBoot+Druid实现多数据源:原生注解式

前言 本博客姊妹篇 基于SpringBootDruid实现多数据源&#xff1a;原生注解式基于SpringBootDruid实现多数据源&#xff1a;注解编程式基于SpringBootDruid实现多数据源&#xff1a;baomidou多数据源 一、功能描述 配置方式&#xff1a;配置文件中实现多数据源&#xff0c;非…

Qt教程 — 3.1 深入了解Qt 控件:Buttons按钮

目录 1 Buttons按钮简介 1.1 Buttons按钮简介 1.2 Buttons按钮如何选择 2 如何使用Buttons按钮 2.1 QPushButton使用-如何自定义皮肤 2.2 QToolButton使用-如何设置帮助文档 2.3 QRadioButton使用-如何设置开关效果 2.4 QRadioButton使用-如何设置三态选择框 2.5 QCom…

学习使用postman软件上传文件发起api接口请求

学习使用postman软件上传文件发起api接口请求 设置headers头信息设置body 设置headers头信息 如图设置&#xff1a; KEY&#xff1a;Content-Type VALUE&#xff1a;multipart/form-data 设置body 设置需要上传的key对应的类型为File&#xff0c;上传类型 设置需要上传的文件…

留学生课设|R语言|研究方法课设

目录 INSTRUCTIONS Question 1. Understanding Quantitative Research Question 2. Inputting data into Jamovi and creating variables (using the dataset) Question 3. Outliers Question 4. Tests for mean difference Question 5. Correlation Analysis INSTRUCTIO…

如何安装ES

Elasticsearch入门安装 ES的官方地址&#xff1a;Elasticsearch 平台 — 大规模查找实时答案 | Elastic 我们进到网页可以看到platform&#xff08;平台&#xff09; 我们可以看到Elasticsearch logstash kibanba beats 这几个产品 Elasticsearch&#xff1a;分布式&…

某夕夕商品数据抓取逆向之webpack扣取

逆向网址 aHR0cHM6Ly93d3cucGluZHVvZHVvLmNvbQ 逆向链接 aHR0cHM6Ly93d3cucGluZHVvZHVvLmNvbS9ob21lL2JveXNoaXJ0 逆向接口 aHR0cHM6Ly9hcGl2Mi5waW5kdW9kdW8uY29tL2FwaS9naW5kZXgvdGYvcXVlcnlfdGZfZ29vZHNfaW5mbw 逆向过程 请求方式&#xff1a;GET 参数构成 【anti_content】…

基于Transformer的经典目标检测之DETR

背景 DETR&#xff0c;即DEtection TRansformer&#xff0c;是由尼古拉斯卡里翁及其团队于2020年在Facebook AI Research首次提出的&#xff0c;它在目标检测领域开创了一种新的波潮。 虽然目前并未保持最先进&#xff08;State Of The Art&#xff09;的地位&#xff0c;但DET…

vr虚拟现实游戏世界介绍|数字文化展览|VR元宇宙文旅

虚拟现实&#xff08;VR&#xff09;游戏世界是一种通过虚拟现实技术创建的沉浸式游戏体验&#xff0c;玩家可以穿上VR头显&#xff0c;仿佛置身于游戏中的虚拟世界中。这种技术让玩家能够全方位、身临其境地体验游戏&#xff0c;与游戏中的环境、角色和物体互动。 在虚拟现实游…

IP在网络通信中的重要作用

IP&#xff0c;全称Internet Protocol&#xff0c;即网际互连协议&#xff0c;是TCP/IP体系中的网络层协议。IP作为整个TCP/IP协议族的核心&#xff0c;是构成互联网的基础。它的作用重大且深远&#xff0c;下面将详细阐述IP的定义及其在网络通信中的重要作用。 首先&#xff0…

谈谈对chatgpt的看法

OpenAI数位Boss的长久坚持&#xff0c;始终以产品思维为导向&#xff0c;坚持专注&#xff0c;拿轮子造车子&#xff0c;终于发布了ChatGPT这款烧脑的经典款Chat Application&#xff0c;引领国内外一众fans跟风&#xff0c;有点摧枯拉朽的架势&#xff0c;关注了比较久&#x…

SpringBoot中的配置文件优先级、bootstrap和application的区别

SpringBoot中的配置文件优先级 SpringBoot项目当中支持的三类配置文件&#xff1a; application.properties application.yml application.yaml 在SpringBoot项目当中&#xff0c;我们要想配置一个属性&#xff0c;可以通过这三种方式当中的任意一种来配置都可以&#xff0…

Elastic Agent 的安装及使用

概述 Elastic Agent是Elastic Stack中的一个全新组件&#xff0c;旨在简化和统一监控和集成管理流程。它是一个轻量级的代理&#xff0c;可以部署到各种不同类型的主机和容器中&#xff0c;用于收集系统指标、日志和事件数据&#xff0c;并将其发送到Elasticsearch进行存储和分…

SpringBoot(自定义转换器+处理Json+内容协商)

文章目录 1.自定义转换器1.代码实例1.save.html2.编写两个bean1.Car.java2.Monster.java 3.WebConfig.java 配置类来自定义转换器4.测试 2.注意事项和细节1.debug查看转换器总数1.打断点2.执行到断点后&#xff0c;选左边的1923.可以看出&#xff0c;加上自定义的转换器一共125…

分类预测 | Matlab实现GSWOA-KELM混合策略改进的鲸鱼优化算法优化核极限学习机的数据分类预测

分类预测 | Matlab实现GSWOA-KELM混合策略改进的鲸鱼优化算法优化核极限学习机的数据分类预测 目录 分类预测 | Matlab实现GSWOA-KELM混合策略改进的鲸鱼优化算法优化核极限学习机的数据分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 GSWOA-KELM分类&#xff0…

react04- mvc 、 mvvm

MVC与MVVM stackoverflow论坛网站 react前端框架 使用框架前&#xff1a; 操作dom > js获取dom元素&#xff0c;事件侦听&#xff0c;修改数据&#xff0c;设置样式。。。 操作dom问题: 直接操作dom&#xff0c;会造成大量的回流、重绘&#xff0c;消耗大量性能操作起来也…

论文阅读——RingMo

RingMo: A Remote Sensing Foundation Model With Masked Image Modeling 与自然场景相比&#xff0c;RS图像存在以下困难。 1&#xff09;分辨率和方位范围大&#xff1a;受遥感传感器的影响&#xff0c;图像具有多种空间分辨率。此外&#xff0c;与自然图像的实例通常由于重…

Microsoft VBA Excel 规律的Text文件转工作表Sheet

问题场景 简述&#xff1a; 在Excel的.xlsm文件中&#xff0c;有一个"RunControl"的sheet用来操控转换Text到指定的sheet中&#xff0c;需要在这个sheet上增加一个按钮&#xff0c;并在按钮上链接一个VBA程序&#xff0c;实现指定的功能。 以下是"RunControl&…