一开始写错了,
因为这个再定义一个和原函数一样类型的进行存储,
然后将第一个设置为最大的,依次用循环比较后面的,
最后输出
但是这个适用于找最大的、字符串这样最后只输出一个最大项比较好
对于结构体不好将比较的这个数所带的一系列的对应的数据一起输出
这个是小杜写的找最长字符串的题
找最长或者最短字符串
#include <stdio.h>
#include <string.h>
int main()
{
int n;
char p[81],max[81];
scanf("%d",&n);
scanf("%s",p);
strcpy(max,p);
for(int i=1; i<n; i++)
{
scanf("%s",p);
if(strlen(p)>strlen(max))
strcpy(max,p);
}
printf("The longest is: %s",max);
return 0;
}
这个是我一开始按这个思路写错的,是答案错误,编译没有错误
#include<stdio.h>
#include<string.h>
struct information{
char data[11];
char category[31];
double money;
};
int main()
{
int n;
scanf("%d",&n);
struct information inform[n],min;
int i;
scanf("%s %s %ld",inform[0].data,inform[0].category,&inform[0].money);
strcpy(min.data,inform[0].data);
for(i=1;i<n;i++)
{
scanf("%s %s %lf",inform[i].data,inform[i].category,&inform[i].money);
if(strcmp(inform[i].data,min.data)<0)
strcpy(min.data,inform[i].data);
}
for(i=0;i<n;i++)
{
printf("%s %s %.2f",min.data,min.category,min.money);
}
return 0;
}
这个是我想到比较题型中如果要输出的不只是最大的,而是输出从小到大的问的AI
自己也有不会的地方
冒泡排序适合用到比较重输出从小到大或者从大到小的排序
#include<stdio.h>
#include<string.h>
struct information{
char data[11];
char category[31];
double money;
};
int main()
{
int n;
scanf("%d",&n);
struct information inform[n];
int i;
for(i=0;i<n;i++)
{
scanf("%s %s %lf",inform[i].data,inform[i].category,&inform[i].money);
}
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(strcmp(inform[j].data,inform[j+1].data)>0)
{
struct information temp=inform[j];
inform[j]=inform[j+1];
inform[j+1]=temp;
}
}
}
for(int i=0;i<n;i++)
{
printf("%s %s %.2f\n",inform[i].data,inform[i].category,inform[i].money);
}
return 0;
}
注意的点
1.冒泡排序的循环记住 i < n-1;j < n - i - 1
2.struct information temp = inform [ j ];
inform[ j ] = inform [ j+1 ] ;
inform [ j + 1 ] = temp;
改的是整体的 inform【j】-----因为最后输出的就是inform【j】的所有对应的数据