Struct实例

计算书费

下面是一个图书的单价表:
计算概论 28.9 元/本
数据结构与算法 32.7 元/本
数字逻辑 45.6元/本
C++程序设计教程 78 元/本
人工智能 35 元/本
计算机体系结构 86.2 元/本
编译原理 27.8元/本
操作系统 43 元/本
计算机网络 56 元/本
JAVA程序设计 65 元/本
给定每种图书购买的数量,编程计算应付的总费用。

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    int k,i,j;
    double sum,a,b[999]={28.9, 32.7, 45.6, 78.0,35.0, 86.2, 27.8, 43.0, 56.0, 65.0};//初始化每种书的价格
    cin>>k;
    for(i=0;i<k;i++)
    {   sum=0;
        for(j=0;j<10;j++)
        {    cin>>a;
        sum+=a*b[j];}
        printf("%.2f\n",sum); //cout<<fixed<<setprecision(2)<<sum<<endl;
}
    }

平衡饮食

100克不同食品的营养成分含量如下表:

食品--------蛋白质-------脂肪----------碳水化合物
大米--------7.5----------0.75----------78
面----------10-----------1.25----------75
蔬菜--------1.5----------0.19----------4.28
豆类--------35-----------18------------42
蛋一只------5.0----------5.0-----------0.6
瘦肉--------16.5---------28.8----------1.05
牛肉--------17.7---------20.33---------4.06
鱼----------14.9---------0.8-----------0.93
食油--------0------------100-----------0
水果--------0.85---------0.5-----------8

各种营养成分所含热量如下: 蛋白质:4.1千焦耳/克;脂肪:9.3千焦耳/克;碳水化合物:4.1千焦耳/克。所谓平衡饮食是指食品的荤素搭配适当,蛋白质、脂肪和碳水化合物三者提供的热量之比应在1416%:3035%:49~56%之间。

#include <iostream>

using namespace std;
struct yy{
    double d;
    double z;
    double t;
    };
int main()
{
    double sum[4];
    yy a[20],c[20];
    a[0].d=7.5,a[0].z=0.75,a[0].t=78;
	a[1].d=10,a[1].z=1.25,a[1].t=75;
	a[2].d=1.5,a[2].z=0.19,a[2].t=4.28;
	a[3].d=35,a[3].z=18,a[3].t=42;
	a[4].d=5,a[4].z=5.0,a[4].t=0.6;
	a[5].d=16.5,a[5].z=28.8,a[5].t=1.05;
	a[6].d=17.7,a[6].z=20.33,a[6].t=4.06;
	a[7].d=14.9,a[7].z=0.8,a[7].t=0.93;
	a[8].d=0,a[8].z=100,a[8].t=0;
	a[9].d=0.85,a[9].z=0.5,a[9].t=8;
	c[10].d=0,c[10].z=0,c[10].t=0;
    double b[20];
    for(int i=0;i<10;i++) {cin>>b[i];}
    for(int p=0;p<4;p++){b[p]/=100;}
    for(int l=5;l<10;l++) {b[l]/=100;}//鸡蛋按个论 要单独考虑
    for(int k=0;k<10;k++){ //使用遍历,每克含量*克数
        a[k].d=a[k].d*b[k];
		a[k].z=a[k].z*b[k];
		a[k].t=a[k].t*b[k];}
    for(int f=0;f<10;f++){ //把每种食物的每种营养的总量加和
        c[10].d+=a[f].d;
		c[10].z+=a[f].z;
		c[10].t+=a[f].t;}
    for(int j=0;j<10;j++){  //换算成能量
        sum[0]+=c[10].d*4.1;
        sum[1]+=c[10].z*9.3;
        sum[2]+=c[10].t*4.1;}
    sum[3]=sum[0]+sum[1]+sum[2];
	if(sum[0]/sum[3]>=0.14&&sum[0]/sum[3]<=0.16&&sum[1]/sum[3]>=0.3&&sum[1]/sum[3]<=0.35&&sum[2]/sum[3]>=0.49&&sum[2]/sum[3]<=0.56) //条件输出
	cout<<"yes";
	else     cout<<"no";
	return 0;
}

生日相同

在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日。试找出所有生日相同的学生。

错误1:未排序
#include <iostream>
#include <cstring>
using namespace std;
struct birthday{
    int month;
    int day;
    string id;
    int n;};
int main()
{
    int k,flag;
    cin>>k;
    birthday a[99];
    for(int i=0;i<k;i++) {cin>>a[i].id>>a[i].month>>a[i].day,a[i].n=0;}
    for(int l=0;l<k;l++){ flag=0;
    for(int j=1;j<k;j++){
        if(a[j].month==a[l].month&&a[j].day==a[l].day&&a[l].n==0){
        cout<<a[l].month<<" "<<a[l].day<<" "<<a[l].id<<" ";
        a[l].n=1;
        flag=1;}
        if(a[j].month==a[l].month&&a[j].day==a[l].day&&a[j].n==0){
        cout<<a[j].id<<" ";
        a[j].n=1;}}
        if(flag)
        cout<<endl;
        }
}
//flag用来控制换行,n用来标记此人是否已经在之前循环中找到生日相同的人,防止重复。
**错误(2):求大神指正**
#include <iostream>
#include <algorithm>
using namespace std;
struct birthday{
    int month;
    int day;
    string id;
    int n;};
int main()
{
    int k,flag,i,j;
    cin>>k;
    birthday a[99],t;
        for(i=1;i<=199;i++)
    {   for(j=0;j<k-1;j++)
        if(a[j].month>a[j+1].month)
            {   t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        else if(a[j].month==a[j+1].month)
            {   if(a[j].day>a[j+1].day)
                {   t=a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }
            }
    }
    for(i=0;i<k;i++) {cin>>a[i].id>>a[i].month>>a[i].day;a[i].n=0;}
    for(int l=0;l<k;l++){ flag=0;
    for(j=1;j<k;j++){
        if(a[j].month==a[l].month&&a[j].day==a[l].day&&a[l].n==0){
        cout<<a[l].month<<" "<<a[l].day<<" "<<a[l].id<<" ";
        a[l].n=1;
        flag=1;}
        if(a[j].month==a[l].month&&a[j].day==a[l].day&&a[j].n==0){
        cout<<a[j].id<<" ";
        a[j].n=1;}}
        if(flag)
        cout<<endl;
        }
}

成绩统计:

某班级有n人(n<80),期末考试的六门学科分别是语文、数学、英语、物理、化学、生物。考试成绩出来了,现要求每人的成绩总分和各学科的平均分。输入班级人数,每人的座号和各学科成绩,输出每人的座号、成绩和各学科平均分(四舍五入保留1位小数)

#include <iostream>
#include <iomanip>
using namespace std;

struct mark{
    int id;
    int yu;
    int shu;
    int ying;
    int wu;
    int hua;
    int sheng;};

int main()
{
    int k,sum,s[6]={0};
    double ave[6];
    cin>>k;
    mark a[99];
    for(int i=0;i<k;i++) cin>>a[i].id>>a[i].yu>>a[i].shu>>a[i].ying>>a[i].wu>>a[i].hua>>a[i].sheng;
    for(int j=0;j<k;j++){
        sum=a[j].yu+a[j].shu+a[j].ying+a[j].wu+a[j].hua+a[j].sheng;
        cout<<a[j].id<<" "<<a[j].yu<<" "<<a[j].shu<<" "<<a[j].ying<<" "<<a[j].wu<<" "<<a[j].hua<<" "<<a[j].sheng<<" "<<sum<<endl;
    }
    for(int l=0;l<k;l++){
        s[0]+=a[l].yu;
        s[1]+=a[l].shu;
        s[2]+=a[l].ying;
        s[3]+=a[l].wu;
        s[4]+=a[l].hua;
        s[5]+=a[l].sheng;}
        for(int m=0;m<6;m++){
            ave[m]=(double)s[m]/k;
    cout << fixed <<setprecision(1)<<ave[m]<<" ";}
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值