讨论 / C语言如何判断输入到了行末??
cth 2009-10-17 09:00:00
点我顶贴 收藏 删除
这题太欠揍,各行数字个数不确定,搞不定输入。
#1 guoshi3@2008-08-21 03:17:00
回复 删除
哈,这里的c语言很少,pascal做这题没问题。我做这题也费了半天劲。我的方法是利用gets和sscanf。

输入的部分大体如下,q[]就是读出的这行的数组成的数组,nq是这行数的个数

大体思路是,扫描这个字符串,遇到空格,就读入这个空格和上个空格(记录下上个空格的位置)之间的数。读得时候先把把该字符串s考到另一个tp,并只从上个空格的位置开始考,用的是这个语句:strcpy(tp,s+p+1),p为上个空格的位置;这样做的目的是让tp的开头就是需要读取的数字。就可以用sscanf(tp,"%d",&..)来读取这个数了

呵呵,我的方法也挺麻烦,但还算做出这题了。你要是知道怎么判断行末或者有更好的方法一定告诉我,谢谢:D

for (int i=0;i<m;i++){

char s[3000],tp[3000];

int q[501],nq=0;

gets(s);

int p=-1;

for (int j=0;s[j]!=’\0’;j++)

if (s[j]==’ ’){

strcpy(tp,s+p+1);

sscanf(tp,"%d",&q[nq++]);

p=j;

}

strcpy(tp,s+p+1);

sscanf(tp,"%d",&q[nq++]);

}

#2 cth@2008-08-21 19:33:00
回复 删除
不过NOIP好象不允许使用string.h啊,怎么办
#3 binarie@2008-08-21 19:52:00
回复 删除
noip也不会考你这种输入
#4 chengaoyuan@2008-08-21 19:55:00
回复 删除
NOIP不让string??

那用c++的多不爽,来个字符串操作的就得麻烦死。

NOIP到底都不让用什么啊?

据说c++里qsort()也不让用吧。。。

我还没参加过noip呢.

#5 Zx.MYS@2008-08-22 05:12:00
回复 删除
qsort()自己写吧- -……

C不是有个getchar么……

#6 zzkca930110@2008-08-30 05:42:00
回复 删除
NOIP可让string.(我参加过的)

用c++的并非不爽,来个字符串操作的不麻烦.

#7 gezi1413@2009-10-17 09:00:00
回复 删除
while(x!=’\n’ && x!=-1)

{

cin >> u ;

x=-1;

cin.get(x);

tmp[++tmp[0]]=u;

}

查看更多回复
提交回复