c语言程序分类总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言程序设计总结”。
一、选择排序法:
1、函数方法: #include void main(){void sort(int array[],int n);int a[10],i;printf(“enter array:n”);for(i=0;i
scanf(“%d”,&a[i]);sort(a,10);printf(“The sorted array:n”);for(i=0;i
printf(“%d ”,a[i]);printf(“n”);}
void sort(int array[],int n){int i,j,k,t;
for(i=0;i
{k=i;
for(j=i+1;j
if(array[j]
k=j;
t=array[k];array[k]=array[i];array[i]=t;} }
2、数组方法:实验6_1 #include void main(){int i,j,min,temp,a[11];
printf(“enter data:n”);
for(i=1;i
{printf(“a[%d]=”,i);
scanf(“%d”,&a[i]);
}
printf(“n”);
printf(“The orginal numbers:n”);
for(i=1;i
printf(“%5d”,a[i]);
printf(“n”);
for(i=1;i
{min=i;
for(j=i+1;ja[j])min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
printf(“nThe sorted numbers:n”);
for(i=1;i
printf(“%5d”,a[i]);
printf(“n”);}
3、指针方法:(教材209 例题8.9)#include void main(){void sort(int x[ ],int n);int *p,i,a[10];p=a;for(i=0;i
scanf(“%d”,p++);p=a;sort(p,10);for(p=a,i=0;i
{printf(“%d ”,*p);p++;} printf(“n”);}
void sort(int x[],int n){int i,j,k,t;
for(i=0;i
{k=i;
for(j=i+1;j
if(x[j]>x[k])k=j;
if(k!=i)
{t=x[i];x[i]=x[k];x[k]=t;}
} }
二、素数算法:
1、筛选法求素数(教辅41.1题)#include #include void main(){int i,j,n,a[101];
for(i=1;i
a[i]=i;
a[1]=0;
for(i=2;i
for(j=i+1;j
{if(a[i]!=0 && a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;
}
printf(“n”);
for(i=2,n=0;i
{ if(a[i]!=0)
{printf(“%5d”,a[i]);
n++;
}
if(n==10)
{printf(“n”);
n=0;
}
}
printf(“n”);}
2、(1)For循环方法: #include #include void main(){int m,i,k;
printf(“please enter a integer number:”);
scanf(“%d”,&m);
k=sqrt(m);
for(i=2;i
if(m%i==0)break;
if(i>k)printf(“%d is a prime number.n”,m);
else printf(“%d is not a prime number.n”,m);}
(2)求100~200之间素数: # include # include void main(){int m,k,i,n=0;
for(m=101;m
{ k=sqrt(m);
for(i=2;i
if(m%i==0)break;
if(i>=k+1)
{printf(“%d ”,m);
n=n+1;
}
if(n%10==0)printf(“n”);
}
printf(“n”);}
3、函数方法:实验7_1(教辅63.3题)#include void main(){int prime(int);
int n;
printf(“ninput an integer:”);
scanf(“%d”,&n);
if(prime(n))
printf(“n %d is a prime.n”,n);
else
printf(“n %d is not a prime.n”,n);}
int prime(int n)
{int flag=1,i;
for(i=2;i
if(n%i==0)
flag=0;
return(flag);
}
三、最值问题:
1、函数方法,两个数比较大小(教材144.例题7.2)#include void main(){ int max(int x,int y);
int a,b,c;
scanf(“%d,%d”,&a,&b);
c=max(a,b);
printf(“max is %dn”,c);}
int max(int x,int y){
int z;
z=x>y?x:y;
return(z);}
2、二维数组,求出其中值最大的那个元素值:(教材123.例题6.5)#include void main(){int i,j,row=0,colum=0,max;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i
for(j=0;j
if(a[i][j]>max)
{max=a[i][j];
row=i;
colum=j;
}
printf(“max=%d,row=%d,colum=%dn”,max,row,colum);}
3、有三个字符串,要求找出其中最大者(教材136.例题6.9)#include #include void main(){
char string[20];
char str[3][20];
int i;
for(i=0;i
gets(str[i]);
if(strcmp(str[0],str[1])>0)
strcpy(string,str[0]);
else
strcpy(string,str[1]);
if(strcmp(str[2],string)>0)
strcpy(string,str[2]);
printf(“nthe largest string is:n%sn”,string);}
4、函数方法,四个整数,找出最大值:(教材152.例题7.5)#include void main(){ int max_4(int a,int b,int c,int d);
int a,b,c,d,max;
printf(“Please enter 4 interger numbers:”);
scanf(“%d %d %d %d”,&a,&b,&c,&d);
max=max_4(a,b,c,d);
printf(“max=%d n”,max);}
int max_4(int a,int b,int c,int d){int max_2(int a,int b);int m;
m=max_2(a,b);m=max_2(m,c);m=max_2(m,d);return(m);}
int max_2(int a,int b)
这也可以这么写 int max_2(int a,int b){return(a>b?a:b);
{if(a>b)return a;}
else
return b;}
四、辗转相除问题:(最大公约数最小公倍数问题)
1、一般法,求最大公约数和最小公倍数(教辅26页,第一题)#include void main(){
int p,r,n,m,temp;
printf(“请输入两个正整数n,m:”);
scanf(“%d,%d,”,&n,&m);
if(n
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf(“它们的最大公约数为:%dn”,n);
printf(“它们的最小公约数为:%dn”,p/n);}
2、函数法: void main(){int hcf(int,int);
int lcd(int,int,int);
int u,v,h,l;
scanf(“%d,%d”,&u,&v);
h=hcf(u,v);
printf(“H.C.F=%dn”,h);
l=lcd(u,v,h);
printf(“L.C.D=%dn”,l);}
int hcf(int u,int v){int t,r;if(v>u)
{t=u;u=v;v=t;} while((r=u%v)!=0)
{u=v;
v=r;} return(v);}
int lcd(int u,int v,int h)
{
return(u*v/h);
}
五、有关指针的实验题:
1、实验9-1(输入3个整数,由小到大的顺序排列)(1)#include void main(){ void swap(int *p1,int *p2);int n1,n2,n3;int *p1,*p2,*p3;printf(“input three integer n1,n2,n3:”);scanf(“%d,%d,%d”,&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if(n1>n2)swap(p1,p2);if(n1>n3)swap(p1,p3);if(n2>n3)swap(p2,p3);printf(“Now,the order is:%d,%d,%dn”,n1,n2,n3);}
void swap(int *p1,int *p2)
{int p;
p=*p1;*p1=*p2;*p2=p;
}(2)#include #include void main(){void swap(char *,char *);char str1[20],str2[20],str3[20];printf(“input three line:n”);gets(str1);gets(str2);gets(str3);if(strcmp(str1,str2)>0)swap(str1,str2);if(strcmp(str1,str3)>0)swap(str1,str3);if(strcmp(str2,str3)>0)swap(str2,str3);printf(“Now,the order is:n”);printf(“%sn%sn%sn”,str1,str2,str3);}
void swap(char *p1,char *p2){char p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}
2、实验9_2(将n个数,输入时顺序的逆序排列)#include void main(){void sort(char *p,int m);int i,n;char *p,num[20];printf(“input n:”);scanf(“%d”,&n);printf(“please input these numbers:n”);for(i=0;i
scanf(“%d”,&num[i]);p=&num[0];sort(p,n);printf(“Now,the sequence is:n”);for(i=0;i
printf(“%d ”,num[i]);printf(“n”);}
void sort(char *p,int m){int i;char temp, *p1,*p2;for(i=0;i
{p1=p+i;
p2=p+(m-1-i);
temp=*p1;
*p1=*p2;
*p2=temp;
} }
3、实验9_3(写一函数,求一个字符长度)#include void main(){int length(char *p);int len;char str[20];printf(“input string: ”);scanf(“%s”,str);len=length(str);printf(“The length of string is %d.n”,len);}
int length(char *p)
{int n;n=0;while(*p!=' ')
{n++;
p++;
} return(n);}