当前位置: 首页 > news >正文

C语言—数组和指针练习题合集(二)

做题要求:闭卷

做题时间60分钟;

(选择题每题5分共50分,填空题每题5分共10分,编程题每题10分共40分)总分100分


一、选择题(50分)

题目1

判断字符串str1是否大于字符串str2,应当使用______;

A、if (str1>str2)                         B、if (strcmp(str1, str2))        

C、if (strcmp(str2, str1)>0)        D、if (strcmp(str1, str2)>0)

正确答案:D        分析:使用strcmp字符串比较函数,形参1比形参2大会返回一个正整数,相反会返回一个负数;相同会返回0;

题目2

下面程序段的运行结果是______;

char x[5]={'a', 'b', '\0', 'c', '\0'};printf("%s", x);

A、'a' 'b'  B、ab  C、ab0c  D、abc

正确答案:B        分析因为使用字符串打印,遇到‘\0’编译器自动判断结束

题目3

有两个字符数组a,b,则以下能正确为a,b进行赋值的语句是_______;

A、gets(a, b);                   B、scanf("%s%s", &a, &b);

C、getchar(a); getchar(b);     D、gets(a); gets(b);

正确答案:D        分析:选项A函数形参输入错误,选项B不应该采用取地址符,数组名就是首地址,选项C是单个字符输入

题目4

有字符数组s1[80]和s2[80],则以下能正确对s1, s2进行输出的语句是________;

A、puts(s1, s2)             B、printf("%s, %s", s1, s2);

C、putchar(s1, s2);    D、puts(s1), puts(s2);

正确选项:D        分析:选项B也可以输出,但是不会换行不满足输出语句的要求。正确答案是选择D因为输出完后会自动换行 

题目5

以下程序段的运行结果是________;

char a[7]="abcdef";

char b[4]="ABC";

strcpy(a, b);

printf("%c", a[5]);

A、空白         B、\0          C、e          D、f

正确答案:D       分析:是拷贝函数,ABC\0前四个拷贝过去但是a[5]的值并没有改变;

题目6

以下描述正确的是_______;

A、两个字符串所包含的字符个数相同时,才能比较字符串

B、字符个数多的字符串比字符个数少的字符串大

C、字符串"STOP└┘"与"STOP"相等

D、字符串"That"小于字符串"The"

正确答案:D        分析:A选项:错误。长度不同仍可比较。B选项:错误。长度不是决定性因素。C选项:错误。含空格的字符串与原字符串不等。D选项:正确。按字典序 "That" 确实小于 "The"

题目7

以下对字符数组的描述中错误的是_________;

A、字符数组中可以存放字符串

B、字符数组中的字符串可以整体输入、输出

C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值

D、不可以用关系运算符对字符数组中的字符串进行比较

正确答案:D        分析:比较字符数组要有strcmp函数,关系运算符只能对单个字符比较

题目8

若有语句:char s1[10], s2[10]={"books"},则能将字符串books赋给数组s1的正确语句是_______;

A、s1={"books"};   B、strcpy(s1, s2);        C、s1=s2;    D、strcpy(s2, s1);

正确答案B        分析:使用拷贝函数可以正确使用S2拷贝在S1上

题目9

以下printf语句的输出结果是_______;

printf("%d\n", strlen("school"));

A、7          B、6         C、存在语法错误       D、不定值

正确答案:B        分析:字符串加上结束标识符一共有7位,使用字符串计算长度函数不会把结束标识符记录上

题目10

下面程序的功能是将字符串s中所有的字符c删除。请选择填空。_______;

#include <stdio.h>
main(  )
{ char s[80];int i, j;gets(s);for (i=j=0; s[i]!='\0'; i++)if (s[i]!='c')  ____s[j]='\0';puts(s);
}

A、s[j++]=s[i]    B、s[++j]=s[i]            C、s[j]=s[i];     D、s[j]=s[i];

正确答案:A        分析:程序目的是删除字符串 s 中所有字符 'c'。通过遍历字符串,将非 'c' 字符重新写入原数组,最后添加字符串结束符 '\0' 并输出。

二、填空题(10)

题目1

根据下面说明和要求,完成对应的填空。

①、若有:char str1[10],str2[ ]={"student"}; 能把str2中的字符串赋给str1的串函数调用语句是___________;

②、若有:char str1[20]={"a good"}, str2[ ]={"student"}; 能把str2中的字符串接到str1中的字符串后面的串函数调用语句是____________

正确答案:1.strcpy( str1 ,str2);2.ctrcat( str1,str2);

题目2

下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中。请填空。

int main(  )
{ int a[2][3]={{1, 2, 3}, {4, 5, 6}};int b[3][2], i, j;printf("array a:\n");for (i=0; i<=1; i++){for (j=0; ____; j++){ printf("%5d", a[i][j]);____________;}printf("\n");}printf("array b:\n");for (i=0; ____; i++){for (j=0; j<=1; j++)printf("%5d", b[i][j]);printf("\n");}
}

正确答案:1.j<=2        2.arr[j][i]         3.i<2

三、编程题(40分)

题目1

需求:在数组{ 5,6,8,2,4}中排序

        1.从小到大排序         2.从大到小排序

#include <stdio.h>
void bianli_arr(int arr[],int len);
void xuanze_min_max(int arr[],int len);
void xuanze_max_min(int arr[],int len);
int main()
{int arr[]={5,6,8,2,4};int len=sizeof(arr)/sizeof(int);bianli_arr(arr,len);xuanze_min_max(arr,len);bianli_arr(arr,len);xuanze_max_min(arr,len);bianli_arr(arr,len);return 0;
}
void xuanze_min_max(int arr[],int len)
{for(int i=0;i<len-1;i++){int temp=0;for(int j=i+1;j<len;j++){if(arr[i]>arr[j]){temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}}
}
void xuanze_max_min(int arr[],int len)
{for(int i=0;i<len-1;i++){int temp=0;for(int j=i+1;j<len;j++){if(arr[i]<arr[j]){temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}}
}
void bianli_arr(int arr[],int len)
{for(int i=0;i<len;i++){printf("arr[%d]=%d ",i,arr[i]);}printf("\n");
}

题目2

定义一个5个成员整型数组data[]={10,22,88,66,88},将所有的88替换成666

#include<stdio.h>
int main()
{int arr[]={10,22,88,66,88};int len=sizeof(arr)/sizeof(int);for(int i=0;i<len;i++){if(arr[i] == 88){arr[i]=666;}}for(int i=0;i<len;i++){printf("%d ",arr[i]);}return 0;
}

题目3

定义一个5个成员整型数组data[]={10,22,88,66,88},统计88的个数

#include<stdio.h>
int main()
{int arr[]={10,22,88,66,88};int len=sizeof(arr)/sizeof(int);int count=0;for(int i=0;i<len;i++){if(arr[i] == 88){count++;}}printf("88出现的个数有%d个\n",count);return 0;
}

题目4

定义一个5个成员整型数组data[]={10,22,88,66,88},将所有的88删除:data[]={10,22,66};

#include <stdio.h>
int main()
{int arr[]={10,22,88,66,88};int len=sizeof(arr)/sizeof(int);for(int i=0;i<len;){if(arr[i] == 88){len--;for(int j=i;j<len;j++){arr[j]=arr[j+1];}arr[len]=0;}else{i++;}}for(int i=0;i<len;i++){printf("%d ",arr[i]);}return 0;
}

制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!

http://www.xdnf.cn/news/1288585.html

相关文章:

  • python调研本地 DeepSeek API的例子
  • IIS Express中可以同时加载并使用.net4.0和.NET 2.0的 DLL
  • 还在用PUT更新局部数据?Jakarta REST 4.0 的“合并补丁”,优雅!
  • 【element树组件】el-tree实现连接线及hover编辑效果
  • Java进阶学习之不可变集合
  • Ubuntu与Rocky系统安装Java全指南
  • 《软件工程导论》实验报告一 软件工程文档
  • 基于LLVM的memcpy静态分析工具:设计思路与原理解析(C/C++代码实现)
  • Life:Internship in OnSea Day 50, 51
  • 11. React组件插槽用法
  • Flink Python API 提交 Socket 数据源的 WordCount 作业
  • uni-app实战教程 从0到1开发 画图软件 (学会画图)
  • Flutter UI Kits by Olayemi Garuba:免费开源的高质量UI组件库
  • nvm install 14.21.3 时npm 无法下载和识别
  • -bash: ./restart.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
  • 1.Ansible 自动化介绍
  • 串口通信“第二次总超时”的复盘
  • ETCD备份
  • aspose word for java 使用书签进行内容填充和更新
  • SM4对称加密算法的加密模式介绍
  • Python Day28 HTML 与 CSS 核心知识点 及例题分析
  • 自动驾驶 HIL 测试:构建 “以假乱真” 的实时数据注入系统
  • 《嵌入式Linux应用编程(四):Linux文件IO系统调用深度解析》
  • GraphQL 原理、应用与实践指南
  • 【Altium designer】快速建立原理图工程的步骤
  • Day05 店铺营业状态设置 Redis
  • MySQL-多表查询
  • 第23章,景深:技术综述
  • 下一代防火墙技术
  • 【KO】android 面试 算法