我想要像验证一样使用验证码,但它所做的只是崩溃。 代码有什么问题? 我的代码如下所示:
printf("I need to make some tests to ensure that you are a human being.\n");
printf("Let's start\n");
int randomNumber1 = rand() % 100;
int randomNumber2 = rand() % 100;
printf("What is %d + %d ?\n", randomNumber1, randomNumber2);
int randomNumberSum = randomNumber1 + randomNumber2;
int solution;
printf("%d \n", randomNumberSum);
scanf("%d", solution);
if (solution = randomNumberSum) {
printf("Good job human !\n");
} else {
printf("Nice try, bot \n");
}
答案 0 :(得分:3)
使用scanf()
读取整数时,需要提供int
变量的地址:
scanf("%d", &solution);
您还需要在==
声明中使用=
(比较)而不是if
(作业)。
答案 1 :(得分:1)
scanf
需要一个指向某个地方的指针来放置它正在阅读的信息。
你给它值 solution
,即使它没有被初始化(因此是一个不确定的值),也很可能不会包含对象的有效地址。
您的意思是给它&solution
,这是solution
的地址。
顺便说一句,你写了=
而不是==
。 打开编译器警告。
答案 2 :(得分:0)
if (solution = randomNumberSum)
是分配,您将 randomNumberSum 的值分配给变量解决方案,您的意思实际上是检查两者是否保持相同值...
您需要执行if (solution == randomNumberSum) {
你必须做
scanf("%d", &solution);
(您需要将变量解决方案的地址作为参数传递)
而不是scanf("%d", solution);
答案 3 :(得分:0)
一些问题:
(solution == randomNumberSum)
与您的(solution = randomNumberSum)
- 这会导致输出始终为真查看更正后的代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
printf("I need to make some tests to ensure that you are a human being.\n");
printf("Let's start\n");
int randomNumber1 = rand() % 100;
int randomNumber2 = rand() % 100;
printf("What is %d + %d ?\n", randomNumber1, randomNumber2);
int randomNumberSum = randomNumber1 + randomNumber2;
int solution;
printf("%d \n", randomNumberSum);
scanf("%d", &solution);
if (solution == randomNumberSum) {
printf("Good job human !\n");
} else {
printf("Nice try, bot \n");
}
}