scanf输入格式没有指定,默认是空格分割。
也就是说,你要么输入一个数就回车,再输第二个。
要么连续输入多个数,用空格分割。
看看,你输入格式对不对。
你理解错了 这个代码你也写错了点 应该是for(i=0i<5i++) 少了个分号,初学者一定要仔细点至于赋初值就自动初始化为0是对于在定义数组变量的时候赋初值,才自动初始化为0
比如:
int a[5]={1,2,}
这样的话 a[0]=1,a[2]=2,其他的才是0
scanf是不管你的数组有没有被初始化都要向输入输出设备要值的
这样明白了吧?如果你想动态赋初值的话 用new()与delete() 比较方便,这个C语言里是没有的 是在C++里的 我知道C语言也有这样的函数 很久没用C了 忘了 呵呵,还是C++比较好用,介意还是学C++好了,可以没有C语言基础
一定要存在data[0]里面吗看可以循环赋值
void set(int data[50], int new_value)
{
int i
for(i = 49i >=1i --)
data[i] = data[i - 1]
data[0] = new_value
}
也可以整体复制
void set(int data[50], int new_value)
{
int i
memcpy(&data[1], &data[0], sizeof(int) * 49)
data[0] = new_value
}
效率更高的是用一个变量保存当前的位置,也就是新的不存在data[0]里面,而是动态改变
int index = 0
void set(int data[50], int new_value)
{
data[index++]=new_value
}
读取的时候把data[index]当做data[0]
任君选择