首页 > 解决方案 > C 程序无法识别我的“max”输入

问题描述

嗨,我一直在努力解决这个问题,但我的输入一直被忽略,在此先感谢

#include <stdio.h>
#include <stdlib.h>


int main(){

    float a, b, a0, b0,i;
    char ans;

    printf("Fibonacci search method\n\nEnter the function:\n");

    printf("\nEnter the intervals over which the Fibonacci method must be applied:\n");

      for (i = 1; i <= 1; i++) {

    printf("a0 = ", i);
    scanf("%f", & a);
    printf("bo = ", i);
    scanf("%f", & b);
  }

    printf("Narrow down on either a maximiser or a minimiser (max/min): \n", ans);
    scanf(" %c", &ans);

    while(ans == 'max'){
        printf("maximum selected");
    }
    printf("minimum selected");

    return 0;
}

标签: c

解决方案


首先,您将 singlechar与 whole进行比较string,因此您需要修改ans变量声明以使其成为字符串,例如:

char ans[4]

请记住,它的最大大小为3. 如果您需要存储更大的string,则需要对其进行修改。
然后,在这样做之后,使用 awhile进行比较是不正确的。最好实现一个if-else. 而且,在这里面,你所做的比较是错误的。您需要比较strings,而不是chars,因此您需要使用strcmp()函数,例如:

strcmp(ans,"max") == 0

如果此函数返回 a 0,则表示两个字符串相等。
要评论的另一件事是,您将需要修改您scanf的扫描 a string,而不是 a char,新的将是scanf("%3s", &ans);
让我再告诉你一件事。for你用的没有意义。您正在使用forwith parameters i = 1; i <= 1; i++。这意味着i将启动满足破坏它的条件的带扣,因此它只会执行一次。换句话说,里面的代码for只会被执行一次,不管它是在内部还是外部for
无论如何,总而言之,这是您的新代码:

int main(){

    float a, b, a0, b0,i;
    char ans[4];

    printf("Fibonacci search method\n\nEnter the function:\n");

    printf("\nEnter the intervals over which the Fibonacci method must be applied:\n");

    for (i = 1; i <= 1; i++) {
        printf("a0 = ", i);
        scanf("%f", & a);
        printf("bo = ", i);
        scanf("%f", & b);
    }

    printf("Narrow down on either a maximiser or a minimiser (max/min): \n", ans);
    scanf("%3s", &ans);

    if(strcmp(ans,"max") == 0)
        printf("maximum selected");
    else
        printf("minimum selected");

    return 0;
}

推荐阅读