/*
程序功能:
判断输入的字符串是否是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 main(void)
{
char str[SIZE]; //定义一个大小为SIZE的char型数组
int i=0,k=0,j=0,l=0;
int m[SIZE]={0},x;
int a[SIZE];//存放数字
int e=1;
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(i=0;i<sign.c[0];i++)
{
m[0]=m[0]*10+a[i];
}
i=0;
for(d=0;d<=j;d++)//j代表符号的个数,有几个符号就分成几个组
{
wether(l,k);
}
//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;
}
void wether(int l,int k)
{int n=0,i;
if(i==l)//判断是否是最后一个运算符
{
for(i=sign.c[l]-1;i<k;i++)
{
m[e]=m[e]*10+a[i];
}
}
else
{
for(n=sign.c[i];n<sign.c[i+1]-1;n++)
{
m[e]=m[e]*10+a[n];
}
e++;
i++;
wether(l,k);
}
}
如何避免自定义函数时出现变量未定义的情况,我现在要编写一个计算器,我的思路是把运算符和数字放在两个数组中,把每个运算符前后的数字分别分组,比如12+69,12为一组,69一组,存放在数组m中,要在函数wether中使用递归,但是出现的很多变量是在main中,应该怎么解决
如何避免?
变量要是没定义,你编译都编译不过去,直接就报错了
这还用避免?
IDE给你提供的功能,你要有效的利用起来
不要把多余的精力都耗费在计算机能自动完成的工作上面