我正在编写以下代码,但是当我给出输入并尝试执行时,即使 true 的条件成立,结果也始终根据 FALSE 情况。 例如:如果我输入 h=2,则它遵循错误情况,如果我输入 h=34,则它也遵循错误情况。 请告诉我我所犯的错误。
#include <cs50.h>
#include <stdio.h>
#include <stdlib.h>
int input(int a);
void pyramid(void);
int h;
int main(void) {
input(h);
if(h>0 && h<9) {
pyramid();
}
else {
do {
input(h);
} while(h>8 || h<1);
pyramid();
}
}
void pyramid(void) {
printf("sfsdfsf");
}
int input(int a) {
printf("Height: ");
scanf("%d", &a);
return(a);
}
最佳答案
问题是当您调用input
时:input(h);
。 h
按值(或通过副本)传递,这意味着无论函数中发生什么,h
都看不到任何内容。因此:
要么使用函数的返回值:
h = input(h);
在这种情况下,向函数传递值有点奇怪...... 因此,首选的技巧可能是:
h = input();
int input() {
int a;
printf("Height: ");
scanf("%d", &a);
return a;
}
这更清楚地表达了这样一个事实:您调用一个函数,该函数使某些东西返回您一个值(这个函数真正所做的事情在调用点并不有趣)。
或者传递变量的地址:
input(&h);
void input(int *a) {
printf("Height: ");
scanf("%d", a);
}
这表明该函数获取它将修改的变量的地址。
假设你想把 friend 的电话号码写到纸上,有两种解决方案:
- 让他将其写在他拥有的纸上,并将纸作为返回给您。
- 让他把它写在你给他的纸上。
关于c - 如何定义一个函数,该函数接受用户的输入并将其存储到程序中进一步使用的变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59335294/