大学c语言编程,高手帮帮忙,要求编写五十行以上

该程序设计四个函数:读函数ReadDat()把100个四位数从键盘存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()输出。在main()函数中调用以上函数。

第1个回答  2012-05-26
#include<stdio.h>
#include<stdlib.h>
#define NUMBER 100
int ReadDat(int *a);
int JsValue(int *a,int *b);
void WriteDat(int *b,int cnt);
int main(void)
{
int cnt;
int *a=malloc(NUMBER*sizeof(int));//数组a有一百个成员,相对较大,所以采用动态非配
int *b=malloc(NUMBER*sizeof(int));
ReadDat(a);
cnt=JsValue(a,b);
WriteDat(b,cnt);

return 0;
}
int ReadDat(int *a)
{
int i;
printf("please enter %d Four-digit:\n",NUMBER);
for(i=0;i<NUMBER;i++)
{
printf("%d\tFour-digi:",i+1);
scanf("%d",a++);
}
return 0;
}
int JsValue(int *a,int *b)
{int i,n,flag=0,cnt=0;
for(i=0;i<NUMBER;i++)
{
flag=0;
for(n=2;n<*a;n++)
if(*a%n==0)
{
flag=1;break;
}
if(flag==0)
{
*b++=*a;
cnt++;
}
a++;
}
return cnt;
}
void WriteDat(int *b,int cnt)
{
int i;
for(i=0;i<cnt;i++)
printf("%d\t",*b++);
printf("\n");
}
已经调试过,符合你要求啦,希望你满意,满意就采纳吧,灰常感谢!
第2个回答  2012-05-26
#include<stdio.h>
#include<math.h>
bool isprime(int x);
void ReadDat(int a[100]);
void jsValue(int a[100],int b[100]);
void WriteDat(int b[100]);
void main()
{

int i,cnt=0;int a[100],b[100];
ReadDat(a[100]);
jsValue( a[100], b[100])
WriteDat( b[100]);

}

void ReadDat(int a[100])
{
int i;
printf("请输入100个四位数");
for(i=0;i<100;i++)
scanf("%d",&a[i]);
}

void jsValue(int a[100],int b[100])
{
int i;
for(i=0;i<100;i++)
{
if(isprime(a[i])==1)

{
b[cnt]=a[i];
cnt++;
}

}
}

void WriteDat(int b[100])
{
int t,i,j;
for(i=0;i<cnt;i++)
for(j=i+1;j<=cnt;j++)
{
if(b[i]>b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;

}
}

for(i=0;i<=cnt;i++)
{
printf("这些素数从小到大排列为%d ",b[i]);
}

}

bool isprime(int x)//判断是否为素数的函数
{
int m=(int)sqrt(x);

for(int i=2;i<=m;i++)

if(x%i==0)
return 0;
return 1;
}本回答被提问者采纳
第3个回答  2012-05-26
#include<stdio.h>
#include<math.h>
void ReadDat(int a[])
{
int i;
printf("请输入100个四位数\n");
for(i=0;i<100;i++)
scanf("%d",&a[i]);
}
int isprime(int x)//判断是否为素数的函数
{
int i;
int m=(int)sqrt(x);
for(i=2;i<=m;i++)
if(x%i==0)
return 0;
return 1;
}
int jsValue(int a[100],int b[100])
{
int i,cnt=0;
for(i=0;i<100;i++)
{
if(isprime(a[i])==1)
{
b[cnt]=a[i];
cnt++;
}
}
return cnt;
}
void WriteDat(int b[100],int cnt)
{
int t,i,j;
for(i=0;i<cnt;i++)
for(j=i+1;j<=cnt;j++)
{
if(b[i]>b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
}
for(i=0;i<=cnt;i++)
{
printf("这些素数从小到大排列为%d ",b[i]);
}
}
void main()
{
int a[100],b[100],cnt;
cnt=jsValue(&a[100],&b[100]);
ReadDat(&a[100]);
jsValue(&a[100],&b[100]);
WriteDat(&b[100],cnt);
}
第4个回答  2012-05-26
主要就是要掌握函数的调用
第5个回答  2012-05-26
请教你们老师!
相似回答