本文介绍: 整体思路简单定义结构变量然后输入本书的书名和价格,但是,要注意在输入书的价格的时候cin读取最后的n,这里必须要把n给处理掉,这里c++可以cin.ignore,如果在c可以getchar,如果不处理,那么n一直在缓冲区,那么下一次n就会被geiline读取影响结果。思路:看到一个学生基本信息,所以定义一个结构变量然后呢,不知道人数的多少这里vector设立一个动态数组,接着遍历所有的学生输入信息。思路:按步就班,先定义后输入然后输出,注意格式即可

目录

第一题:计算平均成绩

第二题:平面向量加法

第三题:查找书籍

第四题:通讯录排序

第五题:计算职工工资


 

 

第一题:计算平均成绩

ead5ae0dde7d4200a3393a12e5ad7378.png思路:看到一个学生基本信息,所以定义一个结构变量然后呢,不知道人数的多少,这里用vector设立一个动态数组,接着遍历所有的学生输入信息。将学生的成绩累加起来,接着求解平均值然后判断遍历输出即可

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

struct Student {
    string id;
    string name;
    int score;
};

int main() {
    int N;
    cin >> N;

    vector<Student&gt; students(N);
    double sum = 0.0;

    for (int i = 0; i < N; i++) {
        cin &gt;> students[i].id >> students[i].name >> students[i].score;
        sum += students[i].score;
    }

    double average = sum / N;
    printf("%.2lfn", average);

    for (int i = 0; i < N; i++) {
        if (students[i].score < average) {
            cout << students[i].name << " " << students[i].id << endl;
        }
    }

    return 0;
}

第二题:平面向加法

ed9e356af8874b7085f67af1e08e5a51.png思路:

简单定义见结构变量最后if(fabs(v.x)<0.05)判断是为了解决浮点数精度问题。在实际计算中,由于浮点数表示方式和计算精度限制可能会导致一些微小的误差。因此,当两个浮点数本应为零但实际上非常接近零时,为了避免输-0.0 这样不符合要求的格式,可以通过判断绝对值小于一个很小的阈值比如 0.05)来将其修正为零。

#include<stdio.h>
#include<math.h>
struct ping {
	double x;
	double y;
};
int main(){
	struct ping v,v1,v2;
	scanf("%lf%lf%lf%lf",&amp;v1.x,&amp;v1.y,&amp;v2.x,&amp;v2.y);
	v.x=v1.x+v2.x;
	v.y=v1.y+v2.y;
	if(fabs(v.x)<0.05) v.x=fabs(v.x);
	if(fabs(v.y)<0.05) v.y=fabs(v.y);
	printf("(%.1f, %.1f)",v.x,v.y);
    return 0;
}

第三题:查找书籍

查找书籍

348c3aa54aa946de942fa61af98deb27.png思路:这个题的细节还是蛮多的。整体思路很简单,定义结构变量然后输入每本书的书名和价格,但是,要注意在输入书的价格的时候cin不读取最后的n,这里必须要把n给处理掉,这里在c++可以cin.ignore,如果在c可以getchar,如果不处理,那么n一直在缓冲区,那么下一次n就会被geiline给读取,影响结果。接着由于不知道最低价格多少我们就令第一本书为最低价,然后遍历判断即可,最后输出书名的时候也要注意格式,如用printf输出string类型时候,必须在变量名后加.c_str(),否则不能输出。

 

#include <iostream>
#include <vector>
#include <string>

using namespace std;

struct Book {
    string name;
    double price;
};

int main() {
    int n;
    cin >> n;
    cin.ignore();  // 忽略第一个换行符

    vector<Book> books(n);
    for (int i = 0; i < n; i++) {
        getline(cin, books[i].name);
        cin >> books[i].price;
        cin.ignore();  // 忽略每个价格后面的换行符
    }

    double maxPrice = books[0].price;
    double minPrice = books[0].price;
    string maxBook = books[0].name;
    string minBook = books[0].name;

    for (int i = 1; i < n; i++) {
        if (books[i].price > maxPrice) {
            maxPrice = books[i].price;
            maxBook = books[i].name;
        }
        if (books[i].price < minPrice) {
            minPrice = books[i].price;
            minBook = books[i].name;
        }
    }

    printf("%.2lf, %sn", maxPrice, maxBook.c_str());
    printf("%.2lf, %s", minPrice, minBook.c_str());

    return 0;
}

第四题:通讯录排序

d18ac6f4f9fb4d769cf2375807bf2bb9.png

思路:

这个题的关键是,要判断年龄大小,这里我们不要想复杂,直接通过日期数的大小来判断,数越小,年龄越大。然后就是根据年龄大小排序

#include<bits/stdc++.h>
using namespace std;
struct friends {
	string name;
	int birthday;
	string phone;
};
bool comparebirthday(friends friend1, friends friend2);
int main()
{
	int n;
	cin >> n;
	vector<friends>list(n);
	for (int i = 0; i < n; i++)
	{
		cin >> list[i].name;
		cin >> list[i].birthday;
		cin >> list[i].phone;
	}
	//sort
	sort(list.begin(), list.end(), comparebirthday);
	//shuchu
	for (int i = 0; i < n; i++)
	{
		cout<< list[i].name << ' ' << list[i].birthday << " " << list[i].phone << endl;
	}
	return 0;
}
bool comparebirthday(friends friend1, friends friend2)
{
	return friend1.birthday < friend2.birthday;
}

第五题:计算职工工资

f4fb415333494f1890d49a08673811a9.png思路:按步就班,先定义后输入然后输出,注意格式即可

#include<bits/stdc++.h>
using namespace std;
struct salry
{
	string name;
	float gz1;
	float gz2;
	float zc;
};
int main()
{
	int n;
	cin >> n;
	vector<salry>worker(n);
	for (int i = 0; i < n; i++)
	{
		cin >> worker[i].name >> worker[i].gz1 >> worker[i].gz2 >> worker[i].zc;
	}
	vector<float>sj(n);
	for (int i = 0; i < n; i++)
	{
		sj[i] = worker[i].gz1 + worker[i].gz2 - worker[i].zc;
	}
	for (int i = 0; i < n; i++)
	{
		printf("%s %.2lfn", worker[i].name.c_str(), sj[i]);
	}

	return 0;
}

 

 

原文地址:https://blog.csdn.net/2302_80084329/article/details/134761163

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_31780.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注