这是我用if语句编的,但是运行以后感觉else if根本没有起到作用,不管我输入多少,...
#include <stdio.h>void main()
{
intscore;
printf("输入成绩:");
scanf("score=%d",&score);
if (score<60)
{
printf("E\n");
}
else if((score>60||score==60) && score < 70)
{
printf("D\n");
}
else if(score<80)
{
printf("C\n");
}
} 这题运行不出来是因为scanf函数参数给错了,建议楼主理解一下if.... else if ...else ...的用法。这段代码可以写得更简洁些。当然如果score分段是确定的,建议使用switchcase 语句写。
首先scanff函数
scanf的函数申明是:int scanf(const char *format,...);
其调用形式为: scanf("<格式说明字符串>",<变量地址>);变量地址要求有效,并且与格式说明的次序一致。
格式化说明字符串包括%d 十进制整数,%s字符串等
应该是scanf("%d",&score)
程序的修改版本一:
//使用ifelse if else
/*
使用if else if语句时,程序顺序执行,当遇到一个条件判断成功后,其他的语句不在进行判断直接跳出if else语句结构。如果前面的条件判断为假,则将顺序判断,直到遇到一个条件为真的分支或者到了 最后一个分支 (分支也为假),如果有符合条件的分支,则执行该分支,否则,执行到最后一个判断分支判断后,退出if else if结构。
*/
#include <stdio.h>
void main()
{
intscore;
printf("输入成绩:");
scanf("%d",&score);
switc
if (score<60)
{
printf("E\n");
}
else if( score < 70)//程序能运行到第二句说明if 后面的语句的结果为false表明:score>=60
{
printf("D\n");
}
else if(score<80)
{
printf("C\n");
}
}
使用switch case 语句
#include <stdio.h>
void main()
{
intscore;
printf("输入成绩:");
scanf("%d",&score);
swtich (score)
{
case score <60: printf("E\n"); break;
case score<70: printf("D\n"); break;
case score<80: printf("C\n"); break;
default : break;
}
}
正确答案
#include <stdio.h>
void main()
{
intscore;
printf("输入成绩:");
scanf("%d",&score);
if (score<60)
{
printf("E\n");
}
else if((score>=60) && score < 70)
{
printf("D\n");
}
else if(score>=70)
{
printf("C\n");
}
} (score>60||score==60) && score < 70 改成 score < 70 就行, 前边的重复了但没错。 最后的else if应该直接 写成 else 最后个else if 把前面的包括了,逻辑有问题 #include <stdio.h>
int main()
{
intscore;
printf("输入成绩:");
scanf("%d",&score);
if (score<60)
{
printf("E\n");
}
else if((score>60||score==60) && score < 70)
{
printf("D\n");
}
else if(score<80)
{
printf("C\n");
}
}就改了下scanf 就行了。功能是行的。 //:lol:蹭个位置;
#include<stdio.h>
int fun(int score);
int fun(int score){
printf("接收数据 %d;\t",score);
if (score<60){
printf("score<60; E\n\n");
return 0;
}
else if((score>=60)&&(score < 70)){
printf("score>=60 && score <70 ;D\n\n");
return 0;
}
else if(score<80){
printf("score <80 C\n\n");
return 0;
}
else {
printf("没有复合条件的的数据; \n\n\n");
return -1;
}
}
int main(void) {
/*intscore;
printf("输入成绩:score=");
scanf("%d",&score);
*/
int ret;
fun(59);
fun(60);
fun(67);
fun(79);
ret=fun(100);
return ret;
}
scanf("%d",&score);
把输入语句改了就OK了! 建议用switch语句 我觉得后面还会有b和a 逻辑没错,但表达方面有点问题 lark 发表于 2015-6-27 20:14
//蹭个位置;
有个问题。score 是你在函数中定义的局部变量,可以拿到MAIN 中来用么? 楼主,这个是我修改过的;
#include <stdio.h>
#include <stdlib.h>
intmain(void){
intscore=0;
printf(";输入你的成绩(score):_");
scanf("%d",&score);
if (score<60){
printf("你的得分是:E\n");
getchar();
}
else if(score>=60 && score <70){
printf("你的得分是:D\n");
getchar();
}
else if(score>=70 && score<80){
printf("你的得分是:C\n");
getchar();
}
else {
printf("\n数据异常 或,输入数值超出验证范围\n请重式查询;\n");
getchar();
exit(0);
}
return 0;
}
这个是你原本的,我只做了注释:
#include <stdio.h>
/*if..else if...elsef if..else 格式
*她和if..if..else语句的差别在于:
*if..else if..else如果前面的执行了后面的就算符合条件也不会再执行
*if..if..else 就算前面的执行了后面的if只要符合条件还是会执行;
*共同点呢,都是如果上面的都不符合条件,才用else;
*/
void main()//建议使用 int main(void)格式;
{
intscore;
printf("输入成绩:");
scanf("score=%d",&score);//这个在下面的一处解释;
printf("score=%d ;\n",score);
if (score<60)
{
printf("E\n");
}
else if((score>60||score==60) && score < 70)
//(score>60 || sore==60)有些繁琐了。直接(socre>=60);
//修改后的 if(score>=60 && socre <70){...}
{
printf("D\n");
}
else if(score<80)
//楼主这里永远不会执行的,看我给你的else if语句的解释;
//修改后的 if(score>=70 && score <80)
{
printf("C\n");
}
//建议楼主加个 return 0;如果是int main(void)的话;
}
//最后呢,楼主应该学会使用网络,可以去 各种百科查询下各种语句和函数的解释;
//如果楼主英语不错的话,可以去msdn看看或者某些开源的论坛;
然后是关于你的scanf();
#include <stdio.h>
void main(){
intscore=0;
printf("输入成绩:");
scanf("score=%d",&score);
printf("score的值是:%d ;\n",score);
return 0;
}
//[截图]对于楼主的scanf()函数;楼主在控制台应该这么写才行,额,似乎有些麻烦!
好吧,这个运行结果看这里
http://bbs.fishc.com/home.php?mod=space&uid=271302&do=album&picid=6571
lark 发表于 2015-6-27 20:14
//蹭个位置;
哦,你好。我以为是楼主回复,然后又答给楼主了。后来发现是你回复的,==
我也不清楚是啥时候回复的这个主题,不过我将代码重写了一遍,你可以看一下,还有我今天给楼主修改的;
#include<stdio.h>
void fun(int score){
printf("接收数据是 %d;\t",score);
if (score<60){
printf("score<60; \n\t成绩等级:E \t");
}
else if(score>=60&&score < 70){
printf("score>=60 && score <70");
printf("score>=60&&score < 70; \n\t成绩等级:D\t");
}
else if(score>=70&& score <80){
printf("score>=70&& score <80; \n\t成绩等级:C \t");
}
else {
printf("没有复合条件的的数据; \t");
}
printf("运行结束;\n\n");
}
int main(void){
/*intscore;
printf("输入成绩:score=");
scanf("%d",&score);*/
fun(59);
fun(60);
fun(67);
fun(79);
fun(199);
getchar();
return 0;
}
小伪 发表于 2015-8-5 15:28
有个问题。score 是你在函数中定义的局部变量,可以拿到MAIN 中来用么?
哦,你好。我以为是楼主回复,然后又答给楼主了。后来发现是你回复的,==
我也不清楚是啥时候回复的这个主题,不过我将代码重写了一遍,你可以看一下,还有我今天给楼主修改的;
#include<stdio.h>
void fun(int score){
printf("接收数据是 %d;\t",score);
if (score<60){
printf("score<60; \n\t成绩等级:E \t");
}
else if(score>=60&&score < 70){
printf("score>=60 && score <70");
printf("score>=60&&score < 70; \n\t成绩等级:D\t");
}
else if(score>=70&& score <80){
printf("score>=70&& score <80; \n\t成绩等级:C \t");
}
else {
printf("没有复合条件的的数据; \t");
}
printf("运行结束;\n\n");
}
int main(void){
/*intscore;
printf("输入成绩:score=");
scanf("%d",&score);*/
fun(59);
fun(60);
fun(67);
fun(79);
fun(199);
getchar();
return 0;
}
小伪 发表于 2015-8-5 15:28
有个问题。score 是你在函数中定义的局部变量,可以拿到MAIN 中来用么?
你问的是函数 fun(int score)吧,这个,要肿么解释呢,
好吧,这个问题在C语言的这函数一节,涉及函数的数值的传递;
在int fun(int score){..}中,其实socre就是一个int类型的局部变量;除了数据类型声明符号int外,score你可以改成任何自定义的标识符; 改成cat也行,dog也行,people也行,反正它是代表从其他函数(比如main)传递过来的值,
看fun(79);或者fun(33);fun(110);
fun();括号里面可以是任何数值,但是记得,声明的时候是int,所以只能是int,当然char和浮点也可以,但是不建议的;
fun(119);的意思就是将119这个数值传递到fun函数里面;
int fun(int score){//没错,就是将119这个数值传递到fun这个函数里面;然后呢使用score代表119这个数值
... //在这里,socre就是119,如果是int fun(int num){.....} ;那么num就是119;
} //返回值是int ,因为 int fun(int score),在fun之前是int哦; int main(void )的返回值就是int;char character(void);返回值就是char;
我并没有在main()函数中定义过变量标识符score;socre是我利用fun()函数在main()函数中 ,将数值119传递到fun函数中的代表119的标识符;
fun(119) -> int fun(int score){}-> score ==119;//因为是局部的score只在fun()函数内表示119;
而119你可以替换成任何数字;120,8888,123; fun(120);fun(234)
你可以看看 函数传递 相关的知识点;
楼主的scanf("score=%d",&score);可以改为scanf("%d",&score);其实我也不知道为什么不能有score= zhangbin_hunan 发表于 2015-7-1 10:53
这题运行不出来是因为scanf函数参数给错了,建议楼主理解一下if.... else if ...else ...的用法。这段代 ...
想问一下,你这switch语句能运行吗 barry_2012 发表于 2015-8-16 12:57
想问一下,你这switch语句能运行吗
你试试就知道了呀 . 如果由问题欢迎指正。 #include <stdio.h>
int main()
{
intscore;
printf("输入成绩:");
scanf("%d",&score);
if (score<60)
{
printf("E\n");
}
else if((score>=60) && score < 70)
{
printf("D\n");
}
else if(score>=70)
{
printf("C\n");
}
return 0;
}
页:
[1]