#include<stdio.h>
#include<conio.h>
int a[1000],b/*设定数据不超过1000个*/
long sum
main()
{
readDat()
writeDat()
printf("\n Press any key to quit...")
getch()
}
readDat()
{
FILE *fp
int i=0
fp=fopen("IN.dat","r")
while(!feof(fp)) /*不超过1000个,有多长读多长*/
fscanf(fp,"%d",&a[i++])
b=i
for(i=0i<bi++)
sum+=a[i]
fclose(fp)
}
writeDat()
{
FILE *fp
int i
clrscr()
fp=fopen("OUT.dat","w")
printf("Average of %d numbers is:\n%10.2f",b,(float)sum/b)
fprintf(fp,"%5.2f",(float)sum/b)
fclose(fp)
}
程序计算结果是:200 5158.00
这里设文件IN.dat内容为200个整数:
1001 2001 1012 1034 1067 1111 1166 1232 1309 1397
1496 1506 1527 1559 1602 1656 1721 1797 1884 1982
2091 2111 2142 2184 2237 2301 2376 2462 2559 2667
2786 2816 2857 2909 2972 3046 3131 3227 3334 3452
3581 3621 3672 3734 3807 3891 3986 4092 4209 4337
4476 4526 4587 4659 4742 4836 4941 5057 5184 5322
5471 5531 5602 5684 5777 5881 5996 6122 6259 6407
6566 6636 6717 6809 6912 7026 7151 7287 7434 7592
7761 7841 7932 8034 8147 8271 8406 8552 8709 8877
9056 9146 9247 9359 9482 9616 9761 9917 8084 8262
8451 8551 8662 8784 8917 1061 1216 1382 1559 1747
1946 2056 2177 2309 2452 2606 2771 2947 3134 3332
3541 3661 3792 3934 4087 4251 4426 4612 4809 5017
5236 5366 5507 5659 5822 5996 6181 6377 6584 6802
7031 7171 7322 7484 7657 7841 8036 8242 8459 8687
8926 9076 9237 9409 9592 9786 9991 8207 8434 8672
8921 1081 1252 1434 1627 1831 2046 2272 2509 2757
3016 3186 3367 3559 3762 3976 4201 4437 4684 4942
5211 5391 5582 5784 5997 6221 6456 6702 6959 7227
7506 7696 7897 8109 8332 8566 8811 9067 9334 9612
本题的一个完整的c程序如下,其中函数为num()可以处理负数,-20.50四舍五入后为-21,-100.49四舍五入后为-100,10.50四舍五入后为11.程序在Dev-c++下运行通过且结果正确。
/* 请写一个简单的函数,不是main, 由一个任意长度的double的数组,return另一个相同长度的数组,由int值组成,所有值由原来的double数四舍五入小数部分得来。 */
#include <stdio.h>
#include <conio.h>
int *num()
main()
{ int i,n,*q,*s
double *p
printf("Please input the number of digits:\n")
scanf("%d",&n)
p=(double *)malloc(n*sizeof(double))
q=(int *)malloc(n*sizeof(int))
printf("Please input %d digits one by one:\n",n)
for(i=0i<ni++)
scanf("%lf",p+i)
s=num(p,q,n)
printf("The array you want are:\n")
for(i=0i<ni++)
printf("%6d",*(s+i))
free(p)
free(q)
getch()
}
int *num(double *p,int *q,int n)
{ int i
for(i=0i<ni++)
{
if(p[i]>=0)
{ if((int)(p[i]+0.5)>(int)p[i])
q[i]=(int)p[i]+1
else
q[i]=(int)p[i]
}
else
{ if((int)(p[i]+0.5)>(int)p[i])
q[i]=(int)p[i]
else
q[i]=(int)p[i]-1
}
}
return q
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)