哈,这里的c语言很少,pascal做这题没问题。我做这题也费了半天劲。我的方法是利用gets和sscanf。
输入的部分大体如下,q[]就是读出的这行的数组成的数组,nq是这行数的个数
大体思路是,扫描这个字符串,遇到空格,就读入这个空格和上个空格(记录下上个空格的位置)之间的数。读得时候先把把该字符串s考到另一个tp,并只从上个空格的位置开始考,用的是这个语句:strcpy(tp,s+p+1),p为上个空格的位置;这样做的目的是让tp的开头就是需要读取的数字。就可以用sscanf(tp,"%d",&..)来读取这个数了
呵呵,我的方法也挺麻烦,但还算做出这题了。你要是知道怎么判断行末或者有更好的方法一定告诉我,谢谢:D
for (int i=0;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++]);
}