PTA6-26 字符串转换成十进制整数 (15分)

在这里插入图片描述

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
    char c;
    int i;
    int j = 0,l = 0;
    int a[1000]={0};//开个1000的整数数组用来存数
    for(i = 0;;i++){
        c=getchar();//接受输入的字符
        if(c == '#')break;//当接收到#退出循环
        if(c == '-'&&j == 0&&l == 0){//当无整数存入数组a中并且得到- j自加
            j++;
        }
        switch(c){//根据字符给数组赋值
        case'0':
                a[l]=0;
                l++;
                break;
        case'1':
                a[l]=1;
                l++;
                break;
        case'2':
                a[l]=2;
                l++;
                break;
        case'3':
                a[l]=3;
                l++;
                break;
        case'4':
                a[l]=4;
                l++;
                break;
        case'5':
                a[l]=5;
                l++;
                break;
        case'6':
                a[l]=6;
                l++;
                break;
        case'7':
                a[l]=7;
                l++;
                break;
        case'8':
                a[l]=8;
                l++;
                break;
        case'9':
                a[l]=9;
                l++;
                break;
        case'A':
                a[l]=10;
                l++;
                break;
        case'a':
                a[l]=10;
                l++;
                break;
        case'B':
                a[l]=11;
                l++;
                break;
        case'b':
                a[l]=11;
                l++;
                break;
        case'C':
                a[l]=12;
                l++;
                break;
        case'c':
                a[l]=12;
                l++;
                break;
        case'D':
                a[l]=13;
                l++;
                break;
        case'd':
                a[l]=13;
                l++;
                break;
        case'E':
                a[l]=14;
                l++;
                break;
        case'e':
                a[l]=14;
                l++;
                break;
        case'F':
                a[l]=15;
                l++;
                break;
         case'f':
                a[l]=15;
                l++;
                break;
                }
    }
    int sum = 0;
    l=l-1;//因为得到最后一个整数时,l做了自加运算,所以l需要减1
    int p = 1; 
    for(;l >= 0; l--){//从后往前遍历数组
        sum+=p*a[l];
        p=p*16;
    }
    if(j == 0)printf("%d",sum);//无负号
    if(j != 0 && sum != 0)//有负号并且加和不等于0
        printf("-%d",sum);
    if(j != 0&&sum == 0)printf("0");有负号并且加和等于0
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值