期末考试成绩,请写代码编程分别计算总分和平均分分别是多少?

期末考试成绩出来了请帮忙编程代码分别计算出总分和平均分各为多少?

img

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    int x = 0;
    int y = 0;
    int z = 0;
    cin >> x >> y >> z;
    int total_score = x + y + z;
    float average_score = total_score/3.0;
    cout << total_score << endl;
    cout << average_score << endl;//不加控制精度
    cout << fixed << setprecision(1) << average_score<<endl;//控制精度,c++用setprecision函数
    //setprecision单独使用是控制有效位数的,与fixed合用才是控制小数点后位数的,要包含<iomanip>头文件
    printf("%.1f\n", average_score);//C语言写法
    return 0;
}

img


这是比较简答的题,多思考一下呀。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7548270
  • 你也可以参考下这篇文章:哈夫曼树与哈夫曼编码 构建分析 及 代码
  • 除此之外, 这篇博客: 采用首次适应算法实现动态分区分配过程的模拟中的 程序源代码 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include <stdio.h>
    #include <stdlib.h>
    
    enum isAllocated{yes, no};		// 是否分配
    
    typedef struct Node {
    	int id;						// 作业号(如果是未分配的空闲分区,则为-1)
    	int start;					// 起始地址
    	int length;					// 大小
    	enum isAllocated isallocated;	// 是否分配
    	struct Node* next;			// 指向后面的Node
    	struct Node* prev;			// 指向前面的Node
    }Node;
    
    Node* head;						// 链表的头指针
    
    // 打印菜单
    void printMenu() {
    	
    	printf("\n1. 申请内存\n");
    	printf("2. 释放内存\n");
    	printf("0. 退出\n");
    	printf("请选择:");
    }
    
    // 初始化(新建一个和内存相同大小的空闲结点)
    void init(int capacity) {
    	Node* p = (Node*)malloc(sizeof(Node));		// 给新结点开辟空间
    	p->id = -1;
    	p->start = 0;
    	p->length = capacity;
    	p->isallocated = no;
    	p->prev = NULL;
    	p->next = NULL;
    
    	head = p;
    }
    
    // 打印空闲分区
    void printSpare() {
    	Node* p = head;
    	printf("空闲分区如下:\n起始地址\t长度\n---------------------\n");
    	while (p != NULL) {
    		if (p->isallocated == no) {
    			printf("%d\t\t%d\n", p->start, p->length);
    		}
    		p = p->next;
    	}
    }
    
    // 申请内存
    void getMemory() {
    	int id, size;
    	Node* p;
    	printf("请输入作业号和要申请的内存大小:");
    	scanf("%d%d", &id, &size);
    
    	p = head;
    	while (p != NULL) {
    		// 当找到一块长度大于所需空间的空闲分区时
    		if (p->isallocated == no && p->length > size) {
    			// 首先新建一个结点
    			Node* newNode = (Node*)malloc(sizeof(Node));
    			newNode->id = id;
    			newNode->length = size;			// 新结点的长度即所需空间的大小
    			newNode->isallocated = yes;
    			newNode->start = p->start;		// 新结点的起始地址即空闲分区的起始地址
    			p->start += size;				// 空闲分区的起始地址修改为新结点的末尾
    			p->length -= size;				// 空闲分区的长度做相应的修改
    			// 判断这块空闲分区是不是第一块分区
    			if (p != head) {
    				newNode->prev = p->prev;
    				p->prev->next = newNode;
    				newNode->next = p;
    				p->prev = newNode;
    			}
    			else {
    				newNode->prev = NULL;
    				newNode->next = p;
    				p->prev = newNode;
    				head = newNode;
    			}
    			break;
    		}	// 当找到一块长度恰好等于所需空间的空闲分区时
    		else if (p->isallocated == no && p->length == size) {
    			p->id = id;				// 直接修改作业号
    			p->isallocated = yes;
    			break;
    		}
    		p = p->next;
    	}
    
    	if (p == NULL) {
    		printf("没有足够的内存可以分配了!\n");
    	}
    }
    
    // 释放内存
    void returnMemory() {
    	int id;
    	Node* p;
    	printf("请输入要释放内存的作业号:");
    	scanf("%d", &id);
    
    	p = head;
    	while (p != NULL) {
    		// 根据作业号查找要释放的作业
    		if (p->id == id) {
    			p->id = -1;
    			p->isallocated = no;
    			// 如果此作业前面还有空闲分区,则与之合并
    			if (p->prev != NULL && p->prev->isallocated == no) {
    				p->start = p->prev->start;
    				p->length += p->prev->length;
    				p->prev = p->prev->prev;
    				p->prev->next = p;
    			}
    			// 如果此作业后面还有空闲分区,则与之合并
    			if (p->next != NULL && p->next->isallocated == no) {
    				p->length += p->next->length;
    				p->next = p->next->next;
    				p->next->prev = p;
    			}
    			break;
    		}
    		p = p->next;
    	}
    
    	if (p == NULL) {
    		printf("您输入的作业号不存在!\n");
    	}
    }
    
    int main() {
    	int option;			// 用户选择的选项
    	int capacity;		// 内存容量
    
    	printf("请先输入内存的容量:");
    	scanf("%d", &capacity);
    	init(capacity);		// 根据内存容量进行初始化
    	printSpare();
    
    	while (1) {
    		printMenu();			// 打印菜单
    		scanf("%d", &option);	// 输入选项
    		switch (option)			// 判断选项
    		{
    		case 1:
    			getMemory();		// 申请内存
    			break;
    		case 2:
    			returnMemory();		// 释放内存
    			break;
    		case 0:					// 退出
    			return 0;
    		default:
    			break;
    		}
    		printSpare();		// 打印空闲分区
    	}
    	return 0;
    }
    
    
  • 您还可以看一下 纪佳琪老师的机器学习之聚类、主成分分析理论与代码实践课程中的 协方差矩阵的特征值分解算法代码实现小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^