VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 794|回复: 6

[求助] 菜鸟一个 问下关于字符转换成数字的问题

[复制链接]
55_avatar_middle
在线会员 发表于 2016-1-7 11:33:22 | 显示全部楼层 |阅读模式
3驿站币
想实现这样一个程序。程序检测你输入的()[],并且分别对应 1,2,3,4. 比如县输入(()[)][,再回车,程序显示对应的数值为1123243.我写的程序运行后值总是为零不知道问题在哪,大虾们帮忙看一下,程序如下:

#include<stdio.h>
int main (void)
{int a,t=0;
char ch;
printf("Enter the ()[]:");
        ch=getchar() ;
       
        while(ch!='\n')
        {        switch (ch)
                {case '(':                 a=1;
                                        t+=a;
                                        t*=10;
                                        break;

                case ')':                a=2;
                                        t+=a;
                                        t*=10;
                                        break;

                case '[':                a=3;
                                        t+=a;
                                        t*=10;
                                        break;

                case ']':                a=4;
                                            t+=a;
                                        t*=10;
                                        break;
                }
        ch=getchar() ;
         
        }
        printf("t :%d",t/10);
        return 0;
}
       

最佳答案

查看完整内容

刚刚试了你的代码,没问题啊!如图:




上一篇:循环从数由参数决定,怎么办
下一篇:CString 转byte数组问题!
51_avatar_middle
online_admins 发表于 2016-1-7 11:33:23 | 显示全部楼层
刚刚试了你的代码,没问题啊!如图:
菜鸟一个 问下关于字符转换成数字的问题
55_avatar_middle
ico_lz  楼主| 发表于 2016-1-7 12:04:48 | 显示全部楼层
纳尼 为什么我的不行 一直都是0啊 我用的是dev c++
55_avatar_middle
ico_lz  楼主| 发表于 2016-1-7 12:06:11 | 显示全部楼层
啊 fuck 好了 谢谢了菜鸟一个 问下关于字符转换成数字的问题
74_avatar_middle
在线会员 发表于 2016-1-12 15:33:06 | 显示全部楼层
其實這個代碼 一看就知道還有個問題 你的變量 t 是int 當用戶 輸入的數據過多 超過 int 存儲容量後就會 溢出(比如在32位os下輸入 超過10個符號)
所以應該將 t 定義成 std::string 或者std::vector 之類的東西 會比較好

其次 不明白為什麼 你要在 t+=a 之後 再 t*=10 這樣 輸出時結果時 必須用 t/10?
你 直接 每次 先 t*=10 再 t+=a 輸出時  不就 不用做 t/10 這個無用功了嗎?
次之 實在不明白 為什麼 ch=getchar()  要寫在 loop結尾 和 之前 直接 寫在 loop開頭 不是可少寫一個 ch=getchar() ;嗎?
55_avatar_middle
ico_lz  楼主| 发表于 2016-1-14 11:15:17 | 显示全部楼层
zuiwuchang 发表于 2016-1-12 15:33
其實這個代碼 一看就知道還有個問題 你的變量 t 是int 當用戶 輸入的數據過多 超過 int 存儲容量後就會 溢 ...

表示std::string std::vector是什么?还没学(菜鸟手动捂脸。。。)你说的我都想了一遍 发现这几个地方的确可以优化,原谅我个初学者写的渣程序吧。
74_avatar_middle
在线会员 发表于 2016-1-14 13:33:39 | 显示全部楼层
std::string 是c++字符串 可以自動 擴容 std::vector 是一個可以自動擴容的 數組 這兩個都是 c++標準庫的 基本組件
如果 沒玩過 這兩個 可以自己用c寫個 鍊錶什麼的  也可以有一樣的 效果
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-8-19 08:37

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表