1月4日 操作系统 周四

时间:2021-12-24 14:05:01

操作系统
1月4日 周四
问题:
今天实现的功能: C语言 书籍信息 录入 删除 排序 查找 使用指针地址传参 顺序表 书法家投票 十进制转换二进制
/* Note:Your choice is C IDE */

include “stdio.h”

//书籍信息 录入 删除 排序 查找
struct data
{
int num;
char name[30];
char man[30];
float price;
char pub[100];
};
struct list
{
struct data a[5];
int len;
};
struct list q;
void one();
void in();
void del();
void price();
void find();

void main()
{
one();
}
void one()
{
char x;

while(1)
{
    printf("\n\t\t===========书籍采集信息===========\n");
    printf("\t\ta.书籍信息的录入\n");
    printf("\t\ts.删除书籍的信息\n");
    printf("\t\tb.按照书籍的价格从大到小排序\n");
    printf("\t\tc.查找书籍的信息\n");
    printf("\t\td.退出\n");
    printf("\t\t==================================\n");
    printf("请进行选择:");
    scanf(" %c",&x);
    switch(x)
    {
        case 'a':in();
        break;
        case 's':del();
        break;
        case 'b':price();
        break;
        case 'c':find();
        break;
        case 'd':exit(0);
        break;
        default:printf("编号有误\n");
    }
}

}
void in()
{
int i,n,p;
float sum=0;
q.len=0;

printf("请输入书籍的数量(本数):");
scanf("%d",&n);
for(i=0;i<n;i++)
{
    printf("请输入第%d本书的信息:\n",i+1);
    printf("请输入书籍编号:");
    scanf("%d",&q.a[i].num);
    printf("请输入书籍名称:");
    scanf("%s",q.a[i].name);
    printf("请输入书籍作者:");
    scanf("%s",q.a[i].man);
    printf("请输入书籍单价:");
    scanf("%f",&q.a[i].price);
    printf("请输入书籍出版社:");
    scanf("%s",q.a[i].pub);
    q.len++;
    sum+=q.a[i].price;
}
for(i=0;i<q.len;i++)
{
    printf("书籍编号是:%d  书籍名称是:%s  书籍作者是:%s  书籍单价是:%.2f  书籍出版社是:%s\n",q.a[i].num,q.a[i].name,q.a[i].man,q.a[i].price,q.a[i].pub);
}
printf("%d本书籍的总价格是:%.2f元,平均价格是:%.2f\n",n,sum,sum/n);

}
void del()
{
char key[50];
int i,k,flag=0;
float sum=0;
struct data temp;

printf("请输入删除的书籍名称:");
scanf("%s",key);

for(i=0;i<q.len;i++)
{
    if(strcmp(key,q.a[i].name)==0)
    {
        printf("您要删除的书籍名称是:%s,出版社是%s\n",key,q.a[i].pub);
        k=i;
        flag=1;
    }
}
if(flag==0)
{
    printf("没有要删除的书籍\n");
}
for(i=k;i<q.len;i++)
{
    temp=q.a[i];
    q.a[i]=q.a[i+1];
    q.a[i+1]=temp;
}
q.len--;
printf("删除%s书籍后的信息如下:\n",key);
for(i=0;i<q.len;i++)
{
    printf("书籍编号是:%d  书籍名称是:%s  书籍作者是:%s  书籍单价是:%.2f  书籍出版社是:%s\n",q.a[i].num,q.a[i].name,q.a[i].man,q.a[i].price,q.a[i].pub);
    sum+=q.a[i].price;
}
printf("%d本书籍的总价格是%.2f元,平均价格是:%.2f元\n",q.len,sum,sum/q.len);

}
void price()
{
int i;
struct data temp;
float sum=0;

for(i=0;i<q.len-1;i++)
{
    if(q.a[i].price<q.a[i+1].price)
    {
        temp=q.a[i];
        q.a[i]=q.a[i+1];
        q.a[i+1]=temp;
    }
}
    for(i=0;i<q.len;i++)
    {
    printf("书籍编号是:%d  书籍名称是:%s  书籍作者是:%s  书籍单价是:%.2f  书籍出版社是:%s\n",q.a[i].num,q.a[i].name,q.a[i].man,q.a[i].price,q.a[i].pub);
    sum+=q.a[i].price;
    }
    printf("%d本书籍的总价格是%.2f元,平均价格是:%.2f元\n",q.len,sum,sum/q.len);

}
void find()
{
char publi[100];
int i,flag=0,k;
printf(“请输入你要查找的出版社:”);
scanf(“%s”,publi);
for(i=0;i

include “stdio.h”

//使用指针地址传参 顺序表
struct sqlist
{
char a[20];
int len;
};
hanshu(struct sqlist *p)
{
int i;
for(i=0;i<5;i++)
{
scanf(“%c”,&p->a[i]);
p->len++;
}
chuancan(p);
}
chuancan(struct sqlist *p)
{
int i;
for(i=0;ilen;i++)
{
printf(“%c”,p->a[i]);
}
}
void main()
{
struct sqlist s[5];

hanshu(s);

}

/* Note:Your choice is C IDE */

include “stdio.h”

//书法家投票
void main()
{
int i=0,x;
int a=0,b=0,c=0;

while(i<2)
{
printf("1.王献之  2.欧阳荀  3.李斯\n");
printf("请选择要投票的书法家编号:");
scanf("%d",&x);
i++;
if(x==1)
{
    a++;
}
else if(x==2)
{
    b++;
}
else if(x==3)
{
    c++;
}
else
{
    printf("编号错误\n");
    i--;
}
}
printf("王献之%d票  欧阳荀%d票  李斯%d票",a,b,c);

}

/* Note:Your choice is C IDE */

include “stdio.h”

//十进制转换二进制

void main()
{
int x,i=0;
int a[100];

printf("请输入一个十进制数:");
scanf("%d",&x);
do
{
    //printf("%d",x%2);
    a[i]=x%2;
    i++;
    x=x/2;
}
while(x>0);
printf("\n");
while(i>0)
{   
    i--;
    printf("%d",a[i]);

}

}

与亚里士多德为友,与柏拉图为友,更与真理为友。