我在c编程中相对较新,一般编程。
1)我正在尝试创建一个名为"输入"的数组,该数组将用于用户输入(该数组仅使用两个整数元素)。
2)我想使用for循环,使其循环循环2次,这样我就可以复制printf语句"输入整数",而无需多次键入printf语句。然后我的scanf占位符将基于我的数组"输入"。
3)然后,我想将这两个数字添加在一起。
问题:当用户输入一个数字时,例如1,然后是1再次,输入[0]的索引为1,然后输入[1]的索引为12 ...
我将使用加法来尝试解释。当我尝试输出其他数字(整数[0]为1时,整数[1]为2,而我的变量将它们添加在一起是"总计"),我得到了: 1 2 = 2。strong>
那么为什么输入[0]正确,但是输入[1]似乎正在将两个用户输入添加在一起并将其存储在其中?
这是我的代码
int main()
{
int input[1];
for(int i = 0; i < 2; i++)
{
printf("Please enter an integer: ");
scanf("%d", &input[i]);
}
int total = input[0]+input[1];
printf("%d + %d = %d ", input[0], input[1], total);
}
事先感谢您,希望您能理解我。抱歉,我是一个菜鸟,学习了基础知识,所以我可以先进。
此行
int输入[1];
将仅创建一个大小的数组。我可以看到您也尝试访问数组的第二个元素。
所以只需用
替换您的这条线int输入[2];
这将解决您的问题。或放整个东西
int main()
{
int input[2];
for(int i = 0; i < 2; i++)
{
printf("Please enter an integer: ");
scanf("%d", &input[i]);
}
int total = input[0]+input[1];
printf("%d + %d = %d ", input[0], input[1], total);
}
您应该使用
int input[2];
因为您想要两个整数。否则,它将仅为您分配一个整数数组,在这种情况下访问输入[1]将无法正常工作。
还尝试将其扩展到添加n个整数。
int main()
{
int input[1];
int total = 0;
int n; //To count number of elements to add:
printf("Please enter the number of elements to add: ");
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
printf("Please enter integer %d: ",(i+1));
scanf("%d", &input[i]);
}
for(int i = 0; i < n; i++)
{
total = total +input[i];
}
printf("The sum is = ", total);
}
因此,在您使用的循环中所示,在您的数组中,您将通过使用其<<em> input 数组的单元素,通过使用其 index 您在每次迭代中也会增加。
在您的情况下,只有两个元素,因此仅需要两个迭代。
使用这样的使用
int main()
{
int input[2]; //initializes array of size 2,which can contain maximun 3-->(0,1,2)
for(int i = 0; i < 2; i++)
{
printf("Please enter an integer: ");
scanf("%d", &input[i]);
}
int total = input[0]+input[1];
printf("%d + %d = %d ", input[0], input[1], total);
}
或使用i<=2
。
int main()
{
int input[1]; //initializes array of size 1 which can contain -->(0,1),or use i<=2
for(int i = 0; i <= 2; i++)
{
printf("Please enter an integer: ");
scanf("%d", &input[i]);
}
int total = input[0]+input[1];
printf("%d + %d = %d ", input[0], input[1], total);
}