c语言在线答疑
1个回答
关注
展开全部
【问题描述】输入一组无序的整数,编写程序按照整数出现次数由多到少输出整数及其出现次数,若出现次数相同,则按照输入顺序输出。【输入形式】先从标准输入读入整数的个数(大于等于1,小于等于100),然后在下一行输入这些整数,各整数之间以一个空格分隔。【输出形式】在标准输出上按照整数出现次数由多到少输出整数及其出现次数,每行显示一个整数及其出现次数,两者以一个空格分隔,出现次数后跟一个回车;若出现次数相同,则按照输入顺序输出。【样例输入】10次数相同,则按照输入顺序输出。【样例输入】100 -50 0 632 5813 -50 9 -50 0 632函 【样例输出】) 0 3-50 3632 25813 191函 ) 【样例说明】输入了10个整数,其中0和-50出现3次,0先输入,所以先输出0及其出现次数,再输出-50及其出现次数;632出现了2次;5813和9只出现1次,5813先出现先输出。【评分标准】该程序要求输出整数及其出现次数,提
咨询记录 · 回答于2023-04-21
c语言在线答疑
用c语言写
【问题描述】输入一组无序的整数,编写程序按照整数出现次数由多到少输出整数及其出现次数,若出现次数相同,则按照输入顺序输出。【输入形式】先从标准输入读入整数的个数(大于等于1,小于等于100),然后在下一行输入这些整数,各整数之间以一个空格分隔。【输出形式】在标准输出上按照整数出现次数由多到少输出整数及其出现次数,每行显示一个整数及其出现次数,两者以一个空格分隔,出现次数后跟一个回车;若出现次数相同,则按照输入顺序输出。【样例输入】10次数相同,则按照输入顺序输出。【样例输入】100 -50 0 632 5813 -50 9 -50 0 632函 【样例输出】) 0 3-50 3632 25813 191函 ) 【样例说明】输入了10个整数,其中0和-50出现3次,0先输入,所以先输出0及其出现次数,再输出-50及其出现次数;632出现了2次;5813和9只出现1次,5813先出现先输出。【评分标准】该程序要求输出整数及其出现次数,提
以下是C语言实现的示例代码:```c#include #include #define MAX_N 100 // 最大输入整数个数int main() { int n, nums[MAX_N], count[MAX_N] = {0}; // 声明需要用到的变量 scanf("%d", &n); // 读入整数个数 for(int i = 0; i < n; i++) { scanf("%d", &nums[i]); // 读入整数 } for(int i = 0; i < n; i++) { int flag = 0; // 标记该整数是否已经出现过,0表示未出现,1表示已出现 for(int j = 0; j < i; j++) { // 遍历已经处理过的整数,寻找该整数是否已经出现过 if(nums[j] == nums[i]) { count[j]++; // 出现次数+1
flag=1;//标记该整数已经出现过break;}}if(!flag){//该整数未出现过,将其出现次数置为1count[i]=1;}}//按照出现次数从高到低输出整数及其出现次数for(inti=0;imax_count){max_count=count[j];max_index=j;}}if(max_count>0){//输出该整数及其出现次数printf("%d%d\n",nums[max_index],max_count);count[max_index]=0;}}return0;}```首先声明需要用到的变量,包括整数个数`n`、存储整数的数组`nums`、记录每个整数出现次数的数组`count`。然后使用两重循环,统计每个整数出现的次数。外层循环遍历所有整数,内层循环遍历已经处理过的整数,若找到了该整数,则将其出现次数加1,否则将其出现次数置为1。接着使用另外的循环,按照出现次数从高到低输出整数及其出现次数。每次
遍历找到出现次数最多的整数,输出该整数及其出现次数,然后将该整数的出现次数置为0,以便下一轮循环寻找出现次数次多的整数。注意在上述代码中,为了简化代码,使用了一些简单的遍历算法,可能会存在效率较低的问题。实际上,我们可以使用更为高效的数据结构(例如哈希表)来记录每个整数出现的次数,以便更快地完成程序的运行。