成绩计划问题 [英] Grade Program Question

查看:40
本文介绍了成绩计划问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在做一个书中练习的程序。关键在于创建一个程序,该程序将从用户那里获取数字等级并将其转换为

字母等级(是的,非常简单)。我尝试将while循环合并到

让程序继续运行,这样用户可以继续输入成绩

来获取字母数字,但是我收效甚微,只是保持不变创造

无限循环。我的问题是:


我怎么能修改我的程序来读取输入的最后一个字母并添加+

或 - 到字母等级的末尾..

1-3 = -

4-6 =< blank>

7-9 = +


到目前为止,这是我的程序:


#include< stdio.h>

#include< string.h> < br $>
main()

{

int letter_grade;

int numeric_grade;

int等级[100];


(无效)printf("输入数字等级:");

(无效)fgets(等级,sizeof(等级),stdin);

(无效)sscanf(等级,%d,& numeric_grade);


if(numeric_grade< = 60)

letter_grade =" F"

if(numeric_grade> 60&& numeric_grade< = 70)

letter_grade =" D";

if(numeric_grade> 70&& numeric_grade< = 80)

letter_grade =" C";

if(numeric_g rade> 80&& numeric_grade< = 90)

letter_grade =" B";

if(numeric_grade> 90&& numeric_grade< = 100)

letter_grade =" A";


(无效)printf(信用等级为:%s \ n,letter_grade);

}

---

外发邮件已通过无病毒验证。

由AVG反病毒系统检查( http://www.grisoft.com)

版本:6.0.515 /病毒数据库:313 - 发布日期:9/1/2003

解决方案



" Henry" <他***** @ knology.net>在消息中写道

news:vl ************ @ corp.supernews.com ...

我正在做这个程序在一本书中锻炼。关键在于
创建一个程序,该程序将从用户获取数字等级并将其转换为
字母等级(是的非常简单)。我试图结合while循环来保持程序连续运行,这样用户可以继续输入
等级来获得字母编号,但是我没有成功,只是不断创建
无限循环。我的问题是:

如何修改我的程序来读取输入的最后一个字母,并在字母等级的末尾添加
+或 -
1- 3 = -
4-6 =< blank>
7-9 = +

这是我的程序到目前为止:

#include< ; stdio.h>
#include< string.h>
main()


它应该是 int main()"。如果C书写main(),那就错了,

它不符合ANSI标准。


{
int letter_grade;
int numeric_grade;
int grade [100];

(void)printf(" Enter the Numeric grade:");
(void )fgets(grade,sizeof(grade),stdin);
(void)sscanf(grade,"%d",& numeric_grade);


(无效)是不必要的,只是令人困惑。你可以写


printf(输入数字等级:);

得到(等级,sizeof(等级),stdin);

sscanf(grade,"%d",& numeric_grade);

if(numeric_grade< = 60)
letter_grade =" F" ;;


F是字符串文字,你的letter_grade是是一个整数。你只能用



letter_grade =''F'';

if(numeric_grade> 60&& numeric_grade< = 70)
letter_grade =" D" ;;
if(numeric_grade> 70&& numeric_grade< = 80)
letter_grade =" C" ;;
if(numeric_grade> 80&& numeric_grade< = 90)
letter_grade =" B" ;;
if(numeric_grade>&& numeric_grade< = 100)
letter_grade =" A" ;;

(void)printf(" The Letter grade is :%s \ n",letter_grade);
}


你不能将letter_grade用于%s。请记住,letter_grade不是字符串。

你可以写


printf(字母等级是:%c \ n,letter_grade);



-

Jeff


Jeff写道:< blockquote class =post_quotes>" Henry" <他***** @ knology.net>在消息中写道
新闻:vl ************ @ corp.supernews.com ...

我正在做这个程序在一本书中锻炼。关键是要创建

一个程序,它将取一个用户的数字等级并将其转换为



a < br>

字母等级(是的,非常容易)。我尝试将while循环结合起来以保持程序不断运行,这样用户可以继续输入



来获取字母编号,但我没有成功,只是不断创建无限循环。我的问题是:

如何修改程序以读取输入的最后一个字母并添加



或 - 到字母等级的末尾..
1-3 = -
4-6 =< blank>
7-9 = +

#include< stdio.h>
#include< string.h>
main()



它应该是 int main()"。如果C书写main(),那就错了,
它不符合ANSI标准。

{
int letter_grade;
int numeric_grade;
int grade [100];

(void)printf(" Enter the Numeric grade:");
(void)fgets(等级) ,sizeof(grade),stdin);
(void)sscanf(grade,"%d",& numeric_grade);



(void)是不必要的,这简直令人困惑。你可以写

printf(输入数字等级:);
得到(等级,sizeof(等级),stdin);




显然你的意思是:fgets(...);

sscanf(等级,%d,& numeric_grade);

if(numeric_grade< = 60)
letter_grade =" F";



" F"是字符串文字,你的letter_grade是是一个整数。你只能写

letter_grade =''F'';

if(numeric_grade> 60&& numeric_grade< = 70)
letter_grade =" D";



if(numeric_grade> 70&& numeric_grade< = 80)
letter_grade =" C";



if(numeric_grade> 80&& numeric_grade< = 90)
letter_grade =" B";



if(numeric_grade> 90&& numeric_grade< = 100) letter_grade =" A" ;;

(void)printf(字母等级为:%s \ n,letter_grade);
}



你不能将letter_grade用于%s。请记住,letter_grade不是字符串。
你可以写

printf(字母等级是:%c \ nn,letter_grade);




HTH,

--ag


ps printf上的void命令,等等。人。有时需要使用
过于激进的类似lint的工具停止抱怨因为

丢弃的结果值 - 并且,如OR状态,没有其他

理由。


-

Artie Gold - 德克萨斯州奥斯汀


>它应该是 int main()"。如果C书写main(),那就错了,

它不符合ANSI标准。


即使在K& R第二版中它还没有提及关于int的任何内容

main()

(无效) )是不必要的,这只是令人困惑。你可以写

printf(输入数字等级:);
得到(等级,sizeof(等级),stdin);
sscanf(等级," %d",& numeric_grade);


我只是在做什么实用C告诉我......


" F"是字符串文字,你的letter_grade是是一个整数。你只能写


letter_grade =''F'';


我尝试了两种方式,两种方式都有效。

你不能将letter_grade用于%s。请记住,letter_grade不是字符串。
你可以写

printf(字母等级是:%c \ nn,letter_grade);




不是由字符组成的字符串吗?从技术上讲,两种方式都是正确的吗?

.....

---

外发邮件已通过无病毒验证。

由AVG反病毒系统检查( http://www.grisoft.com)

版本:6.0.515 /病毒库:313 - 发布日期:9/1/2003


I was doing this program for an exercise in a book. The point was to create
a program that would take a numerical grade from a user and convert it to a
letter grade (yeah really easy). I tried to incorporate the while loop to
keep the program running continuously so the user could keep entering grades
to get the letter number, but I had little success and just kept creating
infinite loops. My question is:

How could I modify my program to read the last letter of the input and add +
or - to the end of the letter grade..
1-3 = -
4-6 = <blank>
7-9 = +

Here is my program so far:

#include <stdio.h>
#include <string.h>
main()
{
int letter_grade;
int numeric_grade;
int grade[100];

(void)printf("Enter the Numeric grade: ");
(void)fgets(grade, sizeof(grade), stdin);
(void)sscanf(grade, "%d", &numeric_grade);

if (numeric_grade <= 60)
letter_grade = "F";
if (numeric_grade > 60 && numeric_grade <= 70)
letter_grade = "D";
if (numeric_grade > 70 && numeric_grade <= 80)
letter_grade = "C";
if (numeric_grade > 80 && numeric_grade <= 90)
letter_grade = "B";
if (numeric_grade > 90 && numeric_grade <= 100)
letter_grade = "A";

(void)printf("The Letter grade is: %s\n", letter_grade);
}
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.515 / Virus Database: 313 - Release Date: 9/1/2003

解决方案


"Henry" <he*****@knology.net> wrote in message
news:vl************@corp.supernews.com...

I was doing this program for an exercise in a book. The point was to create a program that would take a numerical grade from a user and convert it to a letter grade (yeah really easy). I tried to incorporate the while loop to
keep the program running continuously so the user could keep entering grades to get the letter number, but I had little success and just kept creating
infinite loops. My question is:

How could I modify my program to read the last letter of the input and add + or - to the end of the letter grade..
1-3 = -
4-6 = <blank>
7-9 = +

Here is my program so far:

#include <stdio.h>
#include <string.h>
main()
It should be " int main() ". If you C book write "main()", it is wrong and
it does not follow the ANSI standard.

{
int letter_grade;
int numeric_grade;
int grade[100];

(void)printf("Enter the Numeric grade: ");
(void)fgets(grade, sizeof(grade), stdin);
(void)sscanf(grade, "%d", &numeric_grade);
The (void) is unnecessary, it is just confusing. You can write

printf("Enter the Numeric grade: ");
gets(grade, sizeof(grade), stdin);
sscanf(grade, "%d", &numeric_grade);

if (numeric_grade <= 60)
letter_grade = "F";
"F" is string literal, and your "letter_grade" is an integer. You can only
write

letter_grade = ''F'';
if (numeric_grade > 60 && numeric_grade <= 70)
letter_grade = "D"; if (numeric_grade > 70 && numeric_grade <= 80)
letter_grade = "C"; if (numeric_grade > 80 && numeric_grade <= 90)
letter_grade = "B"; if (numeric_grade > 90 && numeric_grade <= 100)
letter_grade = "A";

(void)printf("The Letter grade is: %s\n", letter_grade);
}
You can''t use letter_grade for %s. Remember, letter_grade IS NOT a string.
You can write

printf("the letter grade is: %c\n", letter_grade);


--
Jeff


Jeff wrote:

"Henry" <he*****@knology.net> wrote in message
news:vl************@corp.supernews.com...

I was doing this program for an exercise in a book. The point was to
create

a program that would take a numerical grade from a user and convert it to



a

letter grade (yeah really easy). I tried to incorporate the while loop to
keep the program running continuously so the user could keep entering



grades

to get the letter number, but I had little success and just kept creating
infinite loops. My question is:

How could I modify my program to read the last letter of the input and add



+

or - to the end of the letter grade..
1-3 = -
4-6 = <blank>
7-9 = +

Here is my program so far:

#include <stdio.h>
#include <string.h>
main()


It should be " int main() ". If you C book write "main()", it is wrong and
it does not follow the ANSI standard.

{
int letter_grade;
int numeric_grade;
int grade[100];

(void)printf("Enter the Numeric grade: ");
(void)fgets(grade, sizeof(grade), stdin);
(void)sscanf(grade, "%d", &numeric_grade);


The (void) is unnecessary, it is just confusing. You can write

printf("Enter the Numeric grade: ");
gets(grade, sizeof(grade), stdin);



Obviously you meant: fgets(...);
sscanf(grade, "%d", &numeric_grade);

if (numeric_grade <= 60)
letter_grade = "F";


"F" is string literal, and your "letter_grade" is an integer. You can only
write

letter_grade = ''F'';

if (numeric_grade > 60 && numeric_grade <= 70)
letter_grade = "D";



if (numeric_grade > 70 && numeric_grade <= 80)
letter_grade = "C";



if (numeric_grade > 80 && numeric_grade <= 90)
letter_grade = "B";



if (numeric_grade > 90 && numeric_grade <= 100)
letter_grade = "A";

(void)printf("The Letter grade is: %s\n", letter_grade);
}


You can''t use letter_grade for %s. Remember, letter_grade IS NOT a string.
You can write

printf("the letter grade is: %c\n", letter_grade);



HTH,
--ag

p.s. The cast to `void'' on printf, et. al. is sometimes necessary to
make overly aggressive lint-like tools stop complaining because of
the discarded result value -- and, as the OR states, for no other
reason.

--
Artie Gold -- Austin, Texas


> It should be " int main() ". If you C book write "main()", it is wrong and

it does not follow the ANSI standard.
Well even in K&R second edition it has yet to mention anything about int
main()
The (void) is unnecessary, it is just confusing. You can write

printf("Enter the Numeric grade: ");
gets(grade, sizeof(grade), stdin);
sscanf(grade, "%d", &numeric_grade);
I''m just doing what "Practical C" is telling me to..

"F" is string literal, and your "letter_grade" is an integer. You can only write

letter_grade = ''F'';

I tried it both ways , and both ways worked.

You can''t use letter_grade for %s. Remember, letter_grade IS NOT a string.
You can write

printf("the letter grade is: %c\n", letter_grade);



Isn''t a string made up of chars? So technically both ways would be right?
.....
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.515 / Virus Database: 313 - Release Date: 9/1/2003


这篇关于成绩计划问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆