如下一段程序,为什么调用函数isTure判断,数组a中却得不到结果呢?当提示not all control paths return a value,该怎么改呢?
#include <stdio.h>
int a[100]={0},cnt=0;
double pjz1=0.0, pjz2=0.0;
int isTure(int m)
{
int x,b,c,d;
/*if(m>=1000&& m<10000)*/ 加上这一语句,提示not all control paths return a value
{
x=m/1000; b=m/100%10;
c=m/10%10; d=m%10; //千位数x 百位数b 十位数c 个位数d
if(x+b==c+d) return 1;
else return 0;
}
}
void jsValue()
{
int m;
for (m=1000;m<=2000;m++)
if(isTure(m)) a[cnt++]=m;
}
main()
{
int i;
void jsValue();
for(i=0;i<100;i++)
printf(“a[%d]=%d\n”,i,a[i]);
}
#include <stdio.h>
int a[100]={0},cnt=0;
double pjz1=0.0, pjz2=0.0;
int isTure(int m)
{
int x,b,c,d;
/*if(m>=1000&& m<10000)*/ 加上这一语句,提示not all control paths return a value
{
x=m/1000; b=m/100%10;
c=m/10%10; d=m%10; //千位数x 百位数b 十位数c 个位数d
if(x+b==c+d) return 1;
else return 0;
}
}
void jsValue()
{
int m;
for (m=1000;m<=2000;m++)
if(isTure(m)) a[cnt++]=m;
}
main()
{
int i;
void jsValue();
for(i=0;i<100;i++)
printf(“a[%d]=%d\n”,i,a[i]);
}
解决方案
5
not all control paths return a value是说你的函数中有的分支没有返回值,你加了那个判断之后,假如流程走不进你的那个if中,函数就没有返回值了。应该在函数的末尾加上返回值的
70
数组没有值是原因是你main函数里把函数调用写成了声明
void main() { int i; jsValue(); //void jsValue();是函数声明!11 for(i=0;i<100;i++) printf("a[%d]=%d\n",i,a[i]); }