一道C语言题!!急
☆题目1请编写一个函数jsValue(intm,intk,intxx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。最后调用函数writeDat(...
☆题目1
请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。
最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。
部分源程序存在文件prog1.c中。
例如:若输入17 5 则应输出:19,23,29,31,37。
请勿改动主函数main()和写函数writeDat()的内容。
#include
#include
void readwriteDat();
int isP(int m)
{
int i;
for(i=2;i if(m % i==0)return 0;
return 1;
}
void num(int m,int k,int xx[])
{ int s=0;
for(m=m+1;k>0;m++)
if(isP(m)) { xx[s++]=m; k--;}
}
main()
{
int m,n,xx[1000];
clrscr();
printf("\nPlease enter two integers:");
scanf("%d%d",&m,&n);
num(m,n,xx);
for(m=0;m printf("%d ",xx[m]);
printf("\n");
readwriteDat();
}
void readwriteDat()
{
int m,n,xx[1000], i;
FILE *rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(rf,"%d %d",&m,&n);
num(m,n,xx);
for(m=0;m }
fclose(rf);
fclose(wf);
}
帮写下,很解释下,我没做过这样文件的题目。
有点晕。
例如:若输入17 5 则应输出:19,23,29,31,37。
意思就是大于17的5个素数!! 展开
请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。
最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。
部分源程序存在文件prog1.c中。
例如:若输入17 5 则应输出:19,23,29,31,37。
请勿改动主函数main()和写函数writeDat()的内容。
#include
#include
void readwriteDat();
int isP(int m)
{
int i;
for(i=2;i if(m % i==0)return 0;
return 1;
}
void num(int m,int k,int xx[])
{ int s=0;
for(m=m+1;k>0;m++)
if(isP(m)) { xx[s++]=m; k--;}
}
main()
{
int m,n,xx[1000];
clrscr();
printf("\nPlease enter two integers:");
scanf("%d%d",&m,&n);
num(m,n,xx);
for(m=0;m printf("%d ",xx[m]);
printf("\n");
readwriteDat();
}
void readwriteDat()
{
int m,n,xx[1000], i;
FILE *rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(rf,"%d %d",&m,&n);
num(m,n,xx);
for(m=0;m }
fclose(rf);
fclose(wf);
}
帮写下,很解释下,我没做过这样文件的题目。
有点晕。
例如:若输入17 5 则应输出:19,23,29,31,37。
意思就是大于17的5个素数!! 展开
5个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
int isP(int m)
{
int i ;
for(i = 2 ; i <= m/2 ; i++)//判断一个正整数是否为素数(质数)
if(m % i == 0) return 0 ;
return 1 ;
}
void num(int m,int k,int xx[])
{
int i=0;
for(m=m+1;k>0;m++)
if(isP(m))
{
xx[i++]=m;//是素数则存入数组xx[]中
k--;
}
}
void readwriteDAT()
{
int m, n, xx[1000], i;
FILE *rf, *wf ;
rf = fopen("in.dat", "r");//从文件in.dat中读入10组m和n
wf = fopen("out.dat", "w"); //结果写入文件out.dat中
for(i = 0 ; i < 10 ; i++)
{
fscanf(rf,"%d%d",&m,&n);//从文件中取出m和n
num(m,n,xx) ; //调用找合乎条件的素数
for(m=0;m < n ; m++)
fprintf(wf, "%d ", xx[m]); //结果写入文件out.dat中
fprintf(wf, "\n");
}
fclose(rf);//程序结束前必须关闭前面打开的文件
fclose(wf);
}
int main(void)
{
int m, n, xx[1000] ;
system("cls"); //清屏
printf("Please input two integers m and n : ") ;
scanf("%d%d", &m, &n ) ;//从键盘输入m和n
num(m, n, xx) ; //调用找合乎条件的素数
printf("The %d prime numbers which are larger than %d are:\n ",n,m);
for(m = 0 ; m < n ; m++)
printf(" %d ", xx[m]) ;//结果显示到屏幕
readwriteDAT(); //调用函数readwriteDAT(),此函数再次从文件in.dat中读入10组m,n值。然后再调用找素数函数num(m, n, xx)将结果直接写入文件out.dat,这个结果没有在屏幕上显示,这是和上面从键盘输入是不同的m和n
system("pause");
return 0;
}
#include <stdlib.h>
int isP(int m)
{
int i ;
for(i = 2 ; i <= m/2 ; i++)//判断一个正整数是否为素数(质数)
if(m % i == 0) return 0 ;
return 1 ;
}
void num(int m,int k,int xx[])
{
int i=0;
for(m=m+1;k>0;m++)
if(isP(m))
{
xx[i++]=m;//是素数则存入数组xx[]中
k--;
}
}
void readwriteDAT()
{
int m, n, xx[1000], i;
FILE *rf, *wf ;
rf = fopen("in.dat", "r");//从文件in.dat中读入10组m和n
wf = fopen("out.dat", "w"); //结果写入文件out.dat中
for(i = 0 ; i < 10 ; i++)
{
fscanf(rf,"%d%d",&m,&n);//从文件中取出m和n
num(m,n,xx) ; //调用找合乎条件的素数
for(m=0;m < n ; m++)
fprintf(wf, "%d ", xx[m]); //结果写入文件out.dat中
fprintf(wf, "\n");
}
fclose(rf);//程序结束前必须关闭前面打开的文件
fclose(wf);
}
int main(void)
{
int m, n, xx[1000] ;
system("cls"); //清屏
printf("Please input two integers m and n : ") ;
scanf("%d%d", &m, &n ) ;//从键盘输入m和n
num(m, n, xx) ; //调用找合乎条件的素数
printf("The %d prime numbers which are larger than %d are:\n ",n,m);
for(m = 0 ; m < n ; m++)
printf(" %d ", xx[m]) ;//结果显示到屏幕
readwriteDAT(); //调用函数readwriteDAT(),此函数再次从文件in.dat中读入10组m,n值。然后再调用找素数函数num(m, n, xx)将结果直接写入文件out.dat,这个结果没有在屏幕上显示,这是和上面从键盘输入是不同的m和n
system("pause");
return 0;
}
展开全部
//
Test.cpp
:
Defines
the
entry
point
for
the
console
application.
//
#include
"stdafx.h"
#include
"stdio.h"
FILE
*stream;
FILE
*stream1;
//从data.txt读出10个数,放到长度为20的数组a中,下标0-9。
void
readData(int
a[],
int
n);
//统计10个数中偶数的个数,并输出。
int
countEven(int
a[]);
//求出10个数的平方数,分别放到数组a中,下标10-19。
void
squareArray(int
a[],
int
n);
//最后将20个数依次写到文件result.txt中。
void
writeData(int
a[],
int
n);
void
main(int
argc,
char*
argv[])
{
int
a[20];
int
n=10;
int
nEven;
//
打开数据文件
readData(a,n);
nEven=countEven(a);
printf("nEven=%d",nEven);
squareArray(a,
n);
writeData(a,
n);
}
void
readData(int
a[],int
n)
{
int
i;
if(
(stream
=
fopen(
"data.txt",
"r"
))
==
NULL
)
//
{
printf(
"文件未能打开!\n"
);
return;
}
for(i=0;i<n;i++)
{
fscanf(stream,"%d",&(a[i]));
}
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
}
int
countEven(int
a[])
{
int
i;
int
n=10;
int
nEven=0;
for(i=0;i<10;i++)
{
if(a[i]%2==0)
nEven++;
}
return
nEven;
}
void
squareArray(int
a[],
int
n)
{
int
i;
for(i=0;i<10;i++)
{
a[i+n]=a[i]*a[i];
}
return
;
}
void
writeData(int
a[],
int
n)
{
int
i;
if(
(stream1
=
fopen(
"result.txt",
"w"
))
==
NULL
)
//
{
printf(
"result文件未能打开!\n"
);
return;
}
for(i=0;i<n*2;i++)
{
fprintf(stream1,"%d\t",a[i]);
}
return;
}
Test.cpp
:
Defines
the
entry
point
for
the
console
application.
//
#include
"stdafx.h"
#include
"stdio.h"
FILE
*stream;
FILE
*stream1;
//从data.txt读出10个数,放到长度为20的数组a中,下标0-9。
void
readData(int
a[],
int
n);
//统计10个数中偶数的个数,并输出。
int
countEven(int
a[]);
//求出10个数的平方数,分别放到数组a中,下标10-19。
void
squareArray(int
a[],
int
n);
//最后将20个数依次写到文件result.txt中。
void
writeData(int
a[],
int
n);
void
main(int
argc,
char*
argv[])
{
int
a[20];
int
n=10;
int
nEven;
//
打开数据文件
readData(a,n);
nEven=countEven(a);
printf("nEven=%d",nEven);
squareArray(a,
n);
writeData(a,
n);
}
void
readData(int
a[],int
n)
{
int
i;
if(
(stream
=
fopen(
"data.txt",
"r"
))
==
NULL
)
//
{
printf(
"文件未能打开!\n"
);
return;
}
for(i=0;i<n;i++)
{
fscanf(stream,"%d",&(a[i]));
}
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
}
int
countEven(int
a[])
{
int
i;
int
n=10;
int
nEven=0;
for(i=0;i<10;i++)
{
if(a[i]%2==0)
nEven++;
}
return
nEven;
}
void
squareArray(int
a[],
int
n)
{
int
i;
for(i=0;i<10;i++)
{
a[i+n]=a[i]*a[i];
}
return
;
}
void
writeData(int
a[],
int
n)
{
int
i;
if(
(stream1
=
fopen(
"result.txt",
"w"
))
==
NULL
)
//
{
printf(
"result文件未能打开!\n"
);
return;
}
for(i=0;i<n*2;i++)
{
fprintf(stream1,"%d\t",a[i]);
}
return;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include "stdio.h"
#include "stdlib.h"
void readwriteDat();
int isP(int m)
{
int i;
for(i=2;i<=m/2;i++)
if(m % i==0) return 0;
return 1;
}
void num(int m,int k,int xx[])
{
int s=0;
for(m=m+1;k>0;m++)
if(isP(m)) { xx[s++]=m; k--;}
}
main()
{
int m,n,xx[1000];
printf("\nPlease enter two integers:");
scanf("%d %d",&m,&n);
num(m,n,xx);
for(m=0;m<n;m++)
printf("%d ",xx[m]);
printf("\n");
readwriteDat();
}
void readwriteDat()
{
int m,n,xx[1000], i;
FILE *rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(rf,"%d %d",&m,&n);
num(m,n,xx);
for(m=0;m<n;m++)
fprintf(wf,"%d ",xx[m]);
}
fclose(rf);
fclose(wf);
}
readwriteDat()这个函数是从IN.DAT中读取数据的吧,感觉用处不大
#include "stdlib.h"
void readwriteDat();
int isP(int m)
{
int i;
for(i=2;i<=m/2;i++)
if(m % i==0) return 0;
return 1;
}
void num(int m,int k,int xx[])
{
int s=0;
for(m=m+1;k>0;m++)
if(isP(m)) { xx[s++]=m; k--;}
}
main()
{
int m,n,xx[1000];
printf("\nPlease enter two integers:");
scanf("%d %d",&m,&n);
num(m,n,xx);
for(m=0;m<n;m++)
printf("%d ",xx[m]);
printf("\n");
readwriteDat();
}
void readwriteDat()
{
int m,n,xx[1000], i;
FILE *rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(rf,"%d %d",&m,&n);
num(m,n,xx);
for(m=0;m<n;m++)
fprintf(wf,"%d ",xx[m]);
}
fclose(rf);
fclose(wf);
}
readwriteDat()这个函数是从IN.DAT中读取数据的吧,感觉用处不大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我认为大家都错了
fscanf 只能是文件中有数据
然后fprintf是实现数据的复制
fscanf 只能是文件中有数据
然后fprintf是实现数据的复制
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能不能说明白点??大于整数m且紧靠m算什么意思呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询