1、用函数法求最大公约数与最小公倍数
1 #include<stdio.h> 2 int main() 3 { 4 int hcf(int,int); 5 int lcd(int,int,int); 6 int u,v,h,l; 7 scanf("%d,%d",&u,&v); 8 h=hcf(u,v); 9 printf("H.C.F=%d ",h); 10 l=lcd(u,v,h); 11 printf("L.C.D=%d ",l); 12 return 0; 13 } 14 int hcf(int u,int v) 15 { 16 int t,r; 17 if(v>u) 18 {t=u;u=v;v=t;} 19 while((r=u%v)!=0) 20 { 21 u=v; 22 v=r; 23 } 24 return v; 25 } 26 int lcd(int u,int v,int h) 27 { 28 return(u*v/h); 29 }
法二:用全局变量的方法
1 #include<stdio.h> 2 int Hcf,Lcd; 3 int main() 4 { 5 void hcf(int,int); 6 void lcd(int,int); 7 int u,v; 8 scanf("%d,%d",&u,&v); 9 hcf(u,v); 10 lcd(u,v); 11 printf("H.C.F=%d ",Hcf); 12 printf("L.C.D=%d ",Lcd); 13 return 0; 14 } 15 void hcf(int u,int v) 16 { 17 int t,r; 18 if(v>u) 19 {t=u;u=v;v=t;} 20 while((r=u%v)!=0) 21 { 22 u=v; 23 v=r; 24 } 25 Hcf=v; 26 } 27 void lcd(int u,int v) 28 {Lcd=u*v/Hcf; 29 }
2、求一元二次方程的根。
1 #include<stdio.h> 2 #include<math.h> 3 float x1,x2,disc,p,q; 4 int main() 5 { 6 void greater_than_zero(float,float); 7 void equal_to_zero(float,float); 8 void smaller_than_zero(float,float); 9 float a,b,c; 10 printf("input a,b,c"); 11 scanf("%f,%f,%f",&a,&b,&c); 12 printf("equation :%5.2f*x*x+%5.2f*x+%5.2f=0 ",a,b,c); 13 disc=b*b-4*a*c; 14 printf("root: "); 15 if(disc>0) 16 { 17 greater_than_zero(a,b); 18 printf("x1=%f x2=%f ",x1,x2); 19 } 20 else if(disc==0) 21 {equal_to_zero(a,b); 22 printf("x1=%f x2=%f ",x1,x2); 23 } 24 else{smaller_than_zero(a,b); 25 printf("x1=%f+%fi x2=%f-%fi ",p,q,p,q); 26 } 27 return 0; 28 } 29 void greater_than_zero(float a,float b) 30 { 31 x1=(-b+sqrt(disc))/(2*a); 32 x2=(-b-sqrt(disc))/(2*a); 33 } 34 void equal_to_zero(float a,float b) 35 { 36 x1=x2=(-b)/(2*a); 37 } 38 void smaller_than_zero(float a,float b) 39 { 40 p=-b/(2*a); 41 q=sqrt(-disc)/(2*a); 42 }
3、函数判断素数
1 #include<stdio.h> 2 int main() 3 { 4 int prime(int); 5 int n; 6 printf("input"); 7 scanf("%d",&n); 8 printf("%d",n); 9 if(prime(n)) 10 printf(" yes "); 11 else 12 printf(" not "); 13 return 0; 14 } 15 int prime(int n) 16 { 17 int flag=1,i; 18 for(i=2;i<n/2&&flag==1;i++) 19 if(n%i==0) 20 flag=0; 21 return flag; 22 }
4、将3*3数组转置
1 #include<stdio.h> 2 #define N 3 3 int array[N][N]; 4 int main() 5 { 6 void convert(int array[][3]); 7 int i,j; 8 printf("input array: "); 9 for(i=0;i<N;i++) 10 for(j=0;j<N;j++) 11 scanf("%d",&array[i][j]); 12 printf("original array : "); 13 for(i=0;i<N;i++) 14 { 15 for(j=0;j<N;j++) 16 printf("%5d",array[i][j]); 17 printf(" "); 18 } 19 convert(array); 20 printf("convert array: "); 21 for(i=0;i<N;i++) 22 { 23 for(j=0;j<N;j++) 24 printf("%5d",array[i][j]); 25 printf(" "); 26 } 27 return 0; 28 } 29 void convert (int array[][3]) 30 { 31 int i,j,t; 32 for(i=0;i<N;i++) 33 for(j=i+1;j<N;j++) 34 { 35 t=array[i][j]; 36 array[i][j]=array[j][i]; 37 array[j][i]=t; 38 } 39 }
5、反序存放一个字符串
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 void inverse(char str[]); 6 char str[100]; 7 printf("input sring:"); 8 scanf("%s",str); 9 inverse(str); 10 printf("inverse string:%s ",str); 11 return 0; 12 } 13 void inverse(char str[]) 14 { 15 char t; 16 int i,j; 17 for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--) 18 {t=str[i]; 19 str[i]=str[j-1]; 20 str[j-1]=t;} 21 }
6.将两个字符连接
1 #include<stdio.h> 2 int main() 3 { 4 void concatenate(char string1[],char string2[],char string[]); 5 char s1[100],s2[100],s[100]; 6 printf("input string1:"); 7 scanf("%s",s1); 8 printf("input string2:"); 9 scanf("%s",s2); 10 concatenate(s1,s2,s); 11 printf(" the new is "); 12 printf("%s ",s); 13 return 0; 14 } 15 void concatenate(char string1[],char string2[],char string[]) 16 { 17 int i,j; 18 for(i=0;string1[i]!='