| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1244 人关注过本帖
标题:大家来看看这段程序错在哪里。
只看楼主 加入收藏
Tansion2010
Rank: 1
等 级:新手上路
帖 子:38
专家分:8
注 册:2010-4-24
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:11 
大家来看看这段程序错在哪里。
程序目的:输入百分制成绩,要求输入成绩登记'A'、'B'、'C'、'D'、'E'。90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分一下为'E'。
#include<stdio.h>
void main()
{
    float mark;
    int mark1;
    scanf("%f",&mark);
    mark1=int(mark);
    switch(mark1)
    {
    case mark1>=90:printf('A');break;
    case mark1>=80 && mark1<=89:printf('B');break;
    case mark1>=70 && mark1<=79:printf('C');break;
    case mark1>=60 && mark1<=69:printf('D');break;
    default:printf('E');break;
    }
}
结果显示了错误:
--------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
E:\C++临时文件\Cpp1.cpp(10) : error C2051: case expression not constant
E:\C++临时文件\Cpp1.cpp(10) : error C2664: 'printf' : cannot convert parameter 1 from 'const char' to 'const char *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
E:\C++临时文件\Cpp1.cpp(11) : error C2051: case expression not constant
E:\C++临时文件\Cpp1.cpp(11) : error C2664: 'printf' : cannot convert parameter 1 from 'const char' to 'const char *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
E:\C++临时文件\Cpp1.cpp(12) : error C2051: case expression not constant
E:\C++临时文件\Cpp1.cpp(12) : error C2664: 'printf' : cannot convert parameter 1 from 'const char' to 'const char *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
E:\C++临时文件\Cpp1.cpp(13) : error C2051: case expression not constant
E:\C++临时文件\Cpp1.cpp(13) : error C2664: 'printf' : cannot convert parameter 1 from 'const char' to 'const char *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
E:\C++临时文件\Cpp1.cpp(14) : error C2664: 'printf' : cannot convert parameter 1 from 'const char' to 'const char *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
E:\C++临时文件\Cpp1.cpp(15) : warning C4065: switch statement contains 'default' but no 'case' labels
Error executing cl.exe.

Cpp1.exe - 9 error(s), 1 warning(s)
搜索更多相关主题的帖子: 60分 90分 default include 
2010-05-10 18:39
qwertyufff
Rank: 1
等 级:新手上路
帖 子:6
专家分:6
注 册:2010-5-7
收藏
得分:0 
printf("A");不是printf(‘a')
2010-05-10 18:54
qwertyufff
Rank: 1
等 级:新手上路
帖 子:6
专家分:6
注 册:2010-5-7
收藏
得分:6 
#include<stdio.h>
void main()
{
    float mark;
    int mark1;
    scanf("%f",&mark);
    mark1=(int)mark;
    switch(mark1/10)
    {
    case 9: printf("A");break;
    case 8: printf("B");break;
    case 7: printf("C");break;
    case 6: printf("D");break;
    default:printf("E");break;
    }
}
仔细看了一下 楼主的问题不止一个,自己对照看下,switch不能进行逻辑判断 要么你就用 if else
2010-05-10 19:09
chichu
Rank: 2
来 自:安徽阜阳
等 级:论坛游民
帖 子:71
专家分:89
注 册:2010-4-14
收藏
得分:2 
强制转换是(int)mark

有了目标才有动力!!!
2010-05-10 20:26
傲剑
Rank: 2
等 级:论坛游民
帖 子:51
专家分:28
注 册:2009-11-2
收藏
得分:0 
强制转换在类型那加() case 后只能是常量表达式  &&不能连接2个case,可以用case 常量:case 常量:表示,一个case后不加;  参看3楼的理解下
2010-05-10 21:01
yc2575757
Rank: 7Rank: 7Rank: 7
来 自:北京
等 级:黑侠
威 望:1
帖 子:113
专家分:522
注 册:2010-5-7
收藏
得分:0 
#include<stdio.h>
void main()
{
    float mark = 0;
    int mark1;
    scanf("%f",&mark);
    mark1=(int)mark;
    switch(mark1/10)
    {
    case 10:printf("A\n");break; //防止出现100分为E的情况
    case 9: printf("A\n");break;
    case 8: printf("B\n");break;
    case 7: printf("C\n");break;
    case 6: printf("D\n");break;
    default:printf("E\n");break;
    }
}
2010-05-10 21:14
childrush
该用户已被删除
收藏
得分:2 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-10 21:57
maivi
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2010-5-10
收藏
得分:0 
2楼说的没有错 楼主可以参考下
2010-05-10 22:18
baiyyddd
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:33
专家分:61
注 册:2010-5-10
收藏
得分:0 
受教!
2010-05-10 22:34
aitajiujiage
Rank: 2
等 级:论坛游民
帖 子:21
专家分:34
注 册:2010-5-10
收藏
得分:0 
#include<stdio.h>
mian()
{float mark;
int mark1;
clrscr();
printf("请您输入mark的值:");
scanf("%f",&mark);
mark1=mark/10;
switch(mark1)
{case 10:
case 9:printf("您输入的分数属于A等级!");break;
case 8:printf("您输入的分数属于B等级!");break;
case 7:printf("您输入的分数属于C等级!");break;
case 6:printf("您输入的分数属于D等级!");break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:printf("您输入的分数属于E等级!");break;
default:printf("对不起!你输入有误!");
}
}
你的程序有很多的小错误,我给的你可以参考一下!
2010-05-10 22:47
快速回复:大家来看看这段程序错在哪里。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037409 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved