07
#include <iostream>
#include <iomanip> // 头文件用于控制输出格式
using namespace std;int main() {const int n = 5; // 等级个数double grade[n] = {4.0, 3.0, 2.0, 1.0, 0.0}; // 每个等级对应的分数string input;while (getline(cin, input)) { // 读入一行输入数据double total_grade = 0; // 总分数int total_courses = 0; // 总课程数bool invalid_input = false; // 是否有非法输入int len = input.length();for (int i = 0; i < len; i += 2) { // 每两个字符为一门课程char c = input[i];int idx;if(c == 'A')idx=0;else if (c == 'B')idx=1;else if (c == 'C')idx=2; else if (c == 'D')idx=3;else if(c == 'F')idx=4;else {invalid_input = true;break;}total_grade += grade[idx]; // 累计总分数total_courses++; // 累计总课程数}if (invalid_input) {cout << "Unknown" << endl;} else {double gpa = total_grade / total_courses; // 计算平均绩点cout << fixed << setprecision(2) << gpa << endl; // 输出结果,保留两位小数}}return 0;
}
这里是读取两个字符为一门课程,因为还有空格。
fixed 是 头文件中的一个输出格式控制符,用于指定浮点数的输出格式。当使用 fixed 后,浮点数将以固定的小数位数进行输出。
在这段代码中,cout << fixed << setprecision(2) << gpa << endl; 的意思是将 gpa 输出为一个小数点后保留两位的浮点数。即使 gpa 是整数,也会按照保留两位小数的格式输出。
grade = [4.0, 3.0, 2.0, 1.0, 0.0] # 每个等级对应的分数while True:try:input_str = input() # 读入一行输入数据if not input_str: # 如果输入为空,则退出循环breaktotal_grade = 0 # 总分数total_courses = 0 # 总课程数invalid_input = False # 是否有非法输入for i in range(0, len(input_str), 2): # 每两个字符为一门课程c = input_str[i]if c == 'A':idx = 0elif c == 'B':idx = 1elif c == 'C':idx = 2elif c == 'D':idx = 3elif c == 'F':idx = 4else:invalid_input = Truebreaktotal_grade += grade[idx] # 累计总分数total_courses += 1 # 累计总课程数if invalid_input:print("Unknown")else:gpa = total_grade / total_courses # 计算平均绩点print('{:.2f}'.format(gpa)) # 输出结果,保留两位小数except:break
08
#include <iostream>
using namespace std;int main()
{int n;while(cin>>n){if(n==0)break;else{int a[n];int sum=0;for(int i = 0;i<n;i++){cin>>a[i];sum = a[i]+sum;}int c=0;c = sum / n;int sum1=0;for(int j = 0;j<n;j++){if(a[j]>c){a[j]=a[j]-c;}elsea[j]=0;sum1=a[j]+sum1;}cout<<sum1<<endl;cout<<endl;}}return 0;
}
while True:try:n = int(input())ls = input().split()nums=list(map(int,ls))ans = sum(nums)avg = ans//nsum1 = 0for i in range(n):if nums[i] > avg:nums[i]=nums[i]-avgelse: nums[i]=0sum1 = nums[i]+sum1print(sum1)print()except:break
将计算平均值的变量名改为 avg,并使用整除符号 // 来确保平均值是整数。另外,在比较每个教室高度差时,我们使用原始数据列表 nums 进行比较,而不是 ls 列表中的元素。
09
#include <iostream>
using namespace std;int main()
{string s;while(getline(cin,s)){int sum = 0;for(int i = 0 ;i<s.size();i++){int num = s[i] - '0';if ((num %2)==0)sum=sum+num;}cout<<sum<<endl;cout<<endl;}return 0;
}
while True:try:s = input().strip()if not s:break # 如果输入为空,则退出循环sums = 0for c in s:if c.isdigit() and int(c) % 2 == 0: # 判断字符是否为数字和是否为偶数sums += int(c)print(sums)print()except:break
10
#include <iostream>
using namespace std;int main()
{int M,K;int n;int day;while(cin>>M>>K){int m;if(M==K&&M==0){break;}else{n = M/K;//充值送的天数 奖励的 4day = n+M;//4+13=17m = n+M%K;//剩余话费+奖励的 4+1while(m>=K){day = day+m/K;//1+17+1m = m/K+m%K; //1+2 //1+0}cout<<day<<endl;}}return 0;
}
while True:try:M,K = map(int,input().split(' '))if M==K==0:breakelse:day = M+M//K #13+4=17m = M%K+M//K #剩下的钱 1+4while(m>=K):day = day+m//K #17+1 m = m//K+m%K #1+2print(day)except:break