已知数据文件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;
}
我来给你做这个作业.
#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;
}
这一段按照你的思路应该是判断奇偶的,我可不太明白了!
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);
}
#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;
}
我来给你做这个作业.
#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;
}
这一段按照你的思路应该是判断奇偶的,我可不太明白了!
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);
}
#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);
}