作业帮 > 综合 > 作业

C语言 ACM#include #include int main(){int i=0,c=1,d=0;char str

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 08:33:15
C语言 ACM
#include
#include
int main(){
int i=0,c=1,d=0;char strl[50];float sum=0;
while(gets(strl))
{
while(strl[i]!='\0')
{
if(strl[i]=='A'){
sum+=4; d++; i++;
}
if(strl[i]=='B'){
sum+=3; d++; i++;
}
if(strl[i]=='C'){
sum+=2; d++; i++;
}
if(strl[i]=='D'){
sum+=1; d++; i++;
}
if(strl[i]=='F'||strl[i]==' '){
sum+=0; d++; i++;
}
if(strl[i]70)
{
printf("Unknown\n");
c=0; i++; break;
}
}
if(c!=0){
printf("%.2f\n",sum/d); sum=0; d=0;
}
}
}
每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分.
输入格式
有多组测试样例.每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔.
输出
每组输出结果占一行.如果输入的大写字母都在集合{A,B,C,D,F}中,则输出对应的平均绩点,结果保留两位小数.否则,输出“Unknown”.
样例输入
A B C D F
B F F C C A
D C E F
样例输出
2.00
1.83
Unknown
请问我的程序哪里出错
C语言 ACM#include #include int main(){int i=0,c=1,d=0;char str
/*A B C D F2.00B F F C C A1.83D C E FUnknown^ZPress any key to continue*/#include <stdio.h>

int main(){
int i,flag,d;
char str[50];
float sum;
while(gets(str) != NULL) {
i = 0;
d = 0;
sum = 0;
flag = 0;
while(str[i] != '\0') {
switch(str[i]) {
case 'A' : sum += 4; break;
case 'B' : sum += 3; break;
case 'C' : sum += 2; break;
case 'D' : sum += 1; break;
case 'F' : break;
case ' ' : --d; break;
default  : flag = 1; printf("Unknown\n"); break;
}
if(flag == 1) break;
d++; i++;
}
if(flag == 0) {
if(d != 0) printf("%.2f\n",sum/d);
else printf("0.00\n");
}
}
return 0;
}