C语言结构体题目?

Python010

C语言结构体题目?,第1张

#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

}