我刚刚开始C编程,我是一个新手。我做了一些研究,但遗憾的是找不到关于我的问题的任何事情。无法使用阵列BTW,这就是我不能使用它的原因。
所以,我正在制作一个能够打印星号的函数。但是函数正在打印最后一个输入数字。
#include <stdio.h>
int main(){
void pstr(int *m){
int j;
for(j = 0; j < *m; j++)
printf("*");
printf("\n");
}
int i;
int number = 9;
int n1, n2, n3, n4, n5, n6, n7, n8, n9;
printf("Enter 9 numbers (all less than 50):\n|1-2-3-4-5-6-7-8-9|\n");
printf("|-----------------|\n ");
for(i=0; i < number; i++)
scanf("%d", &n1, &n2, &n3, &n4, &n5, &n6, &n7, &n8, &n9);
pstr(&n1);
system("PAUSE");
}
我试图打印第一个输入数字,但它正在写最后一个(n9)。抱歉我的英文,谢谢。
答案 0 :(得分:3)
您的scanf()
格式字符串错误。
scanf("%d", &n1, &n2, &n3, &n4, &n5, &n6, &n7, &n8, &n9);
每次转化必须有一个%
,所以你的情况就是9。这意味着for
毫无意义。
此外,您必须检查scanf()
是否返回预期的成功转换次数,否则您无法依赖具有适当值的变量。
答案 1 :(得分:3)
scanf("%d %d %d %d %d %d %d %d %d ", &n1, &n2, &n3, &n4, &n5, &n6, &n7, &n8, &n9);
虽然更好的方法是使用数组和循环。既然你是新手我也不认为你知道它。暂时使用它。
答案 2 :(得分:0)
将数字声明为:
int n[9];
而不是
int n1, n2, n3, n4, n5, n6, n7, n8, n9;
然后使用循环:
for(i=0; i < number; i++)
scanf("%d", &n[i]);
此外,在使用scanf之前,请先刷新输出缓冲区
fflush(stdout);