
c语言 来个高手帮忙解惑
会这样;int i;
float j,k;
k=j/i;
这样的式子为什么会提示什么“from int to float"或者"from float to int
不这么定义我该怎么样定义它才不算错;下面一段程序,希望来个
高手帮忙解解惑
#include<stdio.h>
agev(float *p1[3],int n) /*求平均值*/
{ float all=0,age;
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
all=all+*(*(p1+i)+j)+*(*(p1+i)+(j+1));
age=all/n;
}
return(age);
}
student_scor(float *p2[3],int n)/*输出某位学生n的分数*/
{
int j;
for(j=0;j<4;j++)
printf("%5.2f ",*(*(p2+n)+j));
}
void main()/*求3个学生的4个成绩平均分,并输出某位学生的成绩*/
{float a[3][4]={{63,52,80,69},{80,56,88,73},{88,68,65,40}};
float *p[3],ager;
int n;
scanf("%d",&n);
p=a;
ager=agev(p,12);
printf("ager=%5.2f\n",ager);
student_scor(p,n);
} 展开
#include<stdio.h>
float agev(float *p1[3],int n) /*求平均值*/
{ float all=0,age;
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
all=all+*(*(p1+i)+j)+*(*(p1+i)+(j+1));
age=all/n;
}
return(age);
}
void student_scor(float *p2[3],int n)/*输出某位学生n的分数*/
{
int j;
for(j=0;j<4;j++)
printf("%5.2f ",*(*(p2+n-1)+j));
printf("\n");
}
void main()/*求3个学生的4个成绩平均分,并输出某位学生的成绩*/
{float a[3][4]={{63,52,80,69},{80,56,88,73},{88,68,65,40}};
float *p[3],ager;
int n;
for(int i=0;i<3;i++)
{
p[i]=a[i];
}
ager=agev(p,12);
printf("ager=%5.2f\n",ager);
printf("输入要查询的第几个学生(n>=1&&n<=3)");
scanf("%d",&n);
student_scor(p,n);
}
从int转换为float
此时最好将第三句写成:
k = j / (float)i;
并且在这句之前一定要加上i非零判断,
因为0不能做除数。
应该写成:
int i; //默认初始化为0
float j, k;
if(0 != i) //如果i不为0
{
k = j / (float)i;
}
第二个问题:
应该这样写:
#include<stdio.h>
float agev(float *p1[3],int n) /*求平均值,这应该有返回值*/
{ float all=0,age;
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
all=all+*(*(p1+i)+j)+*(*(p1+i)+(j+1));
age=all/n;
}
return(age);
}
void student_scor(float *p2[3],int n)/*输出某位学生n的分数*/
{
int j;
for(j=0;j<4;j++)
printf("%5.2f ",*(*(p2+n)+j));
}
int main()/*求3个学生的4个成绩平均分,并输出某位学生的成绩*/
{
float a[3][4]={{63,52,80,69},{80,56,88,73},{88,68,65,40}};
float *p[3],ager;
int n;
scanf("%d",&n);
p[0]=a[0];/*这个地方盘p是数组,是常量,不能被赋值,p[0]才是一个指针*/
ager=agev(p,12);
printf("ager=%5.2f\n",ager);
student_scor(p,n);
getchar();
return 0;
}