帮写几句C

liumang9527 2008-05-06 11:40:06
怎么将一系列用逗号隔开的数字赋予到一个数组当中。
例如:123.12,123.23,456.12,789.20...一系列数赋予给数组a[100]

即a[1]=123.12;a[2]=123.23;等等。

这个用C要怎么写?
123.12,123.23,..从键盘输入
...全文
109 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bitxinhai 2008-05-07
  • 打赏
  • 举报
回复
#include<stdio.h>

void main()
{
float a[100];
char temp;
int i = 0;
do
{
scanf("%f",&a[i++]);
scanf("%c",&temp);
}while(temp != '\n');
for(int j = 0;j < i;j++)
printf("%f\n",a[j]);
}
看看这个简单吗??
xiaoc10 2008-05-07
  • 打赏
  • 举报
回复
while()循环体内的index变量发挥的作用是什么啊?
index在这儿有两个作用。
(1) 作为数组a的下标
(2) 如果是2个','号的话,那么必定要3个浮点数。怎样将这3个浮点数都读入数组a中呢?我的想法是:
进入循环时,先就读一个浮点数到a中。接下来就是遇到2个','号再读2个。那么这样就需要一个标记表示首次进入循环,那么这儿index可以起到这个作用。

也许就用一个变量i也可以完成上面两件事?
PS:
jiarusun000同学,大家一起学啊,学啊,学!^_^。
  • 打赏
  • 举报
回复
更正一下刚才的代码
一系列数必须是用逗号分隔的吗?如果是的话参考众楼上的代码;
如果楼主只是想取数,可以用空格分隔。最简单的方法就是使用命令行参数。
/************a.c*******************/

#include <stdio.h>
#include <stdlib.h>


/* argc:从命令行输入的参数个数(包含该程序可执行文件名在内)
** argv:传入的参数(各个参数用空格分隔),字符串类型
*/
int main(int argc,char *argv[])
{
int ii;
float a[100];

/* 判断参数个数:如果楼主需要的是100个数的话,101(1+100),其中1为编译成功后的可执行文件,
* 可以根据要求修改数值
*/
if(argc < 101)
{
printf("Input Error!\nUsage:programname parameter1 parameter2 ...\n");
printf("The numbers of parameters must more than 100.\n");
return -1;
}

/* 具体的赋值 */
for(ii = 0;ii < 100;ii++)
{
a[ii] = atof(argv[ii + 1]);
}

return 0;
}
a.c成功编译之后形成a.exe,运行->cmd->进入存储目录->输入a.exe 123.12 123.23 456.12 789.20...回车即可
  • 打赏
  • 举报
回复
献丑了,希望对楼主有所帮助。
  • 打赏
  • 举报
回复
一系列数必须是用逗号分隔的吗?如果是的话参考众楼上的代码;
如果楼主只是想取数,可以用空格分隔。最简单的方法就是使用命令行参数。
/************a.c*******************/
/* argc:从命令行输入的参数个数(包含该程序可执行文件名在内)
** argv:传入的参数(各个参数用空格分隔)
*/
int main(int argc,char *argv[])
{
int ii;
float a[100];

/* 判断参数个数:如果楼主需要的是100个数的话,101(1+100),其中1为编译成功后的可执行文件,
* 可以根据要求修改数值
*/
if(argc < 101)
{
printf("Input Error!\nUsage:programname parameter1 parameter2 ...\n");
printf("The numbers of parameters must more than 100.\n");
return -1;
}

/* 具体的赋值 */
for(ii = 0;ii < 100;ii++)
{
a[ii] = argv[ii + 1];
}

return 0;
}
a.c成功编译之后形成a.exe,运行->cmd->进入存储目录->输入a.exe 123.12 123.23 456.12 789.20...回车即可
jiarusun000 2008-05-07
  • 打赏
  • 举报
回复
楼上正解,我在加天注释吧。不过sscanf()我还是不太了解,有几个地方还是没太看懂。
#include <stdio.h>
#include <conio.h>

int main(void)
{
char c[100];
float a[100];
char *p = c;
int i = 0; /*i为字符在数组中的偏移值*/
int index = 0;
scanf("%s", c); /*以字符串方式输入若干数字*/
while(*(c+i) != '\0') /*字符串没有结束*/
{
if(index == 0)
{
sscanf(p, "%f", a+index); /*这是关键*/
++index;
}
else
{
if(*(c+i) == ',')
{
p = c + i + 1; /*p指向了新的数字开始*/
sscanf(p, "%f", a+index);
++i;
++index;
}
else
{
++i;
continue;
}

}
}
for( i = 0; i <index; ++i )
printf("%f\n", a[i]);
getch();
return 0;
}
while()循环体内的index变量发挥的作用是什么啊?
xiaoc10 2008-05-07
  • 打赏
  • 举报
回复
#
include <stdio.h>
#include <conio.h>

int main()
{
char c[100];
float a[100];
int i = 0;
int index = 0;
scanf("%s", c);
char *p = c;
while(*(c+i) != '\0')
{
if(index == 0)
{
sscanf(p, "%f", a+index);
++index;
}
else
{
if(*(c+i) == ',')
{
p = c + i + 1;
sscanf(p, "%f", a+index);
++i;
++index;
}
else
{
++i;
continue;
}

}
}
for( i = 0; i <index; ++i )
printf("%f\n", a[i]);
getch();
return 0;
}
不想低调 2008-05-06
  • 打赏
  • 举报
回复
从键盘输入100个数...
fengdream 2008-05-06
  • 打赏
  • 举报
回复
int main()
{
FILE *fp;
char c,buf[10];
int n=0, *np,i=0,len;

fp=fopen("a.txt","r");

while((c=fgetc(pf))!=EOF)
{
if(c==',')
n++;
}
rewind(pf);

len=0;
np=malloc(n*sizeof(int));

while((c=fgetc(pf))!=EOF)
{
if(c==',')
{
pf[i++]=atoi(buf);
len=0;
continue;
}
buf[len++]=c;
}
fclose(pf);

for(i=0;i<n;i++)
printf("%d\n", pf[i]);

return 0;
}
qmxy 2008-05-06
  • 打赏
  • 举报
回复
呵呵,从文件中读简单,键盘输入用循环一个一个地输入不行吗?非要一次输完才行吗?

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧