C语言解题思路 [ 一 ]

1.数据间的与或计算

#include <stdio.h>
int main(){
    unsigned int a=123;
    unsigned int b=888;
    unsigned int c;

    c=a&b;
    printf("a&b = %d \r\n",c);
    c=a|b;
    printf("a|b = %d \r\n",c);

    return 0;
}

2.数据的拆分与修改

#include <stdio.h>
int main(){
    unsigned int data;
    unsigned char a=55;
    unsigned char b=66;
    unsigned char c=77;
    unsigned char d=88;
    data=(a<<24)|(b<<16)|(c<<8)|(d);
    printf("data=[%x    %d]\r\n",data,data);
    printf("a   =[%x    %d]\t\r\n",data>>24,data>>24);
    printf("b   =[%x    %d]\t\r\n",(data>>16)&0xFF,(data>>16)&0xFF);
    printf("c   =[%x    %d]\t\r\n",(data>>8)&0xFF,(data>>8)&0xFF);
    printf("d   =[%x    %d]\t\r\n",data&0xFF,data&0xFF);
    printf("------------------------------------------\r\n");
    //改变中间8位的数据,将 66 --> 250[对应的十进制:FA]
    data&=0xFF00FFFF;
    data|=0x00FA0000;
    printf("data=[%x    %d]\r\n",data,data);
    printf("b   =[%x    %d]\t\r\n",(data>>16)&0xFF,(data>>16)&0xFF);

    return 0;
}

3.任意输入三个数,按升序排序

#include <stdio.h>
int main(){
    int temp;
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);

    if(a>b){
        temp=a;
        a=b;
        b=temp;
    }
    if(b>c){
        temp=b;
        b=c;
        c=temp;
    }
    if(a>b){
        temp=a;
        a=b;
        b=temp;
    }
    printf("升序:%d %d %d\r\n",a,b,c);
    return 0;
}

4.输入一个不多于 5 位的正整数,判断他是几位数,并逆序输出

#include <stdio.h>
int main(){
    int num;
    int a=0,b=0,c=0,d=0,e=0;
    printf("变量初始值:%d %d %d %d %d\r\n请输入一个不多于5位的正整数: ",e,d,c,b,a);
    scanf("%d",&num);
    a=num/10000;        //万位
    b=num%10000/1000;   //千位
    c=num%1000/100;     //百位
    d=num%100/10;       //十位
    e=num%10;           //个位

    if(a!=0){
        printf("[5] 逆序输出:%d%d%d%d%d\r\n",e,d,c,b,a);
    }
    else if(b!=0){
        printf("[4] 逆序输出:%d%d%d%d\r\n",e,d,c,b);
    }
    else if(c!=0){
        printf("[3] 逆序输出:%d%d%d\r\n",e,d,c);
    }
    else if(d!=0){
        printf("[2] 逆序输出:%d%d\r\n",e,d);
    }
    else{
        printf("[1] 逆序输出:%d\r\n",e);
    }

    return 0;
}

5.判断回文数。从键盘上输入一个整数(不超过 5 位),判断是否是回文

#include <stdio.h>
int main(){
    int num;
    int a=0,b=0,c=0,d=0,e=0;
    printf("变量初始值:%d %d %d %d %d\r\n请输入一个不超过5位的正整数: ",e,d,c,b,a);
    scanf("%d",&num);
    a=num/10000;        //万位
    b=num%10000/1000;   //千位
    c=num%1000/100;     //百位
    d=num%100/10;       //十位
    e=num%10;           //个位

    if(a!=0){
        if(a==e&&b==d){
            printf("是回文数\r\n");
        }
        else{
            printf("不是回文数\r\n");
        }
    }
    else if(b!=0){
        if(b==e&&c==d){
            printf("是回文数\r\n");
        }
        else{
            printf("不是回文数\r\n");
        }
    }
    else if(c!=0){
        if(e==c){
            printf("是回文数\r\n");
        }
        else{
            printf("不是回文数\r\n");
        }
    }
    else if(d!=0){
        if(d==e){
            printf("是回文数\r\n");
        }
        else{
            printf("不是回文数\r\n");
        }
    }
    else{
        printf("是回文数\r\n",e);
    }
    return 0;
}

6.输出所有 200~400 以内能被 3 整除且个位数字为 6 的整数

#include <stdio.h>
int main(){
    int i,start=200,end=400;
    int temp;
    for(i=start;i<=end;i++){
        temp=i%10;
        if(temp==6&&i%3==0){
            printf("%d ",i);
        }
    }
    return 0;
}

7.判断 10~100 之间的所有素数 --> 素数:只能被1和本身整除的数

#include <stdio.h>
/*判断 10~100 之间的所有素数 -- 素数:只能被1和本身整除的数*/
int main(){
    int i,j,start=10,end=100,stat=0,cnt=0;
    for(i=start;i<=end;i++){
        //判断i是否为素数
        for(j=2;j<i;j++){
            if(i%j==0){
                stat=1;
                break;
            }
        }
        if(stat==1){
            stat=0;
        }
        else{
            printf("%d ",i);
            cnt++;
        }
    }
    printf("\r\n10~100之间素数总共有:%d 个\r\n",cnt);
    return 0;
}

8.输出100~999之间所有的水仙数

#include <stdio.h>
int main(){
    int i,start=100,end=999;
    int a,b,c;
    for(i=start;i<=end;i++){
        //获取i的个位、十位、百位
        a=i/100;
        b=i%100/10;
        c=i%10;
        if((a*a*a+b*b*b+c*c*c)==i){
            printf("%d ",i);
        }
    }
    return 0;
}

9.编程计算 1! +2! +3! + 。。。+10!的值 (阶乘)

#include <stdio.h>
int main(){
    int i,s=1,sum=0;
    for(i=1;i<=10;i++){
        s*=i;
        sum+=s;
    }
    printf("sum = %d \r\n",sum);
    return 0;
}

10.输出 9*9 乘法口诀表

#include <stdio.h>
int main(){
    int i,j;
    for(i=1;i<=9;i++){
        for(j=1;j<=9;j++){
            if(j<=i){
                printf("%d*%d=%d\t",j,i,i*j);
            }
            else break;
        }
        printf("\n");
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_41586634/article/details/89468975