当前位置: 首页 > 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.lryc.cn/news/619193.html

相关文章:

  • [激光原理与应用-256]:理论 - 几何光学 - CMOS与CCD传感器成像原理比较
  • 安卓主题定制实践:17.45MB轻量级主题引擎技术解析
  • python --- 基础语法(1)
  • 为什么我换了项目管理软件?
  • 简单的双向循环链表实现与使用指南
  • Visual Studio中VC++目录、C/C++和链接器配置的区别与最佳实践
  • 无人机智能返航模块技术分析
  • 【前端Vue】如何在log-viewer组件中添加搜索定位功能
  • C语言中关于普通变量和指针变量、结构体包含子结构体或包含结构体指针的一些思考
  • 调整UOS在VMware中的分辨率
  • 广东省省考备考(第七十四天8.12)——资料分析、数量关系(40%-70%正确率的题目)
  • MySQL 数据库表操作与查询实战案例
  • 猫头虎AI分享|智谱直播开源其最新视觉模型:GLM-4.5V,多模态,支持图像、视频输入
  • 一个删掉360安全卫士的方法——Win+R
  • 【代码随想录day 17】 力扣 98.验证二叉搜索树
  • 计算机视觉(6)-自动驾驶感知方案对比
  • 偶遇冰狐智能辅助的录音
  • 【oracle闪回查询】记录字段短时间被修改的记录
  • 【Allegro SKILL代码解析】添加Pin Number
  • Web 安全之互联网暴露面管理
  • 零售业CRM实战:如何打通线上线下客户数据?
  • word——照片自适应框大小【主要针对需要插入证件照时使用】
  • 亚马逊优惠券视觉体系重构:颜色标签驱动的消费决策效率革命
  • DAY38打卡
  • CTO 如何从“干活的人”转变成“带方向的人”?
  • Spring Boot项目通过RestTemplate调用三方接口详细教程
  • 带宽受限信道下的数据传输速率计算:有噪声与无噪声场景
  • mysql锁+索引
  • 自然语言处理关键库解析和使用方法- FuzzyWuzzy
  • 【3】Transformers快速入门:大语言模型LLM是啥?