不会添加 C 变量
C-variables won't be added
开始学习C,想做一个加法程序。
我写了下面的代码:
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main() {
int a,b,c;
scanf("Give a,b",&a,&b);
c=a + b;
printf("A+b=",c);
printf("\n\n\n");
return 0;
}
它应该从用户那里取2个数字并显示他们的总和。
但是,用户输入 2 个数字后我得到的唯一输出是 A+b=
有什么想法吗?
您未能包含整数变量的格式说明符 c
。没有这个 printf
就不知道在格式字符串之后期望的参数是什么,它们的类型是什么,或者它们是如何打印的。变化:
printf("A+b=",c);
至:
printf("A+b=%d",c);
请注意,启用警告的良好编译器(例如 gcc -Wall ...
)会在编译时为您指出这个简单的错误。
另外你的 scanf
用法是错误的 - 更改:
scanf("Give a,b",&a,&b);
至:
printf("Give a,b");
scanf("%d %d",&a,&b);
您在 printf()
调用中缺少 %d
转换说明符:
printf("a+b=%d\n", c);
否则,printf()
不知道它正在接收第二个参数,也不会对其执行任何操作。
当然,c
可以只是 a + b
,不需要将总和存储在单独的变量中只是为了打印它。
此外,您需要 scanf()
中的说明符,它应该是:
scanf("%d %d", &a, &b);
scanf()
的第一个参数 不是 打印的提示,它描述了预期的输入。
最后,在依赖 a
和 b
具有有效值之前,您应该检查 scanf()
的 return 值以确保它是 2
。 I/O 可能会失败,如果发生这种情况,您需要确保您的程序执行正确的操作。
scanf
是一个用于接收用户输入的函数。你期待它打印一些东西,不是吗?您需要 printf
代替:
printf("Give a,b\n"); //\n at the end is good
现在,使用scanf
扫描输入:
scanf("%d %d",&a,&b);
正如其他答案所提到的那样,您还缺少最后 printf
中的 %d
格式说明符。
scanf() 是一个输入 C 函数(带格式扫描)使用格式说明符(%数据类型例如:%d 或%i = int,这是你想要的,或 %c = char) 以给定格式存储数据条目,由 stdin(键盘缓冲区)提供,直到并包括 null (\0) 终止字符(如果是字符串);
C中的Ampersand(&)用来designate/return内存地址(where变量被存储),因为与变量的值相反。
scanf("Give a,b",&a,&b);
c=a + b;
printf("A+b=",c);
上面第一行代码的问题是您忘记包含格式说明符(%d 或 %i 在这种情况下都适用,因为我假设您添加的是整数而不是 floats/etc)。
因此第一个问题的解决方法很简单:
scanf("%d %d",&a,&b);
此外,您似乎试图将输入和输出合并为一行。
Printf,和scanf一样,可以使用格式说明符,或者它可以只包含一串字符,并打印到标准输出(控制台)。
您想要做的是 在存储所述输入之前包括询问用户输入的提示。您 在末尾添加 \n "newline" 字符 以确保在其他输出和输入之间提供间距,以及进入 char 数组 [] 或字符串时的许多其他原因.但就目前而言,这应该可以解决问题:
printf("Give a,b\n");
scanf("%d %d",&a,&b);
希望这对当前作业和 general/C 编程概念都有帮助!
开始学习C,想做一个加法程序。 我写了下面的代码:
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main() {
int a,b,c;
scanf("Give a,b",&a,&b);
c=a + b;
printf("A+b=",c);
printf("\n\n\n");
return 0;
}
它应该从用户那里取2个数字并显示他们的总和。
但是,用户输入 2 个数字后我得到的唯一输出是 A+b=
有什么想法吗?
您未能包含整数变量的格式说明符 c
。没有这个 printf
就不知道在格式字符串之后期望的参数是什么,它们的类型是什么,或者它们是如何打印的。变化:
printf("A+b=",c);
至:
printf("A+b=%d",c);
请注意,启用警告的良好编译器(例如 gcc -Wall ...
)会在编译时为您指出这个简单的错误。
另外你的
scanf
用法是错误的 - 更改:
scanf("Give a,b",&a,&b);
至:
printf("Give a,b");
scanf("%d %d",&a,&b);
您在 printf()
调用中缺少 %d
转换说明符:
printf("a+b=%d\n", c);
否则,printf()
不知道它正在接收第二个参数,也不会对其执行任何操作。
当然,c
可以只是 a + b
,不需要将总和存储在单独的变量中只是为了打印它。
此外,您需要 scanf()
中的说明符,它应该是:
scanf("%d %d", &a, &b);
scanf()
的第一个参数 不是 打印的提示,它描述了预期的输入。
最后,在依赖 a
和 b
具有有效值之前,您应该检查 scanf()
的 return 值以确保它是 2
。 I/O 可能会失败,如果发生这种情况,您需要确保您的程序执行正确的操作。
scanf
是一个用于接收用户输入的函数。你期待它打印一些东西,不是吗?您需要 printf
代替:
printf("Give a,b\n"); //\n at the end is good
现在,使用scanf
扫描输入:
scanf("%d %d",&a,&b);
正如其他答案所提到的那样,您还缺少最后 printf
中的 %d
格式说明符。
scanf() 是一个输入 C 函数(带格式扫描)使用格式说明符(%数据类型例如:%d 或%i = int,这是你想要的,或 %c = char) 以给定格式存储数据条目,由 stdin(键盘缓冲区)提供,直到并包括 null (\0) 终止字符(如果是字符串);
C中的Ampersand(&)用来designate/return内存地址(where变量被存储),因为与变量的值相反。
scanf("Give a,b",&a,&b);
c=a + b;
printf("A+b=",c);
上面第一行代码的问题是您忘记包含格式说明符(%d 或 %i 在这种情况下都适用,因为我假设您添加的是整数而不是 floats/etc)。
因此第一个问题的解决方法很简单:
scanf("%d %d",&a,&b);
此外,您似乎试图将输入和输出合并为一行。 Printf,和scanf一样,可以使用格式说明符,或者它可以只包含一串字符,并打印到标准输出(控制台)。
您想要做的是 在存储所述输入之前包括询问用户输入的提示。您 在末尾添加 \n "newline" 字符 以确保在其他输出和输入之间提供间距,以及进入 char 数组 [] 或字符串时的许多其他原因.但就目前而言,这应该可以解决问题:
printf("Give a,b\n");
scanf("%d %d",&a,&b);
希望这对当前作业和 general/C 编程概念都有帮助!