当前位置: 首页 > 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.dtcms.com/a/327284.html

相关文章:

  • 终端安全检测和防御技术总结
  • 2025年Java后端秋招面试宝典:高频题库+场景解析
  • wordpress从wp_nav_menu中获取菜单项
  • 聆思duomotai_ap sdk适配dooiRobot
  • 【PyTorch学习笔记 - 03】 Transforms
  • 算法打卡力扣第88题:合并两个有序数组(easy)
  • Java的异常机制
  • 【牛客刷题】REAL806 放它一马:怪物经验值最大化策略详解
  • 云原生应用的DevOps3(CI/CD十大安全风险、渗透场景)
  • UE5多人MOBA+GAS 42、提高头像画质
  • C++——高性能组件
  • AI大模型基础:BERT、GPT、Vision Transformer(ViT)的原理、实现与应用
  • 【2】Transformers快速入门:统计语言模型是啥?
  • Agent智能体基础
  • 「日拱一码」057 逆向强化学习(IRL)
  • 从0开始的中后台管理系统-5(菜单的路径绑定以及角色页面的实现)
  • 分布式光伏气象站:为光伏电站的 “气象感知眼”
  • 自建知识库,向量数据库 体系建设(一)之BERT 与.NET 4.5.2 的兼容困境:技术代差下的支持壁垒
  • AWS EKS 常用命令大全:从基础管理到高级运维
  • 开发npm包【详细教程】
  • AWS KMS VS AWS Cloud HSM VS AWS Secret Manager?
  • 开源!!! htop移植到OpenHarmony
  • 自动驾驶决策算法 —— 有限状态机 FSM
  • AI项目提示-提示词-属于-mcp-cli等
  • css初学者第五天
  • 【CSS 变量】让你的 CSS “活”起来:深入理解 CSS 自定义属性与主题切换
  • 现代 CSS工具
  • web前端第二次作业
  • 【CSS 视觉】无需JS,纯 CSS 实现酷炫视觉效果(clip-path, filter, backdrop-filter)
  • 微前端面试考点与答案