网站企业地图,天体摄影,seo网页的基础知识,广告平面设计软件有哪些文章目录 学习导航一. 选择题二. 编程题(力扣/牛客网#xff09;三. 总结 学习导航
一. 选择题
如下程序的运行结果是#xff08;D#xff09;
char c[5]{a, b, \0, c, \0};
printf(%s, c);A: ‘a’ ‘b’ B: ab\0c\0 C: ab c D: ab 答案解析#xff1a; 正… 文章目录 学习导航一. 选择题二. 编程题(力扣/牛客网三. 总结 学习导航
一. 选择题
如下程序的运行结果是D
char c[5]{a, b, \0, c, \0};
printf(%s, c);A: ‘a’ ‘b’ B: ab\0c\0 C: ab c D: ab 答案解析 正确答案D 字符串的结束标志是’\0’而’\0’的ASCII值是0而c[2]被初始化为0就相当于是’\0’故字符串打印的内容只有ab 若有定义 int a[2][3]; 以下选项中对 a 数组元素正确引用的是D A: a[2][0] B: a[2][3] C: a[0][3] D: a[12][1] 答案解析 正确答案D 本题主要考虑数组越界访问的情况二维数组的行和列都是从0开始的对于a数组来说行下标最大是1列下标最大是2 D选项中12表达式的值是0是正确的其他选项行和列都可能存在越界A是行越界B是行和列都越界C是列越界。 在下面的字符数组定义中哪一个有语法错误D A: char a[20]“abcdefg”; B: char a[]“xy5.”; C: char a[15]; D: char a[10]‘5’; 答案解析 正确答案D D中的’5’是一个字符常量不能给字符型数组a初始化 下列定义数组的语句中正确的是【多选】AC A.#define size 10 char str1[size], str2[size2]; B: char str[]; C: int num[‘10’]; D: int n5; int a[n][n2]; 答案解析 正确答案AC A选项宏替换没问题B选项非法定义一维数组必须定义数组元素个数C选项字符’0’转换成十进制为48所以 该选项最终为int num[48]D选项错误数组定义下角标不能为变量注C99标准中支持了使用变量这里不做特殊考 虑。 已知 ij 都是整型变量下列表达式中与下标引用 X[i][j] 不等效的是【多选】BC A: *(X[i]j) B: *(Xi)[j] C: *(Xij) D: *( *(Xi)j) 答案解析 正确答案BC 本题考查的是二维数组的元素访问A选项是 正确的X[i]就是第i行的数组名数组名表示首元素的地址X[i]表示第i行的第 一个元素的地址j后就是第i行下标为j的元素的地址整体解引用就是X[i][j]A正确。B选项因为[]的优先级高于*所以代 码相当于**((xi)j),Xij后就越界了并不代表X[i][j],所以错误。C选项也明显不对X是二维数组的数组名数组名相当于第 一行的地址Xij跳过了ij行就越界了C错误。D选项是标准的指针形式访问二位数组的一个元素 二. 编程题(力扣/牛客网 编写一个函数计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 包括 0 和 127 )换行表示结束符不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次 例如对于字符串 abaca 而言有 a、b、c 三种不同的字符因此输出 3 。 数据范围 0 n 500 输入描述输入一行没有空格的字符串。 输出描述输出 输入字符串 中范围在(0~127包括0和127)字符的种数。 牛客网HJ10【难度简单】 示例
输入abc 输入aaa
输出3 输出11、【答案解析】 这道题思路比较简单因为题目圈定出现的字 符都是 ascii 值小于 127的字符因此只需要定义一个标记数组大小为127 然后将字符作为数组下标在数组中进行标记若数组中没有标记过表示第一次出现进行计数否则表示重复字符。 示例查表法 “aca” 首先把a字符( ascii 值为 97 )作为下标将标记数组的第 97 位置 1 下次如果还有 a 字符出现到下标 ‘a’ 或者 97 的位置一看是1就表示a已经统计过了。
#include stdio.h
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;}
给定一个大小为 n 的数组找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的并且给定的数组总是存在多数元素。 leetcode 题号169. 多数元素
示例
输入[3,2,3]
输出3
输入[2,2,1,1,1,2,2]
输出2一个数组中有一个数字出现次数大于 n/2 从第 0 个字符开始假设它就是最多的那个数字遇到相同的数字则计数 1 遇到不同的则计数 -1 其实就是互相消耗等到计数为 0 的时候表示本次互拼完毕从下一个字符重新开始互拼但是归根结底出现次数大于 n/2 的这个数字数量更多因此也是最后保留的字符。 示例 “23335” 首先从字符 2 开始计数 1 遇到 3 不同则 -1 互拼消耗 重新从剩下的 “335” 开始的过程这时候保存的字符为 3 遇到 3 则计数 1 遇到5则计数 -1 在计数不为 0 时走到末尾保存的字符就是个数超过n/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;
}三. 总结 小编制作不易如果对此时c语言小白的你有帮助麻烦给个小小的赞谢谢兄嘚l