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

C语言日常刷题7

文章目录

  • 题目
  • 答案与解析
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7


题目

1、如下程序的运行结果是( )

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

A: ‘a’ ‘b’ B: ab\0c\0 C: ab c D: ab

2、若有定义: int a[2][3]; ,以下选项中对 a 数组元素正确引用的是( )
A: a[2][0] B: a[2][3] C: a[0][3] D: a[1>2][1]

3、在下面的字符数组定义中,哪一个有语法错误( )
A: char a[20]=“abcdefg”; B: char a[]=“x+y=5.”; C: char a[15]; D: char a[10]=‘5’;

4、下列定义数组的语句中正确的是【多选】( )
A、

#define size 10
char str1[size], str2[size+2];

B: char str[]; C: int num[‘10’]; D: int n=5; int a[n][n+2];

5、已知 i,j 都是整型变量,下列表达式中,与下标引用 X[i][j] 不等效的是【多选】( )
A: *(X[i]+j) B: *(X+i)[j] C: *(X+i+j) D: ((X+i)+j)

6、编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行
表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
数据范围: 0 <= n <= 500
输入描述:输入一行没有空格的字符串。
输出描述:输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。

7、给定一个大小为 n 的数组,编写一个函数找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。

答案与解析

1

正确答案:D
字符串的结束标志是’\0’,而’\0’的ASCII值是0,而c[2]被初始化为0,就相当于是’\0’,故字符串打印的内容只有"ab"

2

正确答案:D
本题主要考虑数组越界访问的情况,二维数组的行和列都是从0开始的,对于a数组来说,行下标最大是1,列下标最大是2,D选项中1>2表达式的值是0,是正确的,其他选项行和列都可能存在越界,A是行越界,B是行和列都越界,C是列越界。

3

正确答案:D
D中的’5’是一个字符常量,不能给字符型数组a初始化

4

正确答案:AC
A选项:宏替换,没问题;B选项:非法定义,一维数组必须定义数组元素个数;C选项:字符’0’,转换成十进制为48,所以该选项最终为int num[48];D选项:错误,数组定义下角标不能为变量,注:C99标准中支持了使用变量,这里不做特殊考虑。

5

正确答案:BC
本题考查的是二维数组的元素访问,A选项是 正确的,X[i]就是第i行的数组名,数组名表示首元素的地址,X[i]表示第i行的第一个元素的地址,+j后就是第i行下标为j的元素的地址,整体解引用就是X[i][j],A正确。B选项因为[]的优先级高于*,所以代码相当于**((x+i)+j),X+i+j后就越界了,并不代表X[i][j],所以错误。C选项也明显不对,X是二维数组的数组名,数组名相当于第一行的地址,X+i+j,跳过了i+j行,就越界了,C错误。D选项是标准的指针形式访问二位数组的一个元素。

6

int main()
{
char tmp[501] = {0};
while(~scanf("%s", tmp)) {
char table[128] = {0}, *ptr = tmp;
int count = 0;
while(*ptr != '\0') {
if (table[*ptr] != 1) {//判断字符ascii值作为下标的位置是否被标记过,是否是重复字符
count++; //当前字符的位置没有被标记过表示没有出现过,则计数+1
}
table[*ptr++] = 1;//将字符ascii值作为下标的位置进行标记置1
}
printf("%d\n", count);
}
return 0;
}

7

方法1;

//计算多数元素
int cmp(int* a, int* b) {return *a - *b;
}int majorityElement(int* nums, int numsSize) {//使用qsort函数排序,在中间的就是多数元素qsort(nums, numsSize, sizeof(int), cmp);return nums[numsSize / 2];
}

方法2:

int majorityElement(int* nums, int numsSize) {int count = 1;int tmp = nums[0];for (int i = 1; i < numsSize; i++) {if (tmp == nums[i]) {//与保存的字符相同则计数+1count++;}else {//与保存的字符不同则计数-1count--;//计数为0表示有可能保存的字符不是最多的字符,换下一个if (count == 0) tmp = nums[i + 1];}}return tmp;
}
http://www.lryc.cn/news/146617.html

相关文章:

  • 037 - 有关时间和日期的函数方法
  • (JAVA)树——tree
  • js判断对象是否为空对象的方法总结
  • LeetCode1049. 最后一块石头的重量 II
  • universal robot 机械臂 官方基本教程
  • 网络常见安全漏洞
  • 【JS案例】JS实现图片放大镜功能
  • linux centos7 bash中字符串反向输出
  • c++:QT day1 认识与学习
  • git rebase和merge区别
  • Vue插槽实现商品列表-编辑渲染
  • Vue开发之父子组件
  • fastadmin think-queue supervisor配置
  • STM32 进不了main 函数
  • 不用循环数组,js+html实现贪吃蛇
  • 什么是线程安全和线程不安全?
  • VUE笔记(十)Echarts
  • FPGA原理与结构——时钟IP核原理学习
  • 创建python环境——Anaconda
  • 使用Linux部署Kafka教程
  • pyechart笔记:opts.AxisOpts
  • 深度思考rpc框架面经之五:rpc熔断限流、rpc复用连接机制
  • Go 数组
  • 04架构管理之分支管理实践-一种git分支管理最佳实践
  • D.OASIS City 和 Warrix 在The Sandbox 庆祝 Rise of the 10th Legend十周年
  • Git基本操作(Idea版)
  • NSS [羊城杯 2020]easyser
  • 理解底层— —Golang的log库,二开实现自定义Logger
  • RabbitMQ---Spring AMQP
  • C语言练习题解析:挑战与突破,开启编程新篇章!(2)