一个C语言的问题,请各位指点迷津

lancking 2009-03-13 06:31:32
#include "stdio.h"
void main()
{
int k,t;
char grade;
scanf("term is a %d",k);
if(k==100)
t=9;
else
t=(k-k%10)/10;
swicth(k)
{
case 9:
case 8:grade='A';break;
case 7:grade='B';break;
case 6:grade='C';break;
case 5:grade='D';break;
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
}
printf("grade is %c\n",grade);
}

这个题的问题是给出一百分制的成绩,分别对应级别,90分以上A,80~89为B,70~79为C,60~69为D,60以下E


请问我这里编的哪个地方错了,为什么不能编译???
...全文
257 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
cutebear2008 2009-03-14
  • 打赏
  • 举报
回复
一个很简单的问题被你写得复杂了点啊...
用 if-else 不是更快吗...
duzhizj 2009-03-14
  • 打赏
  • 举报
回复
楼主switch写错了哦。
还有scanf("term is a %d",k); 也不能这样写。
printf("term is a :");scanf("%d",&k); 使用scanf输入时后面的k如果是变量则是&k,如果k表示地址则不需要&。
还有标点符号应用英文输入状态下的。
kingwu008 2009-03-14
  • 打赏
  • 举报
回复
看来前辈们的意见,很受启发啊,我这个新手还有很多地方要学啊。
kostion 2009-03-13
  • 打赏
  • 举报
回复
小心哦。
千丈布 2009-03-13
  • 打赏
  • 举报
回复
#include "stdio.h"
void main()
{
int k,t;
char grade;
scanf("term is a %d",k); //作为输入不应该如此。可以这么改printf("term is a :");scanf("%d",&k);
if(k==100)
t=9;
else
t=k/10; //这里……
swicth(t) //这里……
{
case 9:
case 8:grade='A';break;
case 7:grade='B';break;
case 6:grade='C';break;
case 5:grade='D';break;
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
}
printf("grade is %c\n",grade);
}
没有编译,认为没有问题了。
k21w4 2009-03-13
  • 打赏
  • 举报
回复
1.main 前面的Void去掉;
2.scanf("%d", &k);
2.Swicth---应该是switch; 粗心大意;
3.看你的样子是想:switch(t);
4.t=(k-k%10)/10;--逻辑不对,对的楼上给了.
lancking 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 mawl2002 的回复:]
#include <stdio.h>

void main()
{
int k,t;
char grade;
scanf("%d", &k);

if( k == 100 )
t=9;
else
t = k/10;

swicth( t )
{
case 9:
case 8:grade='A';break;
case 7:grade='B';break;
case 6:grade='C';break;
case 5:grade='D';break;
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
}

[/Quote]


谢谢这位大大,困扰了我一晚的问题终于得到解决,谢谢
sxljody 2009-03-13
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
float score;
int t;
char grade;
prinf("Please enter the score:");
scanf("%d",&score);
t=(int)score;
swicth(t/10)
{
case 10:
case 9:
case 8:grade='A';break;
case 7:grade='B';break;
case 6:grade='C';break;
case 5:grade='D';break;
default:grade='E';
}
printf("grade is %c\n",grade);
}


为什么老是说缺;呢?
请各位帮忙看看.
mawl2002 2009-03-13
  • 打赏
  • 举报
回复
#include <stdio.h>

void main()
{
int k,t;
char grade;
scanf("%d", &k);

if( k == 100 )
t=9;
else
t = k/10;

swicth( t )
{
case 9:
case 8:grade='A';break;
case 7:grade='B';break;
case 6:grade='C';break;
case 5:grade='D';break;
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
}
printf("grade is %c\n",grade);
}
lancking 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 qq27508570 的回复:]


#include "stdio.h"
void main()
{
int k,t;
char grade;
printf("term is a ");
scanf("%d", &k);
if(k==100)
t=9;
else
t=(k-k%10)/10;

switch(t)
{
case 9:
case 8:grade='A';break;
case 7:grade='B';break;
case 6:grade='C';break;
case 5:grade='D';break;
case 4:

[/Quote]


还是链接没能通过,显示 undefined symbol_prinft in module 3.c
lancking 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 TeaTimeL 的回复:]
修改代码如下:

C/C++ code
#include <stdio.h>

void main()
{
int k, t;
char grade;
scanf("%d", &k);
if(k==100)
t = 9;
else
t = k/10;
switch(t)
{
case 9:
case 8:
grade='A';
break;
case 7:
grade='B';
break;
case 6:
grade='C';
break;
case 5:
g…
[/Quote]

这位大大,编译通过了,可以链接的时候他出现了错误,显示 undefined symbol_scaf inmodule 3.c
品茶 2009-03-13
  • 打赏
  • 举报
回复
修改代码如下:

#include <stdio.h>

void main()
{
int k, t;
char grade;
scanf("%d", &k);
if(k==100)
t = 9;
else
t = k/10;
switch(t)
{
case 9:
case 8:
grade='A';
break;
case 7:
grade='B';
break;
case 6:
grade='C';
break;
case 5:
grade='D';
break;
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
default:
break;
}
printf("grade is %c\n", grade);
}


补充一个错误:
printf("grade is %c\n", grade);
LZ的逗号使用的是中文输入法的。
lancking 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 icemine 的回复:]
C/C++ code#include <stdio.h>
int main()
{
int k,t;
char grade;
printf("term is:");
scanf("%d",&k);
if (k == 100)
t = 9;
else
t = (k-k%10)/10;
switch (t)/*here*/
{
case 9: grade='A'; break;
case 8: grade='B'; break;
case 7: grade='C'; break;
case 6: grade='D'; break;
case…
[/Quote]

没有加return的时候,编译通过,可能连接有错误
加return的时候
他说程序可能没有return的价值????
qq27508570 2009-03-13
  • 打赏
  • 举报
回复


#include "stdio.h"
void main()
{
int k,t;
char grade;
printf("term is a ");
scanf("%d", &k);

if(k==100)
t=9;
else
t=(k-k%10)/10;

switch(t)
{
case 9:
case 8:grade='A';break;
case 7:grade='B';break;
case 6:grade='C';break;
case 5:grade='D';break;
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
};
printf("grade is %c\n",grade);
}
lancking 2009-03-13
  • 打赏
  • 举报
回复
你好,程序还是不能通过,晕的,还是不能编译
lancking 2009-03-13
  • 打赏
  • 举报
回复
你好,我按照你的改了,但是程序还是产生错误,不能编译。
lancking 2009-03-13
  • 打赏
  • 举报
回复
小的在这受教了,谢谢各位大大。我一定会继续加油的!!!
KevinYuen 2009-03-13
  • 打赏
  • 举报
回复
哦 只顾编译通过了 原来K不是为了输出 呵呵 失误
zhurulong123456 2009-03-13
  • 打赏
  • 举报
回复
scanf("term is a %d",&k);
switch (t)
这两处,以改正
KevinYuen 2009-03-13
  • 打赏
  • 举报
回复
1:变量没有初始化,例如最上面的
int k,t;
char grade;
替换为
int k = 0,t = 0;
char grade;

2:switch写错了

改掉后可以运行
加载更多回复(9)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧