#include
"stdio.h"
int
main()
{
int
d1,d2,r;
printf("输入两个正整数:");
scanf("%d
%d",&d1,&d2);
do
{
r=d1%d2;
d1=d2;d2=r;
}while(d2!=0);
printf("最大公约数是:%d",d1);
}
//递归法
#include
"stdio.h"
int
fun(int
d1,int
d2)
{
if(d2!=0)
return
fun(d2,d1%d2);
else
return
d1;
}
int
main()
{
int
d1,d2;
printf("输入两个正整数:");
scanf("%d
%d",&d1,&d2);
printf("最大公约数是:%d",fun(d1,d2));
}
int g(int m,int n)
{ int k,p,t;
if(m
if(m%k==0&&n%k==0) break;
retrun k;
}
冒泡排序
void sort(int a[],int n)
{ int i,j,t;
for(j=0 ; j
{
t=a[i];
a[i]=a[i+1] ;
a[i+1]=t ;
}
}
回文判断函数
#include “string.h”
int f(char ch[])
{ int i,j,n;
n=strlen(ch);
for(i=0,j=n-1;i
if(i
}
strcpy,strcmp,strlen,strcat这四个函数用数组,指针实现
1.void strcpy1(char *to,char *from)
{
while((*to=*from)!='\0')
{
to++;
from++;
}
}
2. int strcmp 1(char *to,char *from)
{
while(*to!= '\0'&&*from!='\0')
{
if(*to!=*from) break;
to++;
from++;
}
if(*to==’\0’) return -1;
else
if(*from==’\0’) return 1;
else *to-*from;
}
3.int strlen1(char *to)
{ int t=0;
while(*to!=’\0’)
{ t++; to++; }
return t;
}
4. void strcat1(char *to,char *from)
{
while(*to!=’\0’) to++;
while(*from!=’\0’)
{ *to=*from; to++;from++;}
*to=’\0’;
}
#include
int abc(int u,int v);
main()
{
int a=24,b=16,c;
c=abc(a,b);//这里接受返回值 也就是最大公约数 并输出
printf("%d\n",c);
}
int abc(int u,int v)
{
int w;
while(v)
{
w=u%v;u=v;v=w;//这是辗转相除法 定义了w 每次u和v求余的结果给w v赋值给u w赋值给v
一直这样做 直到v等于0 这时u就是最大公约数
}
return;//这里应该是 return u;给主函数
}
//注意:测试时输入的两个数用逗号分隔,如: 12,18
#include
int main()
{
int a,b,h;
int max(int m,int n);
printf("输入两个数:\n");
scanf("%d,%d",&a,&b);
h=max(a,b);
printf("最大公约数为:%d\n",h);
getchar();
}
int max(int m,int n)
{
int temp;
temp=m%n;
while(temp)
{
m=n;
n=temp;
temp=m%n;
}
return(n);
}
1.while(v)此时V=16,V不等于0,所以执行while语句(直到V等于0)
24%16=8,即w=8, 然后u=16,v=8不等于0,继续执行while语句,即w=0,u=8,v=0,此时V=0,跳出while,你这里要将return;改为return U 才合理
2.直接return 是错的,你的看法是对的,所以要改为改为return U ,此时函数abc的值就变为了U的值