永发信息网

简单问题 描述输入三个字符,按以下规则求其平均值。 (1)如果是数字0~9,那么直接参与求值; (2)如果

答案:1  悬赏:10  手机版
解决时间 2021-03-17 10:28
  • 提问者网友:伴风望海
  • 2021-03-16 10:30
描述输入三个字符,按以下规则求其平均值。
(1)如果是数字0~9,那么直接参与求值;
(2)如果是其他字符,则其ASCII码参与求值。

输入
输入数据有多组。第一行是数据的组数T,接下来由T行,每行有3个字符,没有其他任何多余字符。
输出
对于每组输入,根据规则输出平均值。保留2位小数。

样例输入
2
123
1A3

样例输出
2.00
23.00
//我的代码如下,为什么没错误,但是输入数据后就返回了呢,不解啊。求高人

#include "stdio.h"
#include "malloc.h"
float sum(char *p);
void main()
{
int N,loop;
float *result,*ptrresult;
char *p=NULL,*ptrp;
printf("plz input a number N:\n");
scanf("%d",&N);
result=(float *)calloc(N,sizeof(float));
ptrresult=result;
p=(char*)calloc(N*4,sizeof(char));
ptrp=p;
if(p!=NULL)
{
while(N)//输入N个长度为3的字符串
{
scanf("%s",p);
N=N-1;
if (N!=0)
p+=4;

}

for (loop=0;loop<N;loop++)//计算值,保存
{
*result=sum(ptrp);
ptrp+=4;
result++;
}
for (loop=0;loop<N;loop++)
{
printf("%.2f\n",*ptrresult++);
}
}
else
printf("分配内存错误!\n");

}

float sum(char *p)//求以p开始的3个的平均值
{
int i;
float sum=0;
for (i=0;i<3;i++)
{
if ((*p>='0')&&(*p<='9'))
{
sum+=(*p)-48;
}
else
sum+=(*p);
p++;

}
sum/=3.0;
return sum;
}
最佳答案
  • 五星知识达人网友:大漠
  • 2021-03-16 11:00
for (loop=0;loop<N;loop++)
{
printf("%.2f\n",*ptrresult++);
}
}
你程序执行到上面这块时,N已经变成0了,loop<N条件不成立,肯定输不出结果啦
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯