#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3//可以改为10表示10条图书信息
typedef struct ss{
int bianhao
char shu[80]
char ren[20]
double qian
} SHU
int main(){
SHU a[N]
SHU m,t
int i,len,j
for (i = 0i <Ni++){
printf("输入第%d本书的编号\n",i+1)
scanf("%d",&a[i].bianhao)
getchar()
printf("输入第%d本书的书名\n",i+1)
gets(a[i].shu)
printf("输入第%d本书的作者\n",i+1)
gets(a[i].ren)
printf("输入第%d本书的价格\n",i+1)
scanf("%lf",&a[i].qian)
}
for (i = 0i <Ni++){
m=a[i]
printf("%d %s %s %.2lf\n", m.bianhao,m.shu,m.ren,m.qian)
}
//排序
for(i=1i<Ni++)
{
for(j=0j<N-ij++)
if(a[j].qian>a[j+1].qian) /*大于号属于升序*/
{
t.bianhao=a[j].bianhao
strcpy(t.shu,a[j].shu)
strcpy(t.ren,a[j].ren)
t.qian=a[j].qian
a[j].bianhao=a[j+1].bianhao
strcpy(a[j].shu,a[j+1].shu)
strcpy(a[j].ren,a[j+1].ren)
a[j].qian=a[j+1].qian
a[j+1].bianhao=t.bianhao
strcpy(a[j+1].shu,t.shu)
strcpy(a[j+1].ren,t.ren)
a[j+1].qian=t.qian
}
}
m=a[N-1]
printf("The top:%d %s %s %.2lf\n", m.bianhao,m.shu,m.ren,m.qian)//排序后
for (i = 0i <Ni++){
m=a[i]
printf("%d %s %s %.2lf\n", m.bianhao,m.shu,m.ren,m.qian)
}
return EXIT_SUCCESS
}
#include <stdio.h>#define N 5
void input_stu(struct Stu *stu)
void output_avg(struct Stu *stu)
struct Stu
{
int id
char name[10]
int sex
float math
float eng
float c
}
int main()
{
struct Stu stu[N]
input_stu(stu)
output_avg(stu)
return 0
}
void input_stu(struct Stu *stu)
{
int i = 1
do
{
printf("请输入第%d个学生的姓名 学号 性别 数学成绩 英语成绩 C语言成绩:", i)
struct Stu *s = stu + i - 1
scanf("%s %d %d %f %f %f", s->name, &s->id, &s->sex, &s->math, &s->eng, &s->c)
i++
} while (i <= N)
}
void output_avg(struct Stu *stu)
{
int i = 1
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s","学 号", "姓 名", "性 别", "高 数", "英 语", "C", "平均分")
struct Stu *s = stu + i - 1
float math_avg = stu->math, eng_avg = stu->eng, c_avg = stu->c
putchar(10)
do
{
struct Stu *s = stu + i - 1
math_avg = ((i - 1)*math_avg + s->math) / i
eng_avg = ((i - 1) * eng_avg + s->eng) / i
c_avg = ((i - 1)*c_avg + s->c) / i
printf("%-8d%-8s%-8s%-8.1f%-8.1f%-8.1f%-8.1f",
s->id, s->name, s->sex == 1 ? "男" : "女", s->math, s->eng, s->c, (s->math + s->eng + s->c) / 3)
putchar(10)
i++
} while (i <= N)
printf("%-12s%-12s%-12s%", "数学平均分", "英语平均分", "C平均分")
putchar(10)
printf("%-12.1f%-12.1f%-12.1f", math_avg, eng_avg, c_avg)
}
#include <stdio.h>
#include<string.h>
struct st{
char a[15]
long b
}
int main ()
{
struct st s[111]
long end[111]
char t[50][14],other[14]={'333'},son[50][14],gson[50][14]
char x[11]
int n
scanf("%d",&n)
getchar()
for(int i=0i<ni++)
{
scanf("%s%ld",s[i].a,&s[i].b)
}
for(int i=0i<ni++)//排序
{
for(int j=0j<n-1-ij++)
{
if(strcmp(s[j].a,s[j+1].a)>0)
{
strcpy(x,s[j].a)
strcpy(s[j].a,s[j+1].a)
strcpy(s[j+1].a,x)
}
}
}
for(int i=0i<n-1i++)
{
for(int j=i+1j<nj++)
{
if(strcmp(s[i].a,s[j].a)==0&&s[i].b==s[j].b)
{
strcpy(s[i].a,other)//去名字和号码同时重复的
s[i].b=0
}
}
}
int k=0
for(int i=0i<ni++)
{
if(strcmp(s[i].a,other)!=0)
{
strcpy(t[k],s[i].a)
end[k]=s[i].b
k++
}
}
for(int i=0i<ki++)
{
strcpy(son[i],t[i])
}
for(int i=0i<k-1i++)//在上面的基础上再去名字重复的;
{
for(int j=i+1j<kj++)
{
if(strcmp(son[i],son[j])==0)
{
strcpy(son[i],other)
}
}
}
int word=0
for(int i=0i<ki++)
{
if(strcmp(son[i],other)!=0)
{
strcpy(gson[word],son[i])
word++
}
}
printf("\n")
int sum=0
for(int i=0i<wordi++)
{
sum=0
for(int j=0j<kj++)
{
if(strcmp(gson[i],t[j])==0)
{
if(sum==0)
printf("%s %ld\n",gson[i],end[j])
if(sum!=0)
printf("%s_%d %ld\n",gson[i],sum,end[j])
sum++
}
}
}
return 0
}