鱼C论坛

 找回密码
 立即注册
查看: 5114|回复: 19

这是我用if语句编的,但是运行以后感觉else if根本没有起到作用,不管我输入多少,...

[复制链接]
发表于 2015-6-25 16:18:36 | 显示全部楼层 |阅读模式
1鱼币
#include <stdio.h>

void main()

{
        int  score;
        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分段是确定的,建议使用switch case 语句写。 首先 scanff函数 scanf的函数申明是:int scanf(const char *format,...); 其调用形式为: scanf("",);变量地址要求有效,并且与格式说明的次序一致。 格式化说明字符串包括%d 十进制整数,%s 字符串等 应该是scanf("%d",&score) 程 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-25 16:18:37 | 显示全部楼层
这题运行不出来是因为scanf函数参数给错了,建议楼主理解一下if.... else if ...  else ...的用法。这段代码可以写得更简洁些。当然如果score分段是确定的,建议使用switch  case 语句写。
首先  scanff函数
scanf的函数申明是:int scanf(const char *format,...);
其调用形式为: scanf("<格式说明字符串>",<变量地址>);变量地址要求有效,并且与格式说明的次序一致。
格式化说明字符串包括%d 十进制整数,%s  字符串等
应该是scanf("%d",&score)
程序的修改版本一:
//使用if  else if    else  
/*
使用if else if  语句时,程序顺序执行,当遇到一个条件判断成功后,其他的语句不在进行判断直接跳出if else  语句结构。如果前面的条件判断为假,则将顺序判断,直到遇到一个条件为真的分支或者到了 最后一个分支 (分支也为假),如果有符合条件的分支,则执行该分支,否则,执行到最后一个判断分支判断后,退出if else if结构。
*/
#include <stdio.h>

void main()

{
        int  score;
        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()
{
        int  score;
        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;
      }
}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-25 19:00:53 | 显示全部楼层
正确答案
#include <stdio.h>

void main()

{
        int  score;
        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");
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-25 19:44:17 | 显示全部楼层
(score>60||score==60) && score < 70 改成 score < 70 就行, 前边的重复了但没错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-26 09:07:02 | 显示全部楼层
最后的else if  应该直接 写成 else
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-26 11:40:00 | 显示全部楼层
最后个else if 把前面的包括了,逻辑有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-27 13:13:52 | 显示全部楼层
#include <stdio.h>

int main()

{
        int  score;
        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 就行了。功能是行的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-27 20:14:52 | 显示全部楼层
//: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) {
        /*int  score;
         printf("输入成绩:score=");
        scanf("%d",&score);
      */
      int ret;
    fun(59);
        fun(60);
        fun(67);
        fun(79);
        ret=fun(100);  
         return ret;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-30 23:09:53 | 显示全部楼层
 scanf("%d",&score);

把输入语句改了就OK了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-1 09:41:25 | 显示全部楼层
建议用switch语句 我觉得后面还会有b和a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-5 11:42:49 | 显示全部楼层
逻辑没错,但表达方面有点问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-5 15:28:18 | 显示全部楼层

有个问题。score 是你在函数中定义的局部变量,可以拿到MAIN 中来用么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-15 22:28:37 | 显示全部楼层
楼主,这个是我修改过的;
#include <stdio.h>
#include <stdlib.h>
int  main(void){
        int  score=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)格式;
{
        int  score;
        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(){
        int  score=0;
        printf("输入成绩:");
        scanf("score=%d",&score);
        
        
        printf("score的值是:%d ;\n",score);
        return 0;
}

//[截图]对于楼主的scanf()函数;楼主在控制台应该这么写才行,额,似乎有些麻烦!
好吧,这个运行结果看这里
http://bbs.fishc.com/home.php?mo ... lbum&picid=6571
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-15 22:58: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("没有复合条件的的数据[nul]; \t");
        }
        printf("运行结束;\n\n");
}

int main(void){
/*int  score;
printf("输入成绩:score=");
scanf("%d",&score);*/

                fun(59);
                fun(60);
                fun(67);
                fun(79);
                fun(199);
                getchar();
return 0;

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-15 22:59:30 | 显示全部楼层
小伪 发表于 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("没有复合条件的的数据[nul]; \t");
        }
        printf("运行结束;\n\n");
}

int main(void){
/*int  score;
printf("输入成绩:score=");
scanf("%d",&score);*/

                fun(59);
                fun(60);
                fun(67);
                fun(79);
                fun(199);
                getchar();
return 0;

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-15 23:16:32 | 显示全部楼层
小伪 发表于 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)

你可以看看 函数传递 相关的知识点;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-15 23:42:39 | 显示全部楼层
楼主的scanf("score=%d",&score);可以改为scanf("%d",&score);其实我也不知道为什么不能有score=
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-16 12:57:10 | 显示全部楼层
zhangbin_hunan 发表于 2015-7-1 10:53
这题运行不出来是因为scanf函数参数给错了,建议楼主理解一下if.... else if ...  else ...的用法。这段代 ...

想问一下,你这switch语句能运行吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-7 23:57:39 | 显示全部楼层
barry_2012 发表于 2015-8-16 12:57
想问一下,你这switch语句能运行吗

你试试就知道了呀 .     如果由问题欢迎指正。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-16 02:06:18 | 显示全部楼层
#include <stdio.h>

int main()

{
        int  score;
        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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 08:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表