小弟求教一道考试题目!!急!

zhouyu1215 2008-10-14 10:36:42
考题: 整数统计运算题(C语言)
已知在文件C:\temp\IN.DAT中存有若干个(个数<100)四位数字的正整数,调用函数ReadDat()读取这若干个正整数并存入数组xx中。
请编制函数CalValue(),其功能要求:
1、在控制台输出所有正整数的平均数;
2、在控制台输出这些数中的各位数字之和是奇数的正整数的个数 ;
3、最后调用函数writeDat()把满足条件2的正整数按从小到大的顺序输出到文件C:\temp\OUT.DAT中。

考试时间:60分钟 — 90分钟

...全文
123 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouyu1215 2008-10-15
  • 打赏
  • 举报
回复
3q 楼上的
  • 打赏
  • 举报
回复
1、打开文件会吧???会的话,先统计个数,然后定义数组

2、读取数据会吧????会的话,读取数据到数组

3、求和会不?会的话求和,然后根据1中统计的个数求平均

4、计算各位会不?就是一些求余什么的,会的话顺便统计一下就ok了

5、求奇数就更简单了,不多说了……

6、排序,那么多排序算法,至少会一个吧?随便找一个算法,按照要求排序

7、写文件,这个和读取文件基本一样

8、写文件无论出错与否,记得fclose关闭文件,不然没有数据

基本思路出来了,具体的自己写吧!~
  • 打赏
  • 举报
回复
都是很基本的东西,自己写吧!~

自己写才能进步……

看着像c语言2级考试的笔试题
xiaoyuer5222 2008-10-14
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
#define DATA_NO 10
struct fileDataArray ReadDat(char *filepath);/*将数据从文件中读出,保存在结构体体中,并返回*/
void WriteDat(char *fileptr,int array[],int n);/*将数据写入文件*/
int judgeOddNumber(int x);/*判断一个数的各位之和是否是奇数,若是返回1,否则返回0*/
void sort(int array[],int n);/*从小到大排序*/

struct fileDataArray
{
int data[100];
};
void main()
{
struct fileDataArray a;
struct fileDataArray b;
int OddArray[100];
int i;
int j;
int k;
int sum;
int originalArray[]={1002, 1005, 1008, 1006, 1007 ,1004, 1000 ,1001 ,1003 ,1009};
/*此例只是在当前路径下建立IN.DAT,OUT.DAT文件,可以自行更改路径*/
char *infile="IN.DAT";
char *outfile="OUT.DAT";
sum=0;
j=0;
/*建立IN.DAT文件,其中的数据为originalArray中的数*/
WriteDat(infile,originalArray,sizeof(originalArray)/sizeof(originalArray[0]));
/*从IN.DAT中读取数据*/
a=ReadDat(infile);
printf("%s 文件中的所有数:\n",infile);
/*打印所有数据及平均值,并找出各位之和为奇数的数,存在数组OddArray中*/
for (k=0;k<sizeof(originalArray)/sizeof(originalArray[0]);k++)
{

printf("%-10d",a.data[k]);
if (judgeOddNumber(a.data[k]))
OddArray[j++]=a.data[k];
sum+=a.data[k];
}
printf("\n和:%d 平均数:%.2f\n",sum,(float)sum/k);
printf("各位数之和为奇数的数:\n");
for (i=0;i<j;i++)
printf("%-10d",OddArray[i]);
printf("\n");
/*将各位数之和为奇数的数进行排序(从小到大)*/
printf("从小到大排序后为:\n");
sort(OddArray,j);
for (i=0;i<j;i++)
printf("%-10d",OddArray[i]);
printf("\n");
/*将各位数这和为奇数的数按照从小到大的顺序写入OUT.DAT文件*/
WriteDat(outfile,OddArray,j);
/*从OUT.DAT中读取数据,检查数据是否写入正确*/
b=ReadDat(outfile);
printf("%s 文件中的所有数为:\n",outfile);
for (i=0;i<j;i++)
printf("%-10d",b.data[i]);
printf("\n");
}

struct fileDataArray ReadDat(char *filepath)
{
FILE *fp;
static struct fileDataArray dataArray;
int i;
if ((fp=fopen(filepath,"rb"))==NULL)
{
printf("cannot open file!\n");
exit(0);
}
i=0;
while(!feof(fp))
dataArray.data[i++]=getw(fp);
fclose(fp);
return dataArray;
}
void WriteDat(char *fileptr,int array[],int n)
{
FILE *fp;
int i;
if ((fp=fopen(fileptr,"wb"))==NULL)
{
printf("cannot open file!\n");
exit(0);
}
for (i=0;i<n;i++)
{
putw(array[i],fp);
}
fclose(fp);

}
int judgeOddNumber(int x)
{
int Array[20];
int i;
int j;
int NO;
i=0;
NO=0;
while(x)
{
Array[i++]=x%10;
x=x/10;
}
for (j=0;j<i;j++)
{
NO+=Array[j];
}
if (NO%2==0)
return 0;
else
return 1;
}


void sort(int array[],int n)
{
int i;
int j;
int k;
int temp;
for (i=0;i<n-1;i++)
{
k=i;
for (j=i+1;j<n;j++)
if (array[k]>array[j])
k=j;
if (k!=i)
{
temp=array[i];
array[i]=array[k];
array[k]=temp;
}
}
}

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧