关于C语言的一个诡异问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 14:22:19
下面这段程序好奇怪,当我想输入n个数的时候,系统程序要求我输入n+1个数,而且,系统printf时却只输出n个数。。。

#include<stdio.h>
main()
{
int a[100];
int i,n;
printf("how mant number:");
scanf("%d",&n);

printf("input the number:\n");
for(i=0;i<n;i++)
scanf(" %d ",&a);
printf("the string is:");
for(i=0;i<n;i++)
printf(" %d ",a);
printf("\n");
}
我试过了,如果把scanf(" %d ",&a);这句中%d与"之间的空格去掉的话,输出就正确了,但我不明白是什么原因呢????

1.程序有些问题
scanf(" %d ",&a);,应该是&a[i],其他地方类似,不过这个与问题无关
2.关于那个问题:scanf(" %d ",&a);是这行代码的问题,注意" %d ",%d前面有个空格,因此必须输入一个空格,否侧就少了了一个字符,系统会认为输入不够。是格式问题。如果输入时,改成“空格加数字”也没有楼主的问题
3.晕,居然没悬赏分。。。浪费感情。。。

没有取地址符 scanf(" %d ",&a); 错误
scanf(" %d ",&a[i]); 正确
要将 &a 换为 &a[i]
#include<stdio.h>
main()
{
int a[100];
int i,n;
printf("how mant number:");
scanf("%d",&n);

printf("input the number:\n");
for(i=0;i<n;i++)
scanf(" %d ",&a[i]);
printf("the string is:");
for(i=0;i<n;i++)
printf(" %d ",a[i]);
printf("\n");
}

程序有问题啊。。。a[100]了 a就是地址了,还取,你把数都放一个地址,能成吗??
#include<stdio.h>
main()
{
int a[100];
int i,n;
printf("how mant number:");
scanf("%d",&n);