/*
程序功能:
判断输入的字符串是否是int型正整数型,并分组
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 10
int chk_data(char *num);
int num[SIZE];
struct fu
{
char b[SIZE];//存放运算符
int c[SIZE];//存放运算符位置
}sign;
int i=0,k=0,j=0,l=0;
int m[SIZE]={0},x;
int a[SIZE];//存放数字
int e=1;
int main(void)
{
char str[SIZE]; //定义一个大小为SIZE的char型数组
int answer;
printf("input :");
scanf("%s", str);
for(i=0;str[i];i++)
{
if (chk_data(&str[i]) == 0)
{
sign.b[j++]=str[i];
sign.c[l++]=i;
}
else
{
a[k++]=str[i]-'0';
}
}printf("%d\n",j);
for (i = 0; i < k; i++)
{
printf("数字%d ",a[i]);
}
for (i = 0; i < j; i++)
{
printf("位置%d\n ",sign.c[i]);
}
int d;
for(d=0;d<=j;d++)//j为运算符个数,即组数
{
wether();
}
printf("%d\n",e);
//printf("answer%d\n",);
for (i=0;i<e;i++)
{
printf("answer%d\n",m[i]);
}return 0;}
// 子函数
int chk_data(char *num)
{
if (*num > '9' || *num < '0') //只要有非数字,就返回错误
{
return 0;
}
return 1;
}
wether()
{int n=0;
for(i=0;i<sign.c[0];i++)
{
m[0]=m[0]*10+a[i];
}
if(n==l)//判断是否是最后一个运算符
{
for(i=sign.c[l]-1;i<k;i++)
{
m[e]=m[e]*10+a[i];//如果是运算符后面所有数为一组
}
}
else//如果不是则从当前位置到下一个运算符之前为一组,然后再判断
{
for(i=sign.c[n];i<sign.c[n+1]-1;i++)
{
m[e]=m[e]*10+a[i];
}
e++;
n++;
wether();
}
}
这样运行不能打印m数组,而且运行速度变慢,应该怎么改
不知道你想做什么,是把输入字符串里的所有整数提取到数组里么?
你的代码好乱,可以重新帮你写一个