用户从键盘依次输入6种农副产品的信息,编写程序按照销售额由小到大的顺序输出各个农副产品的信息。
要求:
(1)定义农副产品信息的结构体fruitinfo,包括产品编号(正整数),产品名称(由不含空格的26个英文字母的大小写构成,不超过20个字符)、销量及单价,其中销量和单价是浮点数;
(2)定义void set( struct fruitinfo *t )函数,用来输入一种农副产品的数据;
(3)定义void print( struct fruitinfo *t )函数,用来输出一种农副产品的数据(其中浮点数保留小数点后2位);
(4)定义void sortfruit( struct fruitinfo *t )函数,用来对所有农副产品按照销售额(销售额等于单价乘以销量)从小到大排序(销售额相同时保持原来顺序);
(5)在主函数中调用set、sortfruit和print函数。
示例输入
1001 Apple 300.5 2.0
1002 Banana 100.5 3.5
1003 Lemon 205.2 2.5
1004 cherry 70.65 16.2
1005 grape 500.62 6.6
1006 orange 10000.2 5.15
示例输出(各数据项用英文空格隔开,数值数据保留两位小数,每行最后一个数据项没有空格)
1002 Banana 100.50 3.50
1003 Lemon 205.20 2.50
1001 Apple 300.50 2.00
1004 cherry 70.65 16.20
1005 grape 500.62 6.60
1006 orange 10000.20 5.15
#include<stdio.h>
#include<stdbool.h>
typedef struct information{
char name[11];
int num;
float n;
float p;
}info;
void set( struct fruitinfo *t )
{
scanf("%d %s %f %f",t->name,t->num,t->n,t->p);
}
void print( struct fruitinfo *t )
{
printf("%d %s %3.2f %-2.2f\n",t->name,t->num,t->n,t->p);
}
void sortfruit(struct fruitinfo *t)
int main()
{
return 0;
}
求和排序部分不会,Moodle上的,不能用受限函数
代码及运行结果如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define N (int)6
typedef struct fruitinfo{
int num;
char name[21];
float n;
float p;
}info;
void set( struct fruitinfo *t )
{
scanf("%d %s %f %f",&t->num,t->name,&t->n,&t->p);
}
void print( struct fruitinfo *t )
{
printf("%d %s %3.2f %-2.2f\n",t->num,t->name,t->n,t->p);
}
void sortfruit(struct fruitinfo *t)
{
int i,j;
int n=N; //6种农副产品
float tmp1,tmp2;
struct fruitinfo st;
for (i=0;i<n-1;i++)
{
for (j=0;j<n-1-i;j++)
{
tmp1 = t[j].n * t[j].p;
tmp2 = t[j+1].n * t[j+1].p;
if(tmp1 > tmp2) //从小到大排序
{
st = t[j];
t[j] = t[j+1];
t[j+1]= st;
}
}
}
}
int main()
{
struct fruitinfo a[N];
int i;
//输入6种农副产品
for(i=0;i<6;i++)
set(&a[i]);
sortfruit(a);
for(i=0;i<6;i++)
print(&a[i]);
return 0;
}
供参考:
#include<stdio.h>
#include<stdbool.h>
#define N 6
typedef struct fruitinfo{
char name[11];
int num;
float n;
float p;
}info;
void set(struct fruitinfo *t )
{
scanf("%d %s %f %f",&t->num,t->name,&t->n,&t->p);
}
void print(struct fruitinfo *t )
{
printf("%d %s %3.2f %-2.2f\n",t->num,t->name,t->n,t->p);
}
void sortfruit(struct fruitinfo *t)
{
int i,j;
struct fruitinfo tmp;
for (i = 0; i < N - 1; i++)
for(j = 0; j < N - i - 1; j++){
if (t[j].n * t[j].p > t[j+1].n * t[j+1].p){
tmp = t[j]; t[j] = t[j+1]; t[j+1] = tmp;
}
}
}
int main()
{
info p[N];
int i;
for (i = 0; i < N; i++)
set(&p[i]);
sortfruit(p);
for (i = 0; i < N; i++)
print(&p[i]);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!参考:
#include "stdio.h"
#define N 100
struct student{
int id;
char name[20];
int kaoqun;
int biaoxian;
int zuoye;
int biji;
int sum;
}stud[N],t;
int main()
{
int i,j;
for(i=0;i<N;i++){
printf("请输入第%d个学生信息\n",i+1);
scanf("%d %s",&stud[i].id,&stud[i].name);
fflush(stdin);
scanf("%d %d %d %d",&stud[i].kaoqun,&stud[i].biaoxian,&stud[i].zuoye,&stud[i].biji);
stud[i].sum = stud[i].kaoqun+stud[i].biaoxian+stud[i].zuoye+stud[i].biji;
}
//排序
for (i = 0; i < N - 1; i++){
for (j = 0; j < N - 1 - i; j++){ //按成绩对学生信息进行排序
if (stud[j].sum > stud[j + 1].sum){ //整型数字的比较
t = stud[j];
stud[j] = stud[j + 1];
stud[j + 1] = t;
}
}
}
//打印
printf("学号\t姓名\t考勤\t表现\t作业\t笔记\t总分\t\n");
for (i = 0; i < N; i++){
printf("%d\t", stud[i].id);
printf("%s\t", stud[i].name);
printf("%d\t", stud[i].kaoqun);
printf("%d\t", stud[i].biaoxian);
printf("%d\t", stud[i].zuoye);
printf("%d\t", stud[i].biji);
printf("%d \n", stud[i].sum);
}
return 1;
}