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

2020-03-21  本文已影响0人  十字街86号
题目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;
} 
上一篇 下一篇

猜你喜欢

热点阅读