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: # 如果输入为空,则退出循环
break
total_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 = 0
elif c == 'B':
idx = 1
elif c == 'C':
idx = 2
elif c == 'D':
idx = 3
elif c == 'F':
idx = 4
else:
invalid_input = True
break
total_grade += grade[idx] # 累计总分数
total_courses += 1 # 累计总课程数
if invalid_input:
print("Unknown")
else:
gpa = total_grade / total_courses # 计算平均绩点
print('{:.2f}'.format(gpa)) # 输出结果,保留两位小数
except:
break
注意python中是用列表或者字典
grades = [4.0,3.0,2.0,1.0,0.0]
或者
grade = {‘A’: 4.0, ‘B’: 3.0, ‘C’: 2.0, ‘D’: 1.0, ‘F’: 0.0}
while True:
try:
s = input().split()
grade = {'A': 4.0, 'B': 3.0, 'C': 2.0, 'D': 1.0, 'F': 0.0}
total_courses = 0
total_grade = 0.0
flag = False
for i in range(len(s)):
if s[i] == 'A':
idx = 'A'
elif s[i] == 'B':
idx = 'B'
elif s[i] == 'C':
idx = 'C'
elif s[i] == 'D':
idx = 'D'
elif s[i] == 'F':
idx = 'F'
else:
flag = True
break
total_courses += 1
total_grade += grade[idx]
if flag:
print("Unknown")
else:
print(total_grade / total_courses)
except EOFError:
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;
}
else
a[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//n
sum1 = 0
for i in range(n):
if nums[i] > avg:
nums[i]=nums[i]-avg
else:
nums[i]=0
sum1 = nums[i]+sum1
print(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 = 0
for c in s:
if c.isdigit() and int(c) % 2 == 0: # 判断字符是否为数字和是否为偶数
sums += int(c)
print(sums)
print()
except:
break
0 的 ASCII 码是 48。
#include <iostream>
using namespace std;
int main()
{
string s;
while(getline(cin,s)){
int len;
len = s.length();
int sum1 = 0;
for (int i =0;i<len;++i)
{
if((int(s[i])%2)==0)
s[i]=s[i];
else
{
s[i] = '0';
}
sum1 = int(s[i])-48+sum1;
}
cout<<sum1<<endl;
cout<<endl;
}
return 0;
}
在用字符串转整型的时候记得-‘0’
s = list(map(int,input())) 中 input输入的都是字符串,然后把它变成列表,然后再int
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;//充值送的天数 奖励的 4
day = n+M;//4+13=17
m = n+M%K;//剩余话费+奖励的 4+1
while(m>=K)
{
day = day+m/K;//1+17+1
m = 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:
break
else:
day = M+M//K #13+4=17
m = M%K+M//K #剩下的钱 1+4
while(m>=K):
day = day+m//K #17+1
m = m//K+m%K #1+2
print(day)
except:
break
这里要用循环