美文网首页
C语言经典习题(11~15)

C语言经典习题(11~15)

作者: 十字街86号 | 来源:发表于2020-03-21 19:26 被阅读0次
    题目11

    将一个正整数分解质因数。例如:88 = 2 * 2 * 2 * 11。

    /*将一个正整数分解质因数。例如:88 = 2 * 2 * 2 * 11。*/
    
    #include<stdio.h>
    int main(){
        int t;
        printf("请输入一个数:\n");
        scanf("%d",&t);
        printf("%d = ",t);
        int i;
        for(i=2;i<=t;i++){
            while(t%i==0){
                printf("%d",i);
                t = t/i;
                if(t!=1)
                  printf(" * ");
            }
        }
        return 0;
    }
    
    题目12

    利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

    #include<stdio.h>
    int main(){
        int n;
        printf("请输入你的分数:\n");
        scanf("%d",&n);
    
        if(n>100||n<0){
            printf("\n输入错误,请重新输入\n");
            scanf("%d",&n);
        }
        
        n>=90? printf("\n判定等级为:A\n"): n>=60? printf("\n判定等级为:B\n"):printf("\n判定等级为:C\n") ;
            
        return 0;
    }
    

    或使用 if-else 嵌套

    #include<stdio.h>
    void ju(int n){
        printf("\n判定等级为:");
        if(n>=90){
            printf(" A \n");
        }
        else if(n>=60){
            printf(" B \n");
        }
        else{
            printf(" C \n");
        } 
    }
    
    int main(){
        int n;
        printf("请输入你的分数:\n");
        scanf("%d",&n);
    
        if(n>100||n<0){
            printf("\n输入错误,请重新输入\n");
            scanf("%d",&n);
        }
        
        ju(n);
        
        return 0;
    }
    
    题目13

    输入两个正整数m和n,求其最大公约数和最小公倍数。

     /*
    输入两个正整数m和n,求其最大公约数和最小公倍数。
    
    (1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;
    
    (2)求最大公约数用辗转相除法(又名欧几里德算法)
    */
    
    #include<stdio.h>
    int main(){
        int x,y;
        printf("请输入两个数,如(24,12)\n");
        scanf("%d,%d",&x,&y);
        
        int mul;
            mul = x*y;
            
        //判定大小 
        int t;
        if(x<y){
            t = x;
            x = y;
            y = t;
        } 
        
        //求最大公约数 
        int d;
        int gcd; 
        while(1){
            if(x%y == 0){
                gcd = y;
                printf("最大公约数是:%d\n",gcd);
                break;
            }
            else{
                d = x%y;
                x = y;
                y = d;  
            }
        }
        
        //求最小公倍数
         int lcm; 
         lcm = mul / gcd;
         printf("最大公倍数是:%d",lcm);
          
        return 0;
    }
    
    题目14

    输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

    /*输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。*/
    
    #include<stdio.h>
    int main(){
        char c;
        printf("请输入一行字符\n");
        
        int letters=0,spaces=0,digits=0,others=0;
        while(c!='\n'){
            c = getchar();
            
            if(c>='A'&&c<='Z' || c>='a'&& c<='z')
                letters++;
            else if(c==' ')
                spaces++;
            else if(c>='0'||c<='9')
                digits++;       
            else 
                others++;
        }
        printf("\n字母=%d,数字=%d,空格=%d,其他=%d\n",letters,digits,spaces,others);
        return 0;
    }
    
    题目15

    求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

    /*求s=a+aa+aaa+aaaa+aa...a的值,
    其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
    几个数相加有键盘控制。*/
    
    #include<stdio.h>
    int main(){
        int a,n;
        printf("请输入两个数字:\n");
        scanf("%d,%d",&a,&n);
        
        int b = a;
        int sum=0;
        int d;
        while(n){
            d = a;
            a = a*10+b;
    //      printf("%d\t",a);
            sum = sum + d;
            n--;
        }
        
        printf("\n%d",sum);
        
        return 0;
    } 
    

    相关文章

      网友评论

          本文标题:C语言经典习题(11~15)

          本文链接:https://www.haomeiwen.com/subject/kxruyhtx.html