题目

  1. 从键盘上输入字符,将小写字母转换成大写字母。输入“ctl + z” 结束 。
    本题思路是小写字符和大写字母的ASCII相减值是32
  2. 进制转换(本题不用考虑负数)。(计组的必考内容,难度较大,尽力而为)
    (1) 将十进制数转换成二进制数。输入十进制数输出对应的二进制数,输入“ctl + z”结束。
    本题思路是10进制不断的除2
    (2) 将二进制转换成十进制数。输入二进制数输出对应的十进制数,输入“ctl + z”结束。
    本题的思路是最低位乘以2的零次幂,依次每一位乘以2的1次幂,2次幂,一直到最高
    (3) 将十进制数转换成十六进制数。输入十进制数输出对应的十六进制数。输入“ctl + z” 结束。
    本题思路是10进制不断的除16
    (4) 将十六进制数转换成十进制数。输入十六进制数输出对应的十进制数。输入“ctl + z” 结束。
    本题思路是最低位乘以16的零次幂,依次每一位乘以16的1次幂,2次幂,一直到最高

代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define N 2
#define M 16

//小写转大写
void lower_to_upper()
{
    char ch;
    while(scanf("%c",&ch)!=EOF)
    {
        if(ch!='\n')
        {
            printf("%c\n",ch-32);
        }
    }
}

//十转二
void ten_to_two()
{
    int decimal,i;
    int binary[50]={0};
    while(scanf("%d",&decimal)!=EOF)
    {
        i=0;
        while(decimal>0)
        {
            binary[i]=decimal%N;
            decimal=decimal/N;//得到商
            i++;
        }
        for(i=i-1;i>=0;i--)
        {
            printf("%d",binary[i]);
        }
        printf("\n");
    }
}

//二转十
int two_to_ten()//当返回值不是void时,要注意返回(return)一个值
{
    char ch;
    int i=0,decimal,j,bw;
    int binary[50];
    while(scanf("%c",&ch)!=EOF)
    {
        if(ch=='\n')
        {
            break;
        }
        binary[i]=ch-'0';//变为数值类型
        i++;
    }
    decimal=0;
    bw=1;
    for (j = i-1; j >=0; j--) {
        decimal += binary[j] * bw;
        bw = bw*N;
    }
    printf("%d\n",decimal);
    return 0;
}

//十转十六
void ten_to_hex()
{
    int decimal,i;
    int binary[50]={0};
    while(scanf("%d",&decimal)!=EOF)
    {
        i=0;
        while(decimal>0)
        {
            binary[i]=decimal%M;
            decimal=decimal/16;//得到商
            i++;
        }
        for(i=i-1;i>=0;i--)
        {
            if(binary[i]>=10)
            {
                printf("%c",binary[i]-10+'A');
            }else{
                printf("%c",binary[i]+'0');
            }
        }
        printf("\n");
    }
}

//十六转十
int hex_to_ten()//当返回值不是void时,要注意返回(return)一个值
{
    char ch;
    int i=0,decimal,j,bw;
    int binary[50];
    while(scanf("%c",&ch)!=EOF)
    {
        if(ch=='\n')
        {
            break;
        }
        if(ch >= 65 && ch <=70)
        {
            binary[i]=ch-'A'+ 10 ;
        }else{    
        binary[i]=ch-'0';//变为数值类型
        }
        i++;
    }
    decimal=0;
    bw=1;
    for (j = i-1; j >=0; j--) {
        decimal += binary[j] * bw;
        bw = bw*M;
    }
    printf("%d\n",decimal);
    return 0;
}

int main()
{
    //lower_to_upper();
    //ten_to_two();
    //two_to_ten();
    //ten_to_hex();
    hex_to_ten();
    system("pause");
    return 0;
}

结果
图片说明
图片说明