L1-016. 查驗身份證

来源:https://www.cnblogs.com/littleLittleTiger/archive/2019/02/09/10358140.html
-Advertisement-
Play Games

題目: 一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下: 首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計算的和對11取模得到值Z;最後按照以下關係對應Z值與校驗碼M的值: Z:0 ...


題目:

一個合法的身份證號碼由17位地區、日期編號和順序編號加1位校驗碼組成。校驗碼的計算規則如下:

首先對前17位數字加權求和,權重分配為:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然後將計算的和對11取模得到值Z;最後按照以下關係對應Z值與校驗碼M的值:

Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2

現在給定一些身份證號碼,請你驗證校驗碼的有效性,並輸出有問題的號碼。

輸入格式:

輸入第一行給出正整數N(100)是輸入的身份證號碼的個數。隨後N行,每行給出1個18位身份證號碼。

輸出格式:

按照輸入的順序每行輸出1個有問題的身份證號碼。這裡並不檢驗前17位是否合理,只檢查前17位是否全為數字且最後1位校驗碼計算準確。如果所有號碼都正常,則輸出All passed

輸入樣例1:

4

320124198808240056

12010X198901011234

110108196711301866

37070419881216001X

輸出樣例1:

12010X198901011234

110108196711301866

37070419881216001X

輸入樣例2:

2

320124198808240056

110108196711301862

輸出樣例2:

All passed

 

上代碼:

  吃了昨天那個虧(畢竟用Java怎麼也不能全部AC還拿不到全分太難受了呀),今天速成了一下C++後開始接著刷題,前面幾道簡單題都很簡單,用C++都一遍通過了,所以就不做記錄了。這道題其實也沒什麼好說的,而且我這個代碼雖然全部通過了,但也不是最優的。還是附上柳婼大大的答案吧,不過我覺得她這個答案裡面可以直接把b[11]給設為字元數組啊,不然還要把X給換成10  (⊙▽⊙)

https://blog.csdn.net/liuchuo/article/details/51988823?utm_source=blogxgwz3

#include <cctype>
#include <iostream>
using namespace std;
bool check(char c[])
{
    int a[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
    int sum=0;
    for(int i=0;i<17;i++)
    {
        sum+=a[i]*(c[i]-'0');
    }
    int index=sum%11;
    char b[11]={'1','0','X','9','8','7','6','5','4','3','2'};
    return b[index]==c[17];
}
int main()
{
    int n,flag=0;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int a=0;
        char c[18];    
        cin>>c;
        //bool b=check(c);
        for(int j;j<17;j++)
        {
            if(isalpha(c[j]))
            {
                cout<<c<<endl;
                a=1;flag=1;
                break;
            }
        }
        if(a==0)
        {
            if(!check(c))
            {
                cout<<c<<endl;
                flag=1;
            }
        }
        
    }
    if (flag == 0) cout << "All passed";
    return 0;
}

 

我其實是為了用cctype裡面的isalpha()函數來判斷是否有字母(最開始覺得這樣方便)才硬用字元數組接收的身份證號。其實用string s接收的話可以這麼做:if(s[i]<'0' || s[i]>'9')

 

(全部AC的感覺最爽了。。。)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Nginx 介紹:高性能的http伺服器和反向代理(請求通過反向代理之後,訪問伺服器端的邏輯)如下圖所示: Ningx的作用 負載均衡 所謂負載就是伺服器各項技術所承受的壓力 均衡,平均分配壓力(物理平均,邏輯平均) 通過輪訓機制來達到物理均衡 動靜分離 伺服器可以處理動態資源(tomcat jsp ...
  • 前言:流程實現基本流轉功能外,通常也需要調用外部事件,用於和業務系統的交互,同時存儲一些流程變數,用於追蹤和記錄業務數據變化對流程流轉的影響。 1. 流程事件 流程執行過程中,伴隨各種事件的發生,而且是存在於整個流程的生命周期,即從流程啟動一直到流程結束的整個過程都有事件發生。這些事件的發生,業務系 ...
  • 定義: 裝飾模式是在不必改變原類文件和使用繼承的情況下,動態地擴展一個對象的功能。它是通過創建一個包裝對象,也就是裝飾來包裹真實的對象。 結構:(書中圖,侵刪) 一個被裝飾介面類:從具體類中抽象出來,擁有用於修飾的一個公共方法 若幹被裝飾具體類;繼承於被裝飾介面類 一個抽象裝飾類:繼承於被裝飾介面類 ...
  • [toc] 前言 前陣子突發奇想,想學習下SpringMVC的源碼,於是打算用idea搭建一個簡易的maven版SSM案例,也就是SpringMVC+Spring+MyBatis+Maven,因為之前創建過一些Spring的小demo,相關的軟體環境已經搭建完成,本以為搭建一個入門級的SSM項目應該 ...
  • 一、寫在前面 之前寫過一篇用Python發送天氣預報郵件的博客,但是因為要手動輸入城市名稱,還要打開郵箱才能知道天氣情況,這也太麻煩了。於是乎,有了這一篇博客,這次我要做的就是用Python獲取本機IP地址,並根據這個IP地址獲取物理位置也就是我所在的城市名稱,然後用之前的辦法實現查詢天氣,再利用百 ...
  • 安裝:npm install serialport 使用: 要發送byte數組把發送的'main screen turn on'改為[0x01,0x02]之類的byte數組註:版本不同可能使用方式不同,當前使用的版本是7.1.4官方文檔4.0.1地址:https://github.com/node- ...
  • 列印字元串:%s--------printf(“%s”,”abcd”); 列印字元串數組中某一位:%c--------printf(“%c”,”abcd[2]”); 字元的定義及列印格式: struct { int amount; char *name; }coins[] = { {1,"one"}... ...
  • 對於很多初學C語言的人來說,第一個開發環境應該都是VC6.0(沒辦法的事,很多高校都用VC6),在以前VC6確實是比較適合用來進行C/C++的學習。 但現在VC6已經不適合當前的環境了,更不適合新手。我之前使用過VC6(網上流行的版本)一段時間,發現它有幾個問題. 1.古老,很多新特性不支持,界面難 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...