C语言小练

给定两个数,求这两个数的最大公约数

本算法主要利用辗转相除法求出两个数的最大公约数。


int main(){
    int m=0;
    int n=0;
    int r=0;
    scanf("%d %d",&m,&n);
    while(r=m%n){
        m=n;
        n=r;
    } 
    printf("%d\n",n);
    return 0;
}

打印斐波那契数列指定位置的值

菲波那切数列:指的是这样一个数列:1、1、2、3、5、8、13、21、34、……这个数列从第3项开始,每一项都等于前两项之和。

int fib(int n){
    if(n<=2)
        return 1;
    else
        return fib(n-1)+fib(n-2);
}
 
int main(){
    int i=0;
    int ret=0;
    scanf("%d",&i);
    ret=fib(i);
    printf("ret=%d",ret);
    return 0;
}

给定两个数,求这两个数的最大公约数

本算法主要利用辗转相除法求出两个数的最大公约数。

int main(){
    int m=0;
    int n=0;
    int r=0;
    scanf("%d %d",&m,&n);
    while(r=m%n){
        m=n;
        n=r;
    } 
    printf("%d\n",n);
    return 0;
}

三个数从大到小输出


int main(){
    int a=0;
    int b=0;
    int c=0;
    scanf("%d%d%d",&a,&b,&c);
    //算法实现:a中放最大值   b次之   c中放最小值
    if(a

模拟用户登陆情况,且只能输如三次


int main(){
    int i=0;
    char password[20]={0};
    for(i=0;i<3;i++){
        printf("请输入密码:>");
        scanf("%s",password);
        if(strcmp(password,123456)==0){  //==不能用来比较两个字符串是否相等,应该使用一个库函数--strcmp 
            printf("登陆成功\n");
            break;
        }else{
            printf("密码错误\n");
        }
    }
    if(i==3)
    printf("三次密码错误,退出程序\n");
    return 0;

采用二分法查找数组中的指定元素


int main(){
    int arr[]={1,2,3,4,5,6,7,8,9,10};
    int k=7;
    
    int sz=sizeof(arr)/sizeof(arr[0]);  //计算元素个数 
    int left=0;      //左下标 
    int right=sz-1;  //右下标 
    while(left<=right){
        int mid=(left+right)/2;
        if(arr[mid]>k){
            right=mid-1;
        }
        else if(arr[mid]right){
        printf("找不到\n");
    }
    return 0;
}

打印输出九九乘法表

int main()
{
    int i=0;
    int j=0;
    for(i=1;i<10;i++)
    {    //一共9行 
        for(j=1;j<=i;j++)
        {
            printf("%d*%d=%-2d ",i,j,i*j);  //"%-2d"的作用是使打印的结果左对齐 
        }
        printf("\n");   //打印完一行再分行 
    }
    return 0;
}

数一下1-100中所有整数出现多少个数字9


int main(){
    int i=0;
    int count=0;
    for(i=1;i<=100;i++){
        if(i%10==9){
            count++;
        }
        if(i/10==9){
            count++;
        }
    }
    printf("count=%d\n",count);
    return 0;
}

打印1-200之间的素数,并输出总共有多少个

int main(){
    int i=0;
    int count=0;
    for(i=100;i<=sqrt(i);i++){
        int j=0;
        for(j=2;jsqrt(i)){  //sqrt(i)表示开平方 --记得调用数学库函数
            count++;
            printf("%d\n",i);
        }
    }
    printf("count=%d\n",count);
    return 0;
}

不引用第三个变量,交换两个数的值
 

方法一:

int main(){
    int a,b;  
    scanf("%d %d",&a,&b);
    a=a+b;
    b=a-b;
    a=a-b;
    printf("a=%d b=%d\n",a,b);  
    return 0;
} 
这种方法有缺陷,可能会导致整形溢出 。

方法二:

int main(){
    int a,b;
    scanf("%d %d",&a,&b);
    a=a^b;
    b=a^b;
    a=a^b; 
    printf("a=%d b=%d\n",a,b); 
    return 0;
}

你可能感兴趣的:(C语言,c语言)