广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 3842 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
vwmn123 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++][讨论] 身份证问题
请问要如何表示字串 J=18,再问18要分开计算如 ( 1*1=1 ) +  ( 8*9=72 ) 如何写 
以下的程式码是我用"我目前学到的做的" = =只有教到回圈而已
 我不要身份证的程式码,只想问一些小细节(如字串,阵列,指标)
自学中


#include <iostream.h>
#include <stdlib.h>
using namespace std;
int main()
{ int z,y,x,a,b,c,d,e,f,g,h,i,s1,s2,s3,s4,s5;
do
{
cout<<"输 ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:欧洲 | Posted:2009-02-05 07:08 |
0800959595
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

你好像没提到你的问题耶...@@?

你这样写会发生一个问题,例如身份证开头B我刚开始输入11,
并不是z=1.y=1,而是z=11.y尚未输入。(y会是原本记忆体内垃圾值)
除非输入1 1,则z=1.y=1。

你可以读取一个字元(A~Z),然后参照ASCII表去转换成你要的值,
如表中A=65,所以你要将你得到的字元-55。


接着的九码数字也会遇到相同的问题,也可以用字元阵列去读取。


献花 x0 回到顶端 [1 楼] From:台湾 | Posted:2009-02-05 08:45 |
totsi
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x53
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

J= 18拆成1*1+8*9有两种作法..

作法一:输入是字串的时候
先把1跟8拆成两个字元,之后再利用atoi转成整数来计算。
复制程式
int n1stNumber = 0, n2ndNumber = 0;
char szTitle[3];  //这边要Title是定长度的时候会比较安全
char szNumber[2];  //这是用来作atoi转换用的暂存
cin >> szTitle;

strcpy(szNumber, szTitle, 1); //复制第一个字元到szNum
n1stNumber = atoi(szNumber);

strcpy(szNumber, (szTitle+1), 1); //复制第二个字元到szNum
n2ndNumber = atoi(szNumber);

int nResult = n1stNumber * 1 + n2ndNumber * 9;
这个作法比较麻烦。

作法二:输入是数字
复制程式
int nTitle = 0;
cin >> nTitle;

if ( nTitle >99 ) { messagebox( NULL, "The input value is not valid.", 0, 0); };

int n1stNumber = nTitle / 10;
int n2ndNumber = nTitle % 10;

int nResult = n1stNumber * 1 + n2ndNumber *9;
这方法比较快,不过这边要记得加上数字长度检查,不然值会取错。

至于你贴的code的部份,感觉跟你问的问题差很多,因为code部分是抓整数进来,并不是抓字串。
所以你可以直接对数值处理就好。
表情


恩...
献花 x0 回到顶端 [2 楼] From:台湾中华电信HINET | Posted:2009-02-05 09:02 |
vwmn123 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

表情 表情 表情 表情 表情 回二楼 我的问题可能是说的不够明显 所以 你不懂
但谢谢你的ASCII码,我改看看,你说的问题点,老实讲我用 J   O 二个英文的身份证的算法是正确
因为我也只有 J   O 的资料, 在我的程式码里是 J 打1 ENTER 打8再ENTER 所以会打 11次
表情 表情 表情


献花 x0 回到顶端 [3 楼] From:欧洲 | Posted:2009-02-05 18:00 |
vwmn123 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

回三楼 其实我是想改成 一次打入 A123456789   来验证 身份证码是 一次打入 A123456789   来验证 身份证码是否正确 ,再外加一些如果错,错在那, 长度不足--长度超过,性别不符之类的
表情 表情 表情   我贴的是能跑.........只是跑的方式很烂,想改好一点
表情 表情 表情


献花 x0 回到顶端 [4 楼] From:欧洲 | Posted:2009-02-05 18:11 |
totsi
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x53
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

老实说,你的问题是问英文字转成数字后如何再处理那个数字
而你的code里面是把英文字跟数字分开读入 表情

所以问题明确一点的话,或许你可以很快问到你要的作法 表情

至于你后来问的问题,只要一次输入的部份,就要求使用者一次输入就好。

反正身分证的格式是固定的,使用者输入完后你在针对格式做字串处理就行了。

EX:A123456789->A ,123456789

之后再做你要做的内容检查就行了

但记得抓到输入值时也顺便做长度检查,避免抓到无意义的值 表情


恩...
献花 x0 回到顶端 [5 楼] From:台湾中华电信HINET | Posted:2009-02-06 09:01 |
0800959595
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

可以用长度10的字元阵列去读取,然后再把A~Z的英文字母跟0~9转成数字。


献花 x0 回到顶端 [6 楼] From:台湾 | Posted:2009-02-06 19:20 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.090217 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言