C语言解题思路 [ 二 ]

1.百元买百鸡问题:公鸡每只 5 元,母鸡每只 3 元,小鸡 3 只一元,问一百元买一百只鸡有几种买法

#include <stdio.h>
int main(){
    int x,y,z;
    int i,j;
    x=100/5;
    y=100/3;
    for(i=1;i<x;i++){
        for(j=1;j<y;j++){
            z=100-i-j;
            if((5*i+3*j+z/3)==100&&(z%3==0)){
            printf("i=%d,j=%d,k=%d\r\n",i,j,z);

            }

        }
    }
    return 0;
}

2.打印正三角的数字

#include <stdio.h>
int main(){
    int i,j,num;
    printf("输入一个数: ");
    scanf("%d",&num);
    //总行数
    for(j=1;j<=num;j++){
        //1.打印空格
        for(i=1;i<=num-j;i++)
            printf(" ");
        //2.打印前面一半
        for(i=1;i<=j;i++)
            printf("%d",i);
        //3.打印后面一半
        for(i=j-1;i>=1;i--)
            printf("%d",i);
        printf("\n");
    }
    return 0;
}

3.打印倒三角的数字

#include <stdio.h>
int main(){
    int i,j,num;
    printf("输入一个数: ");
    scanf("%d",&num);
    //总行数
    for(j=num;j>=1;j--){
        //1.打印空格
        for(i=1;i<=num-j;i++)
            printf(" ");
        //2.打印前面一半
        for(i=1;i<=j;i++)
            printf("%d",i);
        //3.打印后面一半
        for(i=j-1;i>=1;i--)
            printf("%d",i);
        printf("\n");
    }
    return 0;
}

4.打印菱形四边形

#include <stdio.h>
int main(){
    int i,j,num;
    printf("输入一个数: ");
    scanf("%d",&num);
    //总行数
    for(j=1;j<=num;j++){
        //1.打印空格
        for(i=1;i<=num-j;i++)
            printf(" ");
        //2.打印前面一半
        for(i=1;i<=j;i++)
            printf("%c",'*');
        //3.打印后面一半
        for(i=j-1;i>=1;i--)
            printf("%c",'*');
        printf("\n");
    }
    for(j=num-1;j>=1;j--){
        //1.打印空格
        for(i=1;i<=num-j;i++)
            printf(" ");
        //2.打印前面一半
        for(i=1;i<=j;i++)
            printf("%c",'*');
        //3.打印后面一半
        for(i=j-1;i>=1;i--)
            printf("%c",'*');
        printf("\n");
    }
    return 0;
}

5.对数组进行排序

#include <stdio.h>
int main(){
    int arr[10]={3,5,8,9,4,6,7,2,1,0};
    int i,j,stat=0;
    int len=sizeof(arr)/sizeof(arr[0]);
    for(i=0;i<len;i++){
        for(j=0;j<len-i-1;j++){
            int temp;
            if(arr[j]>arr[j+1]){
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
                stat=1;
            }
        }
        if(stat==0){
            break;
        }
        else{
            stat=0;
        }
    }
    for(i=0;i<len;i++){
        printf("%d ",arr[i]);
    }
    return 0;
}

6.显示一个中文字符

#include <stdio.h>
int main()
{
    //中
    char buff[] = { 0x8, 0x8, 0x3E, 0x2A, 0x2A, 0x3E, 0x8, 0x8 };
    char tmp;
    int i, j;
    for (i = 0; i<8; i++)
    {
        tmp = buff[i];
        for (j = 0; j<8; j++){
            // 0x80 和 0x01
            if (tmp & 0x80){
                printf(".");
            }
            else{
                printf(" ");
            }
            tmp = tmp << 1;
        }
        printf("\n");
    }
    return 0;
}
#include <stdio.h>
/*-- 文字: 中 --*/
/*-- 宋体 12; 此字体下对应的点阵为:宽 x 高=16x16 --*/
char font[] = {
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0xF8, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08,
0x21, 0x08, 0x21, 0x08, 0x3F, 0xF8, 0x21, 0x08, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
};
char font_2[] =
{
/*-- 文字: 中 --*/
/*-- 宋体 18; 此字体下对应的点阵为:宽 x 高=24x24 --*/
0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00,
0x38, 0x18, 0x3F, 0xFF, 0xFC, 0x38, 0x38, 0x38, 0x18, 0x38, 0x38, 0x18, 0x38, 0x38, 0x18, 0x38,
0x38, 0x18, 0x38, 0x38, 0x18, 0x38, 0x38, 0x1F, 0xFF, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x30,
0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00,
0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00,
};
int main()
{
    char tmp;
    int i, j, cnt = 0;
    int font_size = 24;//字体大小---可变的
    int font_cnt = font_size / 8; //计算倍数
    for (i = 0; i<font_size*font_cnt; i++)
    {
        tmp = font_2[i];
        for (j = 0; j<8; j++)
        {
            if (tmp & 0x80)
            {
                printf("*");
            }
            else
            {
                printf(" ");
            }
            tmp = tmp << 1;
            cnt++; //记录循环的次数
        }
        if (cnt == font_size){
            printf("\n"); // y , x
            cnt = 0;
        }
    }
    return 0;
}

7.大小写互相转换

#include <stdio.h>
int main()
{
    //printf("A=%d\n",'A'); //65
    //printf("a=%d\n",'a'); //97
    //大小写相差 32
    char data;
    printf("请输入想要转换大小写的字母: ");
    scanf("%c", &data); 
    printf("%c\n", data ^ 32); 
    printf("%c\n", data ^ 0x20); 
    return 0;
}

8.将一个整数转换为二进制

#include <stdio.h>
int main(){
    int i,num=115200;
    char arr[32];
    char data;
    for(i=0;i<32;i++){
        if(num&0x01){
            arr[32-i-1]=1;
        }
        else{
            arr[32-i-1]=0;
        }
        num>>=1;
    }
    for(i=0;i<32;i++){
        if(i%4==0){
            printf(" ");
        }
        printf("%d",arr[i]);
    }
    return 0;
}

9.定义一个数组,输入字符串,计算出字符串长度

#include <stdio.h>
int main(){
    char str[100];
    int i=0;
    scanf("%s",str);

    while(str[i]!='\0'){
        i++;
    }
    printf("i=%d \r\n",i);
    return 0;
}

10.输入一串字符串将其中的大小写互转

#include <stdio.h>
int main(){
    char str[100];
    int i=0;
    printf("Please Input data: ");
    scanf("%s",str);

    while(str[i]!='\0'){
        if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')){
            str[i]^=32;
        }
        i++;
    }
    printf("String = %s\r\n",str);
    return 0;
}

猜你喜欢

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