紧急求助!!!各位大侠请帮忙解决一下,小弟万分感谢!!!

时间:2022-08-24 14:12:27
问题如下:
已知数据文件in.dat中存放有200个四位整数,请编制满足要求的程序:
要求如下:  
  1)、用函数ReadDat()将in.dat中的全部数据读入到数组A中;
  2)、用函数jsVal()统计数组A中满足"千位减去百位减去十位减去个位大于○且该数为奇数"的所有四位数的个数(统计的个数赋给变量cnt),并将满足条件的四位数按照从小到大的顺序存入数组B中;
  3)、用函数WriteDat()将数组B中的内容输出到数据文件out.dat中;

初学 C 语言小弟实在搞他不定,请走过路过的朋友帮忙解决为谢!!!

8 个解决方案

#1


这是家庭作业吧,要答案来了

#2


没有什么断言一类的警告,主要功能实现如下:
我来给你做这个作业.

#include <stdio.h>
#include <stdlib.h>

#define N 200

void ReadDat(int a[])
{
FILE *fp;
fp = fopen ("d:\\in.dat","r");

for( int i = 0; i < N; i++)
fscanf(fp,"%d",&a[i]);
fclose(fp);
}
int jsVal(int a[],  int b[] )
{
int cnt = 0;
for(int i = 0; i < N; i++)
{
bool f = true;
int num = a[i] / 1000 - a[i] % 1000 / 100 - a[i] % 100 / 10 - a[i] % 10;
if( num > 1 )
{

for( int j = 2; j > num ; j++)
if( num % j == 0 )
f = false;
}
if( num > 0 && f )
{
*b++ = num;
cnt++;
}
}
return cnt;
}

void WriteDat( int b[], int cnt)
{
FILE *fp;
fp = fopen("d:\\out.dat","w");
for( int i = 0 ; i < cnt ; i++)
fprintf(fp, "%d " , b[i]);
fclose(fp);

}




int  main()
{
int A[N], B[N];

ReadDat(A);
int cnt = jsVal(A, B);
WriteDat(B, cnt);
return 0;
}

#3


感谢感谢!

#4


我看着怎么这么熟呢。。。。原来是考三级的机试题目! 我搞得多了 ,你小子也够笨,你不会读数据,你可以作弊啊,他的要求只要把数据存入数组就行了 ,实在不会,直接到in.dat文件里去把这些数据定义为数组A的元素不就行了? 笨!

#5


那帮忙指点一二啊!
我很着急啊!

#6


prf8(风筝) 兄弟,我有一个地方不太明白:请指点为谢:
if( num > 1 )
{
  for( int j = 2; j > num ; j++)
     if( num % j == 0 )
     f = false;
}
这一段按照你的思路应该是判断奇偶的,我可不太明白了!

#7


lovedufang(reddog):
救人一命胜造七级佛屠,你怎么留下话柄就溜了?太不够意思了吧?
我是真的很着急啊!

#8


这样就可以了。

#include <stdio.h>
#include <stdlib.h>
const int N = 200;

void ReadDat(int a[])
{
FILE *fp;
fp = fopen ("d:\\in.dat","r");

for( int i = 0; i < N; i++)
fscanf(fp,"%d",&a[i]);
fclose(fp);
}
int jsVal(int a[],  int b[] )
{
int cnt = 0;
for(int i = 0; i < N; i++)
{
bool f = true;
int num = a[i] / 1000 - a[i] % 1000 / 100 - a[i] % 100 / 10 - a[i] % 10;
if( num > 0 && a[i]%2 !=0  )
{
b[cnt] = a[i];
cnt++;
}
}

for( i = 0;i <= cnt;i++ )
{ int c;
for( int j = i; j <= cnt; j++)
{
if( b[i] > b[j])
{
c = b[j];
b[j] = b[i];
b[i] = c;
}
}
}

return cnt;
}

void WriteDat( int b[], int cnt)
{
FILE *fp;
fp = fopen("d:\\out.dat","w");
for( int i = 0 ; i < cnt ; i++)
fprintf(fp, "%d " , b[i]);
fclose(fp);

}

#1


这是家庭作业吧,要答案来了

#2


没有什么断言一类的警告,主要功能实现如下:
我来给你做这个作业.

#include <stdio.h>
#include <stdlib.h>

#define N 200

void ReadDat(int a[])
{
FILE *fp;
fp = fopen ("d:\\in.dat","r");

for( int i = 0; i < N; i++)
fscanf(fp,"%d",&a[i]);
fclose(fp);
}
int jsVal(int a[],  int b[] )
{
int cnt = 0;
for(int i = 0; i < N; i++)
{
bool f = true;
int num = a[i] / 1000 - a[i] % 1000 / 100 - a[i] % 100 / 10 - a[i] % 10;
if( num > 1 )
{

for( int j = 2; j > num ; j++)
if( num % j == 0 )
f = false;
}
if( num > 0 && f )
{
*b++ = num;
cnt++;
}
}
return cnt;
}

void WriteDat( int b[], int cnt)
{
FILE *fp;
fp = fopen("d:\\out.dat","w");
for( int i = 0 ; i < cnt ; i++)
fprintf(fp, "%d " , b[i]);
fclose(fp);

}




int  main()
{
int A[N], B[N];

ReadDat(A);
int cnt = jsVal(A, B);
WriteDat(B, cnt);
return 0;
}

#3


感谢感谢!

#4


我看着怎么这么熟呢。。。。原来是考三级的机试题目! 我搞得多了 ,你小子也够笨,你不会读数据,你可以作弊啊,他的要求只要把数据存入数组就行了 ,实在不会,直接到in.dat文件里去把这些数据定义为数组A的元素不就行了? 笨!

#5


那帮忙指点一二啊!
我很着急啊!

#6


prf8(风筝) 兄弟,我有一个地方不太明白:请指点为谢:
if( num > 1 )
{
  for( int j = 2; j > num ; j++)
     if( num % j == 0 )
     f = false;
}
这一段按照你的思路应该是判断奇偶的,我可不太明白了!

#7


lovedufang(reddog):
救人一命胜造七级佛屠,你怎么留下话柄就溜了?太不够意思了吧?
我是真的很着急啊!

#8


这样就可以了。

#include <stdio.h>
#include <stdlib.h>
const int N = 200;

void ReadDat(int a[])
{
FILE *fp;
fp = fopen ("d:\\in.dat","r");

for( int i = 0; i < N; i++)
fscanf(fp,"%d",&a[i]);
fclose(fp);
}
int jsVal(int a[],  int b[] )
{
int cnt = 0;
for(int i = 0; i < N; i++)
{
bool f = true;
int num = a[i] / 1000 - a[i] % 1000 / 100 - a[i] % 100 / 10 - a[i] % 10;
if( num > 0 && a[i]%2 !=0  )
{
b[cnt] = a[i];
cnt++;
}
}

for( i = 0;i <= cnt;i++ )
{ int c;
for( int j = i; j <= cnt; j++)
{
if( b[i] > b[j])
{
c = b[j];
b[j] = b[i];
b[i] = c;
}
}
}

return cnt;
}

void WriteDat( int b[], int cnt)
{
FILE *fp;
fp = fopen("d:\\out.dat","w");
for( int i = 0 ; i < cnt ; i++)
fprintf(fp, "%d " , b[i]);
fclose(fp);

}