昆明猫咪科技网站建设,北京工商注册登记网上服务系统,随州网站建设哪家实惠,比较好的h5制作软件目录
选择题#xff1a;
题一#xff1a;
题二#xff1a;
题三#xff1a;
题四#xff1a;
题五#xff1a;
编程题#xff1a;
题一#xff1a;字符个数统计
思路一#xff1a;
题二#xff1a;多数元素
思路一#xff1a;
本人实力有限可能对一些…
目录
选择题
题一
题二
题三
题四
题五
编程题
题一字符个数统计
思路一
题二多数元素
思路一
本人实力有限可能对一些地方解释和理解的不够清晰可以自己尝试读代码或者评论区指出错误望海涵
感谢大佬们的一键三连 感谢大佬们的一键三连 感谢大佬们的一键三连 选择题
题一 1、如下程序的运行结果是 char c[5]{a, b, \0, c, \0}; printf(%s, c); A: a b B: ab\0c\0 C: ab c D: ab 答案解析 字符串的结束标志是\0而\0的ASCII值是0而c[2]被初始化为0就相当于是\0故字符串打印的内容只有ab。 题二 2、若有定义 int a[2][3]; 以下选项中对 a 数组元素正确引用的是 A: a[2][0] B: a[2][3] C: a[0][3] D: a[12][1] 答案解析 本题主要考虑数组越界访问的情况二维数组的行和列都是从0开始的对于a数组来说行下标最大是1列下标最大是2D选项中12表达式的值是0是正确的其他选项行和列都可能存在越界A是行越界B是行和列都越界C是列越界。 题三 3、在下面的字符数组定义中哪一个有语法错误 A: char a[20]abcdefg; B: char a[]xy5.; C: char a[15]; D: char a[10]5; 答案解析 D中的5是一个字符常量不能给字符型数组a初始化。 题四 4、下列定义数组的语句中正确的是【多选】 A:#define size 10 char str1[size], str2[size2]; B:char str[]; C:int num[10]; D:int n5; int a[n][n2]; 答案解析 A选项宏替换没问题B选项非法定义一维数组必须定义数组元素个数C选项字符0转换成十进制为48所以该选项最终为int num[48]D选项错误数组定义下角标不能为变量注C99标准中支持了使用变量这里不做特殊考虑。 题五 5、已知 “ i ” “ j ”都是整型变量下列表达式中与下标引用X[i][j]不等效的是【多选】 A:*(X[i]j) B:*(Xi)[j] C:*(Xij) D:*(*(Xi)j) 答案解析 本题考查的是二维数组的元素访问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选项是标准的指针形式访问二位数组的一个元素。 编程题
题一字符个数统计
字符个数统计_牛客题霸_牛客网 (nowcoder.com) 示例 输入 abc输出 3 思路一
排序记录法 第一步创建足够大小的数组arr输入数组的元素计算数组长度sz通过my_string函数传参计算 第二步在函数中将数组按升序排序以及记录数的定义count 第三步遍历数组确保唯一性当数组为空或没有记录相同的字符时放入数组每次记录完记录数都1 第四步将记录数count返回打印。
#include stdio.h
#include string.h
#include assert.h
#include stdlib.h
//升序排列
int my_cmp(const void* p1,const void* p2)
{return strcmp((char*)p1,(char*)p2);
}
//计算字符个数函数
int my_string(char* arr,int sz)
{assert(arr);//升序排列qsort(arr,sz,sizeof(arr[0]),my_cmp);char sum[500] {0};int count 0;//遍历数组for(int i 0;i sz;i ){//当数组为空或没有记录相同的字符时放入数组if(count 0 || arr[i] ! sum[count-1]){sum[count] arr[i];}}return count;
}
int main()
{char arr[500] {0};scanf(%s,arr);//就是数组长度int sz strlen(arr);//记录不同个数int num my_string(arr,sz);printf(%d\n,num);return 0;
} 题二多数元素
169. 多数元素 - 力扣LeetCode 思路一
轮番比较 第一步定义记录数count比较数k题目返回条件 第二步将数组num按升序排列 第三步遍历数组先判断k与上一个k值是否相同不相同则开始下一个数的记录相同则记录数1当满足题目返回条件时退出。
//比较函数升序
int my_cmp(const void* p1,const void* p2)
{return *(int*)p1 - *(int*)p2;
}
int majorityElement(int* nums, int numsSize)
{int num numsSize/2;int count 0;int k -1;//升序排序qsort(nums,numsSize,sizeof(nums[0]),my_cmp);//遍历数组for(int i 0;i numsSize;i){//与k不相同就重新开始记录if(k ! nums[i]){k nums[i];count 0;}//相同记录1if(nums[i] k){count;}//达到要求返回if(count num){return k;}}return 0;
}
本人实力有限可能对一些地方解释和理解的不够清晰可以自己尝试读代码或者评论区指出错误望海涵
感谢大佬们的一键三连 感谢大佬们的一键三连 感谢大佬们的一键三连