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

1下列语句的输出结果是______。C

  int **pp,*p,a=5,b=8;

  pp=&p;p=&a;p=&b;printf("%d,%d",*p,**pp);

 A. 5,8   B.8,5      C. 8,8            D. 5,5

2如下程序的输出结果是______。B

#include <stdio.h>

#include <ctype.h>

#include <string.h>

void fun(char *p)

{ int i,k;

   char s[30];

   for(i=0,k=0;p[i]!='\0';i+=2)

     if(!isspace(*p+i)&&(*(p+i)!='a'))

       s[k++]=p[i];

   s[k]='\0';

   strcpy(p,s);}

main()

{ char s[30]="p r o g ra m e";

   fun(s);

   puts(s);

   return;}

A.programe B.progr  C. ame   D. emargorp

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

  char s[]="one",*p=s;

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

A. 字符e的地址   B. 0  C. 12    D. 20

4以下函数的功能是比较两个字符串s和t的大小,函数中应填入______。D

comp(char *s, char *t)

{  for (;*s==*t;______)

     if (*s=='\0')

       return(0);

return(*s-*t);  }

A. s++          B. t++          C. s++;t++        D. s++,t++

5以下程序段的结果为______。B

  static char s[]="language";

  char *p;

  for(p=s;p<s+8;p+=2)

  putchar(*p);

A. language      B. lnug       C. agae          D. 语法错误

6以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是______。B

#include <stdio.h>

void main()

  {  int *p,a;     p=&a;

     printf("input a:");

     scanf("%d",*p);

     …   }

A. *p表示的是指针变量p的地址。

B. *p表示的是变量a 的值,而不是变量a的地址。

C. *p表示的是指针变量p的值。

D. *p只能用来说明p是一个指针变量。

7在int (*p)[3]; 定义中,标识符p______。C

A.定义非法。

B.是一个指针数组,每个元素是一个指向整型变量的指针。

C.是一个指针,指向一个具有三个元素的一维数组。

D.是一个指向整型变量的指针。

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

#include <stdio.h>

void main()

{  int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int (*p)[4]=a,i,j,k=0;

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

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

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

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

A. 60           B. 68            C. 99            D. 108

9能正确执行x和y交换且返回结果的函数是______。A

A. fun(int *x,int *y)                  B. fun(int x,int y)

    {  int p;                           {  int t;

       p=*x;*x=*y;*y=p; }                  t=x;x=y;y=t; }

C. fun(int *x,int *y)                  D. fun(int *x,int *y)

{  *x=*y;*y=*x;  }                 {  *x=*x-*y;  }

10若已知:int x;  int y; 则下面表达式合法的是______。A

A. &x           B. &(x+y)        C.&5            D.&(y+1)

11下列程序段运行后输出______。D

  char s1[5],s2[]="enjoy";

  s1=s2;

  printf("%s",s1);

A.enjoy   B.joy  C. en   D. 编译出错

12以下程序调用findmax函数返回数组中的最大值,在下划线处应填入的是______。B

#include <stdio.h>

findmax(int *a,int n)

{ int *p,*s;

for(p=a,s=a; n>0;n--,p++)

if (_______) s=p;

return(*s);  }

main()

{ int x[5]={12,21,13,6,18};

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

A. p>s          B. *p>*s         C. a[p]>a[s]       D. p-a>p-s

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

#include <stdio.h>

void main()

{  int a=100,b=10,*p1,*p2;

p1=&b;p2=&a;

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

A.分别是a和b的地址            B. 不确定的值

C. 10,100                       D. 100,10

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

#include <stdio.h>

void main()

{  char a[]="you are a boy",b[20];

int i;

for (i=0;*(a+i)!='\0';i++)  *(b+i)=*(a+i);

     *(b+i)='\0';

for (i=0;b[i]!='\0';i++)  printf("%c",b[i]); }

A.不确定的值                    B.字符串a的地址

C. you are a boy                   D.数组b的地址

15若有以下说明和语句, 则p2-p1的值为多少______。A

int a[10], *p1, *p2;

p1=a;

p2=&a[5];

A. 5                            B. 6             

C. 10                           D. 没有指针与指针的减法

16已定义以下函数:fun(int *p) { return *p; }该函数的返回值是______。C

A.不确定的值                    B.形参p中存放的值

C.形参p所指存储单元中的值      D.形参p的地址值

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

#include <stdio.h>

void main()

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

     int *p[4], j;

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

     p[j]=a[j];

     printf("%2d,%2d,%2d,%2d\n", *p[1], (*p)[1], p[3][2], *(p[3]+1));

}

A. 4, 4, 9, 8        B. 程序出错    C. 4, 2,12,11     D. 1, 1, 7, 5

18以下程序的输出结果是______。B

#include <stdio.h>

char cchar(char ch)

{  if(ch>='A'&&ch<='Z') ch=ch-'A'+'a';

return ch;  }

main()

{  char s[]="ABC+abc=defDEF",*p=s;

while(*p)

{  *p=cchar(*p);

p++;  }

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

A. abc+ABC=DEFdef             B. abc+abc=defdef

C. abcaABCDEFdef               D. abcabcdefdef

19已定义以下函数

fun(char *p2, char *p1)

{ while((*p2=*p1)!='\0'){ p1++;p2++; } }

函数的功能是:______。A

A.将p1所指字符串复制到p2所指内存空间。

B.将p1所指字符串的地址赋给指针p2。

C.对p1和p2两个指针所指字符串进行比较。

D.检查p1和p2两个指针所指字符串中是否有'\0'。

20执行以下语句后,a的值为______。C

  int a,b,c,x=3,y=7,z=6;

  int *p1=&x,*p2=&y,*p3;

  a=p1==&x;

  b=2*(-*p2)/(*p1)+5;

  c=*(p3=&z)=*p1*(*p2);

A. -1    B. 0 C. 1    D.

21有以下程序:

#include <stdio.h>

void main()

{ char str[]="xyz",*ps=str;

while(*ps) ps++;

for(ps--; ps-str>=0;ps--) puts(ps); }

执行后输出结果是______。C

A. yz           B. z             C. z            D.  x

   xyz             yz               yz               xy

   xyz                              xyz

22有以下程序:

#include <stdio.h>

void main( )

{ int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;

pa=a;

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

if(i<2) pa[1][i] = pa[1][i]-1;

else pa[1][i]=1;

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

执行后输出结果是______。A

A.7            B.6            C.8             D.无确定值

23下列语句执行后输出的结果是______。A

  char *s1="world",*s2="word";

  printf("%d\n",strlen(strcpy(s1,s2)));

A.4   B.5     C. 6             D. 7

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

#include <stdio.h>

void main()

{  static char a[3][3]={{'A','B','C'},{'D','E','F'},{'G','H','I'}};

int i;

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

A. AEI                          B. 不确定的值

C. ABC                         D. 分别为a[i][j]的地址

25执行以下程序后,b的值为______。A

#include <stdio.h>

void main()

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

    int i,b=1,*p;

    p=&a[1];

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

      b*=*(p+i);

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

    }

A.192   B.384  C. 64   D. 1152

判断

1一个数组的名字实际上是一个指针表达式。Y

2指针变量可以进行加减乘除运算。N

3 int *p表示定义了一个指向int类型数据的指针变量p。Y

4指针变量是把另一个变量的值作为其值的变量。N

5指针须先赋值后使用。Y

6以下程序:

#include <stdio.h>

void test(int x[],int n)

{   for(int i=0 ; i<n; i++)   printf("%d",*x++ );   }

main()

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

           test(a,10); return; }

能正确输出a数组的值。N

7以下定义中int (*p)[4]与int *p[4]是等价的。N

8若有语句:int a=14, *p=&a;,则a,p,&*a均代表地址。N

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

10以下程序:

#include <stdio.h>

void main()

{  int x=2, y ;   int *px=&x;

           *(px+1)=5;    y=*++px;

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

输出结果为y=5。Y

填空

1在C程序中,可以通过指针变量加一个整型常量 、指针变量减一个整型常量、___________三种运算移动指针。指针赋地址值

2以下程序的运行结果为___________。        1711717           

#include <stdio.h>

#include <string.h>

void fun(char *p,int n)

{  char k,*p1,*p2;

     p1=p;

       p2=p+n-1;

while(p1<p2)

{k=*p1++;

         *p1=*p2--;

         *p2=k;}  }

main()

{  static char s[]="1234567";

       fun(s,strlen(s));

       puts(s); return;  }

3若有数组a[10],类型为int型,元素及值如下所示:

数组元素: a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]

元素中的值:9  4   8  3  2   6  7  0  1  5

则*(a+a[9])的值为___________。6

4以下程序完成查找某个数字在数组a中的位置的功能,请填空。a++

#include <stdio.h>

int *find(int a[],int n, int x)

{  int i=0;

     while(i<n && *a!=x)

      ___________,i++;

     if (i<n)   return a;

     else  return NULL;  }

main()

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

     int *p, x ;

     printf("find what number?\n");

     scanf("%d",&x);

     p=find(a,10,x);

     if (p!=NULL)   printf("%d at a[%d]",x, p-a);  return;  }

5以下程序的输出结果是___________。Sapporo

#include <stdio.h>

void main()

{  char *a[4]={ "Tokyo","Osaka","Sapporo","Nagoya"};

printf("%s",*(a+2)); }

6以下程序用来输出字符串,请填空。*p

#include <stdio.h>

void main()

{  char *a[]={"for", "switch", "if", "while"};

     char **p;

     for(p=a; p<a+4; p++)

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

7二维数组元素a[i][j]可用指针形式表示成*(___________)。a[i]+j

8执行以下程序段后, s的值是___________。16

int a[]={5,3,7,2,1,5,3,10},s=0,k;

  for(k=0;k<8;k+=2)  s+=*(a+k);

9以下程序运行后输入:3,abcde<回车>,则输出结果是___________。 cdeab

#include <stdio.h>

#include <string.h>

void move(char *str, int n)

{  char temp; int i;

temp=str[n-1];

for(i=n-1;i>0;i--) str[i]=str[i-1];

str[0]=temp;  }

main()

{  char s[50]; int n, i, z;

scanf("%d,%s",&n,s);

z=strlen(s);

for(i=1; i<=n; i++) move(s, z);

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

10以下程序的执行结果是___________。0,6

#include <stdio.h>

void main()

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

p=a;

*(p+4)+=2;

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

11以下程序完成查找某个字符串是否在数组name中的功能,请填空。i<5

#include <stdio.h>

#include<string.h>

main()

{char *name[5]={"Li Hua","He Xiao Ming","Zhang Li","Sun Fei","Chen Bao"};

   char in_name[20];   int i, flag=0;

   printf("Enter your name:");

   gets(in_name);

   for(i=0; ___________; i++)

     if (strcmp(name[i],in_name)==0)  { flag=1; break; }

   if (flag==1)  printf("%s is in our class.\n", in_name);

   else  printf("%s is not in our class.\n", in_name); return; }

12以下程序的执行结果是___________。1357

#include <stdio.h>

void main()

{  char ch[2][5]={"1234","5678"},*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' && p[i][j]<='9';j+=2)

           s=10*s+p[i][j]-'0';

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

13以下程序的输出结果是___________。efgh

#include <stdio.h>

void main()

{  char *p="abcdefgh",*r;

long *q;

q=(long*)p;

q++;

r=(char*)q;

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

14在C程序中,可以通过地址运算符&  、malloc函数、___________三种方式为指针变量赋地址。赋值语句

15以下程序的执行结果是___________。6

#include <stdio.h>

void main()

{  int a[]={2,4,6},*p=&a[0],x=8,y,z;

for (y=0;y<3;y++)  z=(*(p+y)<x)?*(p+y):x;

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

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

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

相关文章

2024考研国家线公布,各科分数线有哪些变化?考研国家线哪些涨了,哪些跌了?可视化分析告诉你

结论在文章结尾 2024考研国家线 一、近五年国家线趋势图-学术硕士 文学 管理学 工学照顾专业 体育学 交叉学科 军事学 历史学 理学 享受少数名族照顾政策的考生 中医类照顾专业 教育类 艺术类 医学 工学 哲学 法学 农学 经济学 二、近五年国家线趋势图-专业硕士 中医 应用心理 …

web项目的搭建

使用Webstorm并创建Next.js文件 1、配置nodejs环境、安装webstorm【配置node.js可以使用nvm去管理nodejs的版本】 2、需要破解webstorm&#xff0c;可能会导致原本的idea失效&#xff0c;注册码过期 3、taobao的npm过期&#xff0c;导致npm is sass执行不成功&#xff0c;需…

jvaweb 3-13

Element 后端开发 maven maven的作用 下载并配置环境变量 创建Maven项目 Maven坐标 依赖 Maven的依赖传递特性 以图表形式展示依赖 排除依赖 依赖范围 生命周期

普通小白现在做抖音小店还能赚到钱吗?千万不要忽视这几点

大家好&#xff0c;我是电商花花。 赚钱做生意的秘密&#xff0c; 很简单&#xff0c;就是积少成多&#xff0c;以小见大&#xff0c;然后和时间成为朋友。 而做抖音小店也是这样的一个道理&#xff0c;不管是新手小白还是老电商玩家&#xff0c;都是从一点一滴做起来的&…

C#使用自定义的泛型节点类接口 IBinaryTreeNode<T>实现二叉树类接口IBinaryTree<T> 及其方法

目录 1.首先&#xff0c;定义节点类接口 IBinaryTreeNode 2.第二&#xff0c;定义二叉树接口 IBinaryTree 3.第三&#xff0c;定义二叉树节点BinaryTreeNode(T value) 4.第四&#xff0c;二叉树方法实现 5.最后&#xff0c;用Main方法实现二叉树类接口IBinaryTree 及其方法…

如何使用vue定义组件之——父组件调用子组件

首先&#xff0c;我们需要创建两个组件模板template&#xff1a; <template id"father"><div><h3>我是父组件</h3><h3>访问自己的数据:</h3><h3>{{ msg }}</h3></div></template><template id"…

性能测试-数据库

一、数据库事务机制 ACID描述 1、原子性Atomicity&#xff1a;事务通常由多个语句组成。原子性保证将每个事务视为一个“单元”&#xff0c;该事务要么完全成功&#xff0c;要么完全失败 2、一致性Consistency&#xff1a;“一致”是指数据库中的数据是正确的&#xff0c;不存…

【2024-03-12】设计模式之模板模式的理解

实际应用场景&#xff1a;制作月饼 过程描述&#xff1a; 一开始&#xff0c;由人工制作月饼&#xff0c; 第一个&#xff1a;根据脑子里面月饼的形状&#xff0c;先涅出月饼的形状&#xff0c;然后放入面粉和馅料把开口合并起来。 第二个&#xff1a;根据脑子里面月饼的形状&…

BigDL-LLM 安装指南——在iGPU集成显卡下使用BigDL-LLM大模型库加速LLM

文章目录 iGPU是什么&#xff1f;一、环境准备1.1 Visual Studio 2022 Community 安装1.2 安装或更新最新版本的GPU驱动程序1.3 安装英特尔oneAPI工具包2024.0版本1.4 安装Anaconda 二、BigDL -LLM 安装2.1 创建虚拟环境2.2 激活虚拟环境2.3 安装bigdl-llm[xpu] 三、运行环境配…

iOS 17.4 Not Installed

iOS15以后&#xff0c;下载了xcode安装好后&#xff0c;并不会自动下载好模拟器&#xff0c;需要手动下载。 有两种下载方式 xcode下载 xcode -> Settings 打开面板 xcode下载虽然方便&#xff0c;但是有个问题是&#xff0c;这里下载如果断网了不会断点续传&#xff0c;…

MyBatis 框架之一:简介及环境搭建详细步骤

1. MyBatis 是什么&#xff1f; MyBatis 是一个流行的、轻量级的 Java 持久层框架&#xff0c;它简化了与数据库交互和 SQL 映射的过程。MyBatis 取代了 JDBC 原始 API 的大量繁琐工作&#xff0c;允许开发者将更多的精力放在业务逻辑上而不是处理数据访问细节。 mybatis 是一款…

激光雷达研究笔记1:资料整理与学习_windows机对其评估使用

到手了一款型号为LDROBOT LiDAR LD19 的单线激光雷达模块&#xff0c;现对其进行学习使用&#xff1a; 1.对产品手册的研究&#xff1a; 通读产品手册后&#xff0c;我提炼了几方面有用的信息&#xff1a; 1.测量依据&#xff1a; 以下是激光雷达点云扫描示意图&#xff1a; 上…

Linux信号机制(二)

目录 一、信号的阻塞 二、信号集操作函数 三、sigprocmask函数 四、pause函数 五、sigsuspend函数 一、信号的阻塞 有时候不希望在接到信号时就立即停止当前执行&#xff0c;去处理信号&#xff0c;同时也不希望忽略该信号&#xff0c;而是延时一段时间去调用信号处理函数。…

【Sql Server】通过Sql语句批量处理数据,使用变量且遍历数据进行逻辑处理

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

避免被反洗钱冻住的方法

文章目录 I 银行app使用技巧1.1 处理非柜面交易限制1.2 支付安全锦囊1.3 微信和支付宝扫码要求验证密码规则II 浦发银行常用操作2.1 设置查询密码2.2 微信公众号绑定2.3 查询卡转账额度III 农商银行常用操作3.1 卡状态3.2 手机号收款V 其他有用小技能I 银行app使用技巧 1.1 处…

Qt配置OpenCV,无需编译

网上很多关于Qt配置OpenCV的教程都需要下载CMake编译Opencv&#xff0c;但是这种做法出错的概率很大&#xff0c;很多时候会受CMake或者Opencv版本的影响&#xff0c;又或者是没有使用Qt自带的Cmake-gui.exe程序&#xff0c;我在编译的时候也是频繁出错。 本文推荐的方法是使用…

Ubuntu系统OpenCV推理服务器配置记录

算法服务器配置记录 前言一、阿里OSS安装1.安装CMake2.安装依赖3.安装SDK4.编译失败解决 二、Ubuntu安装eigen3库三、Ubuntu安装最新OpenCV四、其他错误1.error while loading shared libraries2.nvcc No such fule or directory 总结 前言 记录在配置OpenCV推理的算法服务器的…

20240313金融读报:粮食产能提升行动方案与金融创新实践,聚焦科技创新链产业链融合及国际金融中心联动发展

1、新一轮千亿斤粮食产能提升行动方案&#xff08;2024&#xff0d;2030年&#xff09;&#xff1a;扎实推进藏粮于地、藏粮于技&#xff0c;落实分品种增产任务和分区域增产布局&#xff0c;谋划实施高标准农田建设、种业振兴等支撑性重大工程&#xff08;乡村振兴着力点&…

【EDK II】作为UEFI的实现,EDK II 的架构是什么样的

目录 前言 EDK II 架构 配置文件 结语 前言 基本输入输出系统 (Basic Input Output System, BIOS) 最早由 IBM&#xff08;International Business Machines Corporation) 公司于1981年提出并开发&#xff0c;后来成为个人计算机(PC)的标准固件接口。但受限于传统BIOS (Le…

Linux 学习笔记(15)

十五、 配置文件 1 、配置文件介绍&#xff1a; 每个 Linux 程序都是一个可执行文件&#xff0c;它含有操作码列表&#xff0c;CPU 将执行这些操作码来完成特定的操作。 例如&#xff0c;ls 命令是由 /bin/ls 文件提供的&#xff0c;该文件含有机器指令的列表&#xff0c;在…