c语言的问题.....

来源:百度知道 编辑:UC知道 时间:2024/05/24 00:43:52
定义一个数组a[10]
我想对其赋值,,,如果输入的不是数字的话,就不赋值了
for(i=0;i<10;i++)
scanf("%1d",a[i])

例如..我输入..5654523214,,,也就是a[0]=5,a[1]=6,a[2]=5,a[3]=4,a[4]=5,a[5]=2,a[6]=3,a[7]=2,a[8]=1,a[9]=4,
但是我要的结果是...假如我输入....2546enter键 时,,a[0]=2,a[1]=5,a[2]=4,a[3]=6; 而后面数组的值,,,不要了...
怎么改或者...需要一个头文件什么的吗?
谢谢

以下可以对任意类型,如果sannf函数获得结果正确,则返回为读到的数据数,否则为0

int temp;
for(i=0;i<10;i++)
{
temp = scanf("%d",&temp);
if(temp) a[i] = temp;
else continue;
}
上面也可以对double类型,尽管isdigit函数可以识别但只能处理一个字符输入,而且是整数。
再一个例子,可以连续输入数据。
double a, b, c;
int temp = 1;
while(temp)
{
printf("请输入三个数据,数据非法则退出:");
temp = scanf("%lf %lf %lf", &a, &b &c);
}

你的意思我不是很明白。但是,可以这样做,把数组的大小定义为和你所要的数一样。这样就不存在问题了。比如,上面,你只要4个数,那就定义为a[4].

如果想赋值的是字符型的话,定义数组的时候应该把数组定义成字符型的
即char a[10]
for(i=0;i<10;i++)
scanf("%c",a[i]);
数组定义了之后,数组元素的个数是不可以改变的,如果你只对前4个赋值的话,那后6个的值系统将会自动定义为0

不用scanf不行吗?
for (i = 0; i < 10; ++ i)
{
c = getchar();
if (! isdigit(c)) break;
a[i] = atoi(c);
}

我觉得不可以,为什么呢?因为你想,你在前面设定数组为整型了,然后你又要根据回车键来判断,数据类型都不一样了嘛,或者说,回车键就不能存入数组里面
我觉得应该用一个数来判断,比如说,在最后输入22就表示退出,就得了呀