核心提示:C语言常用的几个问题的算法和程序:1.输入并运行以下判断一个数是否为素数(即质数)的程序:main(){ int i,x; printf('Enter a Number:\n'); scanf('%d',x); for(i=2; ix; i......
1.输入并运行以下判断一个数是否为素数(即质数)的程序:
main()
{ int i,x;
printf("Enter a Number:\n");
scanf("%d",&x);
for(i=2; i<x; i++)
{ if(x%i==0) break;
}
if(i= =x) printf("YES\n");
else printf("NO\n");
} 想想看,如果将for(i=1;i<x;i++)中的x改为(int)sqrt(x)可不可以,可以的话其他哪些地方也要作相应改动并且程序要增加什么东西
2.排序函数,要求能熟练掌握:(注:以下排序算法中,至少要熟练掌握一种)
(1)简单选择排序(从小到大):
#define N 10
#include "stdlib.h"
void arrsort(int a[],int n);
main()
{ int m[N],i;
for(i=0;i<N;i++) m[i]=random(100);
for(i=0;i<N;i++) printf("%d ",m[i]);
printf("\n");
arrsort(m,N);
printf("After Sorted:\n");
for(i=0;i<N;i++) printf("%d ",m[i]);
printf("\n");
}
void arrsort(int a[], int n)
{ int i,j,p,t;
for(i=0; i<n-1; i++)
{
for(j=i+1;j<n;j++)
if(a[j]<a[i]) {t=a[i];a[i]=a[j];a[j]=t;}
}
}
(2)优化的选择排序(从小到大):(以下(2)-(4)均省略main函数)
void arrsort(int a[], int n)
{ int i,j,p,t;
for(i=0; i<n-1; i++)
{ p=i;
for(j=i+1; j<n; j++)
if(a[p]>a[j]) p=j;
if(p!=i)
{ t=a[i]; a[i]=a[p]; a[p]=t;}
}
}
(3)冒泡排序(从小到大):
void arrsort(int a[], int n)
{ int i,j,p,t;
for(i=n-1; i>0; i--)
{ for(j=0; j<i; j++)
if(a[j+1]<a[j]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t;}
}
}
(4)插入排序(从小到大):
void arrsort(int a[], int n)
{ int i,j,t;
for(i=1;i<n;i++)
{ t=a[i];
for(j=i-1;j>=0;j--)
if(t<a[j]) a[j+1]=a[j];
else break;
a[j+1]=t;
}
}