----------------解决方案--------------------------------------------------------
这是谭教授书上的一道习题:
输入一个字符串,内有数字和非数字符,例如
A123X456 17690? 302TAB5876
将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]中。统计共有多少整数,并输出这些数。
本人弱智,实在想不通,这个数组的大小应该怎么样确定啊?并哥哥姐姐们指教!谢谢了!只提示一下就可以了!
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#define MAX 30
main()
{
int i,j,count=0;
char source[MAX]="A123X456 17690? 302TAB5876",*p=source,*temp;
int a[MAX];
for (i=0;i<MAX;i++)
a[0]=0;
while (*p)
{
if (*p>='0'&&*p<='9')
{
while (*p>='0'&&*p<='9'&&*p)
{
a[count]=a[count]*10+*p-'0';
p++;
}
count++;
}
else
p++;
}
printf("count=%d\n",count);
for (i=0;i<count;i++)
printf("a[%d]=%d\n",i,a[i]);
getch();
return 0;
}
可能程序还有一些小问题。
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#define MAX 30
main()
{
int i,j,count=0;
char source[MAX]="A123X456 17690? 302TAB5876",*p=source,*temp;
int a[MAX];
for (i=0;i<MAX;i++)
a[0]=0; //改为a[i]=0 就行了,否则只有一,二个数输出正确
while (*p)
{
if (*p>='0'&&*p<='9')
{
while (*p>='0'&&*p<='9'&&*p)
{
a[count]=a[count]*10+*p-'0';
p++;
}
count++;
}
else
p++;
}
printf("count=%d\n",count);
for (i=0;i<count;i++)
printf("a[%d]=%d\n",i,a[i]);
getch();
return 0;
}
可能程序还有一些小问题。
----------------解决方案--------------------------------------------------------
有个弱智点的方法,先讨论最坏的情况,BT用户输入了个极其BT的字符串 1`1`1`1`1`1 用户输入了11个字符,最坏的可能就是有11/2+1个数字出现,则我们让数组的大小定义为用户输入字符串长度N的 N/2+1 即可。语句是
int *number,n;
scanf("%d",&n);
number = (int*)malloc(sizeof(int)*(n*2-1));
这样就完成了定义数组大小的任务。当然这个方法比较傻,如果你有实力,可以用链表去实现这个功能,实在不行用realloc()函数改变数组长度也不错~
[此贴子已经被作者于2006-3-18 8:33:24编辑过]
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#define MAX 30
main()
{
int i,j,count=0;
char source[MAX]="A123X456 17690? 302TAB5876",*p=source,*temp;
int a[MAX];
for (i=0;i<MAX;i++)
a[0]=0;
while (*p)
{
if (*p>='0'&&*p<='9')
{
while (*p>='0'&&*p<='9'&&*p)
{
a[count]=a[count]*10+*p-'0';
p++;
}
count++;
}
else
p++;
}
printf("count=%d\n",count);
for (i=0;i<count;i++)
printf("a[%d]=%d\n",i,a[i]);
getch();
return 0;
}
可能程序还有一些
----------------解决方案--------------------------------------------------------
请问四楼的哥们:整型指针变量能够直接定义用吗?我不懂!
----------------解决方案--------------------------------------------------------
dynamic memory malloc
----------------解决方案--------------------------------------------------------
没有人可以帮我吗?
----------------解决方案--------------------------------------------------------