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);

}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-05-11
第一:
从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;
}本回答被提问者采纳
第2个回答  2010-07-21
float all=0.0

c语言高手帮帮忙!
"王","李","赵"}; int i,t,n=N,cnt[4]={0},f=0,z=0,max=0; printf("当前共%d个投票人 ,请投张:1 王:2 李:3 赵:4 (输入-1结束投票)\\n",N); while(n--) { scanf("%d",&t); if(

C语言的问题 请高手帮忙回答 谢谢~!~急···
肯定有15 while (i<15)if(++i%3!=0) continue;else printf(“%3d”,i);} 当i=14时,进入循环,先执行++i进行if判断,此时i变成15,if条件不满足(15%3==0),执行else,打印15

C语言的问题,高手进来帮帮忙
include <stdlib.h> void main(){ \/\/ 开始 \/\/创建 整型数变量a 三个元素的数组b int a,b[3];int i,j,k;\/\/输出并换行 printf("输入一个三位数:\\n");\/\/ 输入一个数值,赋给变量a scanf("%d",&a);\/\/ 循环 先 i=100, j=0 如果 i>1 就继续循环,每次循环后 i=i\/10, j=j...

C语言的题目高手帮忙解释下 printf ("%d\\n",p);printf ("%d\\n...
输出的都是指针的值。p+9,由于p是int型指针,int占两个字节,p+9的值比p的值多2*9=18 正解应是 A 212 由于题目已经说了int为2字节,你调试的机器上int是4字节,所以会差36

c语言高手帮忙:从键盘输入10个整数。用选择法或冒泡法将它们从小到大...
main(){ int s[10],t,i,j,x;printf("input 10 numbers:\\n");for(t=0;t<10;t++)scanf("%d",&s[t]);for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(s[j]>s[j+1]){t=s[j];s[j]=s[j+1];s[j+1]=t;} printf("the result is:\\n ");for(j=0;j<10;j++)p...

C语言高手帮帮忙~~~
这么简单的,还要翻译?就是找这个的三位数:各位的数字的立方和,等于该数

大学c语言编程,高手帮帮忙,要求编写五十行以上
int ReadDat(int *a);int JsValue(int *a,int *b);void WriteDat(int *b,int cnt);int main(void){ int cnt;int *a=malloc(NUMBER*sizeof(int));\/\/数组a有一百个成员,相对较大,所以采用动态非配 int *b=malloc(NUMBER*sizeof(int));ReadDat(a);cnt=JsValue(a,b);WriteDat(b...

紧急状况。请c语言高手帮忙解决一下。让我过个好年吧。疯了我快。_百 ...
你要是给个例程或流程图就好了,我这里先给你个参考:你没有说明事先设定的密码是怎么设定的, 我暂时以123456为秘密代替,参考程序如下:include <stdio.h> include <string.h> \/\/加密\/解密算法 void JiaMiJieMi(char chDial[]){ int i;char chTemp;for (i=0; i<4; i++){ chDial[i] =...

C语言 求教高手帮忙解答
函数fun()的功能是 当输入的字符是大写是,将该字符的ASCII值加32,也就是转换为小写。而scanf()函数不能输入空格,因此输入My book时,实际只输入了My fun()函数将M转换为小写,并由putchar()函数输出

请C语言高手帮忙解决一下
在Windows下这段代码编译运行后会产生错误,阁下那句system("pause");根本得不到运行。另外,楼主已经包含stdlib.h。自动弹出的原因是产生了运行时错误。运行时错误一般是由于指针的使用不当造成的。解决方法:将[char *r1;]改为[char *r1=&m;]解释:r1未初始化。当if(pop(r,r1)!=dequeue(s,s1...

相似回答
大家正在搜