c - 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;
}
解决方案
首先,您将 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
你用的没有意义。您正在使用for
with 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;
}
推荐阅读
- python-3.x - 导入名称中有空格的文件
- javascript - 创建用于在打字稿中获取文本的 cypress 自定义命令
- javascript - 在页面加载期间加载任意资源并显示加载指示器
- powershell - 如何在软件列表代码的输出中显示计算机名称
- r - R:在用户定义的 Fn 中,我可以合并延迟命令,可能带有用户输入吗?
- c# - 在 Xamarin.Android 中重新加载 XML 布局以改变方向?
- ios - 我们可以在 swift 的 UITableView 部分中实现部分吗?
- python - 如何在 Python 中过滤对象数组?
- ios - UIButton 系统按钮和图像未显示
- javascript - 加载 HTML 文件,编辑标签内的内容,并将更改保存到 HTML 文件