编写一个程序实现从键盘上任意输入50个正整数,找出其中的素数,并将其按升序排列。

急!!!

编写一个程序实现从键盘上任意输入50个正整数,找出其中的素数,并将其按升序(降序)排列
/*(1)编写一个程序实现从键盘上任意输入50个正整数,找出其中的素数,并将其按升序排列。*/
#include "stdio.h"
#include "math.h"
#define N 50 //可改输入的个数
int prime(int m) //判断素数
{
int i,k;
k=sqrt(m);
for ( i = 2; i<=k; i++)
if(m%i ==0)
return 0;
return 1;
}
int main()
{
int i,j,m,k,n,w=0,t,a[N],b[N];
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
m=a[i];
if (prime(m))//判断素数
{
b[w]=m; //b[]是选出来的素数
w++;//b[]下标

}

}
//升序 选择法排序
for ( i = w; i <=w-2; i++)
{
k=i;
for ( j = i+1; j<=w-1; j++)
{
if (b[j]<b[k])
{
k=j;
t=b[k];
b[k]=b[i];
b[i]=t;

}

}

}
/*
for ( i = 0; i <=w-2; i++)
{
k=i;
for ( j = i+1; j<=w-1; j++)
{
if (b[j]>b[k])
{
k=j;
t=b[k];
b[k]=b[i];
b[i]=t;
}

}

} */ //降序
for (i = 0; i<w; i++)
{
printf("%d ",b[i]);
}

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-26
#include<stdio.h>void main()
{
int a[50],b[50]={0},i,j,flag,k=0,temp,n;
printf("请输入正整数的个数:");
scanf("%d",&n);
printf("请输入%d个正整数:",n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
flag=0;
for(j=2;j<=sqrt(a[i]);j++){
if(a[i]%j==0){
flag=1;
break;
}
}
if(flag==0) b[k++]=a[i];
}for(i=k-1;i>=0;i--)
for(j=0;j<i;j++){
if(b[j]>b[j+1]){
temp=b[j+1];
b[j+1]=b[j];
b[j]=temp;
}
}printf("%d个正整数中素数由小到大排列:",n);
for(i=0;i<k;i++){
printf("%d ",b[i]);
}
putchar('\n');
system("pause");
}
第2个回答  2013-06-26
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i,j,num,n,*ptr;
printf("请输入指针所含元素个数\n");
scanf("%d",&n);
ptr=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
printf("请输入第%d个元素的值\n",i+1);
scanf("%d",&ptr[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(ptr[i]>ptr[j] && ptr[i]%2 !=0)
{
num=ptr[i];
ptr[i]=ptr[j];
ptr[j]=num;
}
}
}
for(j=0;j<n;j++)
printf("按从小到大顺序排列为:%d\n",ptr[j]);
free(ptr);
}本回答被网友采纳
第3个回答  2013-06-26
#include<stdio.h>
void main()
{
int check(int a);
void sort(int b[],int n);
int a[5],b[5];
int i,n=0;
printf("please input 5 integer:");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
if(check(a[i]))
{
b[n]=a[i];
n++;
}
}
sort(b,n);
for(i=0;i<n;i++)
printf("%d ",b[i]);
printf("\n");

}
int check(int a)
{
int i;
for(i=2;i<=a/2;i++)
{
if(a%i==0) break;
else continue;
}
if(i==a/2+1) return 1;
else return 0;
}
void sort(int b[],int n)
{
int min,i,j,temp;
for(i=0;i<n-1;i++)
{
min=i;
for(j=i+1;j<n;j++)
{
if(b[j]<min) min=j;
}
temp=b[i];b[i]=b[min];b[min]=temp; }
}
第4个回答  2013-06-26
但愿我的回复没来晚……请问您需要用什么语言来编写该程序?

编写一个程序,将字符串computer赋给一个字符数组,然后从第一个字母...
include <string.h> void main(int argc, char **argv){ char str[] = "computer";char *pstr;int i;pstr = str;for(i = 0; i < strlen(str); i += 2){ printf("%c", *(pstr + i));} printf("\\n");}

随机产生20个1-50的之间的正整数放入数组A中,输入这组随机数。
for循环。按输入的数个数20个来确定终止条件 a=rand(50);\/\/随机数产生 然后判断a是否在1到50之间。在则个数加一,否则回去继续rand.使用while实现,加个bool变量 接下来判断素数。for循环。然后判断 a%i==0?a是否为i整除,这个i的取值,从2到你要判断数的一半。也加个bool变量,可以就写到B ...

随机产生20个1~50之间的正整数放入数组A中,输出这组随机数。C语言(VC...
for(i=0;i<20;i++){A[i] = rand()%50+1;if(isprime(A[i])) \/\/如果是素数,把A[i]给B[j]{B[j] = A[i];j++;}}for(

C语言编程题目
4. 编写程序,从键盘输入整数n,打印出n个斐波那契数列的数(斐波那契数列:1 1 2 3 5 8 13...,后数是前两个数之和)。5. 编写程序,从键盘输入字符串,判断它是否为回文字符串(即正着读和倒着读都一样),并输出结果。6. 编写程序,从键盘输入整数n,打印出从1到n的所有素数(素数是只...

想深入学习C#语言,有没有达人知道C#的好的资料呢?
《C#程序设计》——编程题(上机操作题)1、从键盘输入一个正整数,按数字的相反顺序输出。2、从键盘上输入两个整数,由用户回答它们的和,差,积,商和取余运算结果,并统计出正确答案的个数。3、写一条for语句,计数条件为n从100~200,步长为2;然后再用while语句实现同样的循环。4、编写一段程序,运行时向用户提问...

VB中判断闰年和判断水仙花数的程序是什么?
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。【程序4】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印...

C语言判断质数,for语句里一个条件看不懂?
当我输入n=100,是先从i=2开始做的对吧,这个时候100\/2,结果是50对吧,那么请问50以上的数我还需要做吗?没必要对吧,因为100\/60,结果已经小于2了,而我们的i是从2开始一直往上加的正整数,50以上的数明显小于2,做第一遍的时候,不符合,那么50上面的数一定不符合了啊对吧,这个时候,我们...

09计算机等级考试三级网络技术笔试重点解析
程序编制题所规定的输入数据文件和输出结果文件。例如:in.dat和out.dat等。B 上机考试内容B.1 程序编制调试运行当试题抽取成功后,上机考试系统已将需编制程序的部分源程序存放到文件PROG1.C中,考生在指定的三级网络技术C语言环境中,按照试题给定的要求在PROG1.C文件中进行程序的编写,经过调试和运行,最后得到其运行...

求写一个函数int prime(int x),如果x是素数返回值为1,否则返回0。并用...
int a[50];char s[50];cout << "输入一个正整数:" << endl;cin.getline(s,50);n=strlen(s);for (int i=0;i<n;i++){ a[i]=s[i];a[i]-=48;num=num*10+a[i];} for (int i=n-1;i>=0;i--){ a[i-n+1]=s[i];a[i-n+1]-=48;revNum=revNum*10+a[i-n+...

怎样判断一个数是不是质数?
1、查表法:主要是指查“质数表”。编制质数表的过程是:按照自然数列,第一个数1不是质数,因此要除外,然后按顺序写出2至100的所有自然数,这些数中2是质数,把它留下,把2后面所有2的倍数划去,2后面的3是质数,接着再把3后面所有3的倍数划去,如此继续下去,剩下的便是100以内的全部质数。...

相似回答