formal parameter 4 different from declaration
答案:2 悬赏:0
解决时间 2021-02-21 12:52
- 提问者网友:清茶柒夏
- 2021-02-21 02:25
//这是自己编的一个费诺编码的C语言程序,运行时出现一个警告。
#include
#define SIZE 10
void Fano(int,int,int,double);
main()
{
int i=7,j=0,k=0;
double a[SIZE]={0.2,0.19,0.18,0.17,0.15,0.10,0.01};//数组a中存放输入的符号概率
Fano(j,k,i,a[SIZE]);
}
void Fano(int r,int x,int y,double b[SIZE])
{
int z,m,n,c[SIZE][SIZE];
double sum1=0,sum2=0,dec1,dec2;
if(y-x>1)
{
for(z=x;z<=y-1;z++)
{
sum1=sum1+b[z];
sum2=sum2+b[y-1-z];
while(sum1>=0.5)
{
dec1=sum1-sum2;
dec2=sum2+b[z]-(sum1-b[z]);
if(dec1 {
for(m=x;m<=z;m++)
c[r][m]=0;
for(n=z+1;n<=y-1;n++)
c[r][n]=1;
}
else
{
for(m=x;m<=z-1;m++)
c[r][m]=0;
for(n=z;n<=y-1;n++)
c[r][n]=1;
}
sum1=sum2=0;
break;
}
if(sum1=sum2=0)
break;
}
r++;
Fano(r,x,z,b[SIZE]);
Fano(r,z+1,y,b[SIZE]);
}
if(y-x==1)
{
c[r][x]=0;
c[r][y]=1;
}
}
PS:warning C4028: formal parameter 4 different from declaration
请帮忙看下是哪里不对,我始终找不出错误来。
最佳答案
- 二级知识专家网友:滚刀废物浮浪人
- 2021-02-21 03:47
第一个问题:
你这里的声明和定义不一致,声明的时候,Fano函数的第四个参数是一个变量,
但是定义的时候却是个数组。
根据你的程序我推断,你是想Fano函数的第四个参数为数组。
第二个问题:
如果我推断正确的话,那你就还有一个问题。
在函数调用传递一个数组的时候,只需要写上数组名就可以了,不需要加[],
否则就是传递一个数组元素了。
修改后的程序如下:
#include
#define SIZE 10
void Fano(int,int,int,double b[SIZE]);
main()
{
int i=7,j=0,k=0;
double a[SIZE]={0.2,0.19,0.18,0.17,0.15,0.10,0.01};//悢?a拞懚曻?擖揑晞崋奣棪
Fano(j,k,i,a);
}
void Fano(int r,int x,int y,double b[SIZE])
{
int z,m,n,c[SIZE][SIZE];
double sum1=0,sum2=0,dec1,dec2;
if(y-x>1)
{
for(z=x;z<=y-1;z++)
{
sum1=sum1+b[z];
sum2=sum2+b[y-1-z];
while(sum1>=0.5)
{
dec1=sum1-sum2;
dec2=sum2+b[z]-(sum1-b[z]);
if(dec1
{
for(m=x;m<=z;m++)
c[r][m]=0;
for(n=z+1;n<=y-1;n++)
c[r][n]=1;
}
else
{
for(m=x;m<=z-1;m++)
c[r][m]=0;
for(n=z;n<=y-1;n++)
c[r][n]=1;
}
sum1=sum2=0;
break;
}
if(sum1=sum2=0)
break;
}
r++;
Fano(r,x,z,b);
Fano(r,z+1,y,b);
}
if(y-x==1)
{
c[r][x]=0;
c[r][y]=1;
}
}
全部回答
- 1楼网友:安稳不如野
- 2021-02-21 05:03
你少一个}啦 ,还有不能使用scanf("%s",a);
遇到space就视为字串结束了
改了一下后,compiler正确无误的
--
#include "stdio.h"
#include "string.h"
int letter,digit,space,others;
int statistic (char []); //char []
main()
{
char a[100];
letter=digit=space=others=0;
printf("input string:\n");
gets(a);//不能使用scanf("%s",a);,遇到space就是为结束了
printf("string:%s\n",a);
statistic(a);
printf("letter:%d,digit:%d,space:%d,others:%d\n",letter,digit,space,others); //letter:%d
return 0;
}
int statistic(char b[])
{
int n,i;
n=strlen(b);
for (i=0;i='a'&&b[i]<='z') || (b[i]>='a'&&b[i]<='z') )
letter+=1;
else if ( b[i]<='9'&&b[i]>='0')
digit+=1;
else if ( b[i]==32)
space+=1;
else
others+=1;
} //for的}
return 0;//return 0;
}//少了}
我要举报
大家都在看
推荐资讯