1、非遞歸求最小公倍數和最大公約數
#include<stdio.h>
void main()
{
int a,b,num1,num2,temp;
printf("please input num1 and num2 \n");
scanf("%d%d",&num1,&num2);
if(num1 > num2)
{
a = num1;
b = num2;
}
else
{
a = num2;
b = num1;
}
while(b > 0)
{
temp = a % b;
a = b;
b = temp;
}
printf("最大公約數是%d\n最小公倍數是%d\n",a,(num1 * num2) / a);
}
2、遞歸求最大公約數
//用遞歸求最大公約數
#include<stdio.h>
int gcd(int m,int n);
int main()
{
int m,n;
printf("Input m,n:\n");
scanf("%d%d",&m,&n);
printf("%d\n",gcd(m,n));
}
int gcd(int m,int n)
{
if(m>n)//大於和小於只要"<"或">"就夠了,不需要兩個
return gcd(m-n,n);
else if(m<n)
return gcd(m,n-m);
else if(m==n)
return m;
}
3、字符串單詞倒置題
//字符串單詞倒置題I am a program倒置後program a am I
#include<stdio.h>
#define size 100
int Strlen(char *ch1)
{
int i=0;
for(i=0;ch1[i]!='\0';i++);
return i;
}
main()
{
char ch1[size]="I am a program",ch2[size],a[20];
int i,j,k=0;
for(i=Strlen(ch1)-1;i>=0;i--)
{
if(ch1[i]!=' ')
{
j=0;
do
a[j++]=ch1[i--];
while(ch1[i]!=' '&&i>=0);
a[j]=' ';
for(j=j;j>=0;j--,k++)
ch2[k]=a[j];
i++;
}
}
ch2[k]='\0';
printf("%s",ch2);
getchar();
}
4、判斷低地址還是高地址優先
#include<stdlib.h>
#include<stdio.h>
void main()
{
int a=10;
short b;
memcpy(&b,&a,2);
printf("%d\n",b);
}
5、字符串翻轉
#include <stdio.h>
#include <string.h>
void rotate(char *start, char *end)
{
while(start != NULL && end !=NULL && start<end)
{
char temp=*start;
*start=*end;
*end=temp;
start++;
end--;
}
}
void leftrotate(char *p,int m)
{
if(p==NULL)
return ;
int len=strlen(p);
if(m>0&&m<=len)
{
char *xfirst,*xend;
char *yfirst,*yend;
xfirst=p;
xend=p+m-1;
yfirst=p+m;
yend=p+len-1;
rotate(xfirst,xend);
rotate(yfirst,yend);
rotate(p,p+len-1);
}
}
int main(void)
{
char str[]="abcdefghij";
leftrotate(str,3);
printf("%s\n",str);
return 0;
}
6、判斷系統大端小端存儲
#include<stdio.h>
union s{
int i;
char ch;
}c;
int check()
{
c.i=1;
return (c.ch);
}
void main()
{
if (check())
{
printf("little\n");
}
else
printf("big\n");
}
分享到: