生日月份统计,这个输出要求的排序不太会
# include <stdio.h>int main()
{
int n,i,bir,mon;
scanf("%d",&n);
for (i = 0;i < n,i++)
{
scanf("%d",&mon);
bir++
}
for (i = 0;i < n,i++)
{
printf();
}
}
这是我写的,只完成了输入部分,这个输出的排序要求怎么实现呀,求大佬指点 你的这个一维数组好像不能实现吧。即使能实现也会特别麻烦。不帮你修改了,直接写一下吧
给你两种方法:一种是使用结构体,一种是使用二维数组
下面写一下结构体,二维数组可以自己去写
#include <stdio.h>
struct Birth{
int month;
int num;
}bir={{1,0},{2,0},{3,0},{4,0},{5,0},{6,0},{7,0},{8,0},{9,0},{10,0},{11,0},{12,0}};
int main(void) {
int n,i,j,mon;
Birth temp;
scanf("%d",&n);
for (i = 0;i < n;i++)
{
scanf("%d",&mon);
bir.num++;
}
for(i=0;i<11;i++)//冒泡排序
for(j=0;j<11-i;j++)
{
if(bir.num<bir.num)
{
temp.num=bir.num;
bir.num=bir.num;
bir.num=temp.num;
temp.month=bir.month;
bir.month=bir.month;
bir.month=temp.month;
}
}
for(i=0;i<12;i++)
{
printf("%d %d\n",bir.month,bir.num);
}
return 0;
} #include<stdio.h>
#include<stdlib.h>
void result(int month_ount[], int has_print[])
{
int max = 0, max_index;
for(int i = 12; i >= 0; --i)
{
if(max <= month_ount && !has_print)
{
max = month_ount;
max_index = i;
}
}
has_print = 1;
printf("%d %d\n", max_index, max);;
}
int main()
{
int n,month_count = {0},mon, has_print = {0};
scanf("%d",&n);
for(int i = 0;i < n;i++)
{
scanf("%d",&mon);
month_count++;
}
for(int i = 1; i <= 13; ++i)
{
result(month_count, has_print);
}
return 0;
}
for循环嵌套,外面的for找位置,一个一个找,第一次找第一个数,里面的for比大小第一个数和其他所有数比较,那个数大就那个数占第一的位置 sunrise085 发表于 2021-2-2 21:34
你的这个一维数组好像不能实现吧。即使能实现也会特别麻烦。不帮你修改了,直接写一下吧
给你两种方法:一 ...
大佬,你的代码我看懂了,但是这里冒泡排序报错了,是怎么回事https://s3.ax1x.com/2021/02/03/yMvrtS.jpg 还不够好 发表于 2021-2-3 19:22
大佬,你的代码我看懂了,但是这里冒泡排序报错了,是怎么回事
#include <stdio.h>
int main(void){
int nums = {0};
int n, tmp;
scanf("%d",&n);
for(int i = 1; i <= n; i++){
scanf("%d",&tmp);
nums++;
}
for(int i = 1; i < 13; i++){
int pos = 1;
for(int k = 1; k < 13; k++){
if(nums < nums)pos = k;
}
printf("%d %d\n",pos,nums);
nums = -1;
}
return 0;
} 还不够好 发表于 2021-2-3 19:22
大佬,你的代码我看懂了,但是这里冒泡排序报错了,是怎么回事
我写的程序中temp不是数组啊。。。
页:
[1]