亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C語言程序設計項目化教學案例分析

        2021-05-11 18:43:27秦春娣黃曉偉
        中國新通信 2021年4期
        關鍵詞:校驗碼身份證號項目化教學

        秦春娣 黃曉偉

        【摘要】 ? ?C語言程序設計作為高職計算機專業(yè)學生的基礎語言,在整個課程中的相當重要的。學習C語言程序設計不僅能讓學生了解基本的程序設計概念,還能讓學生學會使用編程語言的代碼結構,更能讓學生學會編程的思想。為后續(xù)學習其他語言:如JAVA、Python等語言打下扎實的基礎。傳統(tǒng)的C語言學習都是通過語法學習,加上小的案例來講解的,缺乏對實際生活中案例的整體框架編程設計。針對上述情況,下面將通過生活實際案例,應用C語言程序設計判斷身份證號校驗碼項目進行教學案例分析。

        【關鍵詞】 ? ?身份證號 ? ?校驗碼 ? ?項目化教學

        引言:

        C語言從上個世紀70年代誕生至今將近50年,它仍舊活躍在信息技術的各個領域。在信息技術發(fā)展日新月異的今天,一項技術生存了50年仍保青春,不得不說,C語言是一種功能強大,生命力強的程序設計語言。如此功能強大的結構化的程序設計語言,有著豐富的數(shù)據(jù)類型,有著基本的語言結構,有著順序結構、選擇結構、循環(huán)結構的基本技能。傳統(tǒng)的C語言程序設計教學是采用小程序設計為案例的,它如何與面向?qū)ο蟮某绦蛟O計語言銜接呢?我們的課程采用項目化教學就非常有必要了。

        一、案例背景

        在項目化教學案例的設計過程中,如果缺少與實際生活相關的例子,學生在學習過程中就會缺少學習的動力。那么老師在設計“C語言程序設計”項目化案例時,根據(jù)日常生活實際問題具體情景進行項目設計。

        本案例我們應用C語言程序設計對身份證號校驗碼驗證的項目來分析,通過對18位身份證號碼的組成原理,校驗碼的檢驗真?zhèn)嗡惴皩崿F(xiàn)身份證號校驗碼的項目設計來講解。

        二、身份證號碼有關知識

        2.1身份證號的組成

        公民身份證號碼是按照一定的規(guī)則組成的,它由十七位數(shù)字和一位校驗碼構成。從左至右一到六位數(shù)字是地址碼,七至十四數(shù)字是出生日期碼,十五至十七數(shù)字是順序碼,最后一位為校驗碼。十八位數(shù)字我們可以用字母來表示:ABCDEFYYYYMMDDXXXR。

        1、地址碼(ABCDEF):表示常住戶口所在省、市、區(qū)的行政代碼。比如:340000表示安徽省;340100 表示安徽省合肥市;340101 表示安徽省合肥市市轄區(qū)。

        2、出生日期碼(YYYYMMDD):表示該人員的出生年月日,比如:2020年1月11日出生的人員,出生日期碼為:20200111,月份和日期不足兩位的,我們在前面加0,數(shù)字之間是不用分隔符的。

        3、順序碼(XXX):表示是對身份證號前六位相同(同一個地區(qū)內(nèi)),又是同年同月同日出生的人員編定的順序碼,奇數(shù)代表是男性,偶數(shù)代表是女性,可以更好的區(qū)別男女。

        4、校驗碼(R):根據(jù)前面17位數(shù)字,按照校驗碼計算方法得出一位數(shù)。

        2.2校驗碼的計算方式

        1、根據(jù)前面17位數(shù)字進行加權求和:公式:S=Sum(Ai*Wi),i=1至17,其中Ai為第i位置上身份證號碼數(shù)字值,Wi為第i位置上的加權因子,相應的17位加權因子:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2。

        身份證號碼上每一位數(shù)字與相應的加權因子相乘的積相加,計算出總和S。

        2、用11對計算結果取模 Y=mod(S,11) ,S除以11,看得到的余數(shù)。余數(shù)Y有0至10共11個數(shù)字。

        3、按照模的值對應的校驗碼如下圖:

        2.3校驗碼出現(xiàn)‘X

        根據(jù)上表的對應關系,我們發(fā)現(xiàn)校驗碼有11個,如果我們用數(shù)字0到9來表示,就缺少一位。用二位數(shù)字來表示的話,身份證號就變成19位了。因為Ⅹ代青羅馬數(shù)字的10,所以這里用X來代替其中一位校驗碼。這樣可以保障公民身份證號符合國家標準。

        三、項目設計

        3.1開發(fā)環(huán)境

        開發(fā)語言:C語言

        開發(fā)工具:Code::Blocks/Dev-C++

        3.2項目需求

        輸入身份證號碼,以字符串的形式放入字符數(shù)組中,調(diào)用判斷身份證號號碼函數(shù),首先判斷位數(shù)是否為18位,接著判斷除最后一位可以是大寫X或小寫x以外,其他位必須是數(shù)字,滿足以上二個條件后,再來判斷最后一位校驗位是否正確。如果以上條件都能滿足,那么我們就判斷身份證號碼是合法的,否則為不合法。

        3.3數(shù)據(jù)類型

        本案例中,我們將應用到了int char long的數(shù)據(jù)類型,加權因子采用整型數(shù)組,校驗碼和身份證號碼都采用字符數(shù)組的類型。

        3.4涉及的知識點

        本程序用到C語言基礎知識,所涉及到的知識點如下:

        (1)stdio.h、string.h和ctype.h頭文件的引入;

        (2)用戶自定義函數(shù)及函數(shù)的調(diào)用;

        (3)數(shù)組的定義和初始化,缺省數(shù)組的大小時,必須初始化數(shù)據(jù),編譯器會自動計算數(shù)據(jù)的大小。如:int R[] ={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; //加權因子;

        (4)調(diào)用字符串長度函數(shù)strlen(),計算字符長度;調(diào)用數(shù)字判斷isdigit()函數(shù);

        (5)字符轉換為數(shù)值功能,如0-48=0 字符‘0變成數(shù)值0;

        (6)gets()可以接受帶有空格的字符,而scanf()函數(shù)遇到空格就截斷,我們要理解兩者之間的區(qū)別;

        (7)%,取模運算就是自然數(shù)學中的求余數(shù),參與取模運算的兩個操作數(shù)都是整型數(shù)。

        四、項目編碼

        4.1核心算法分析

        函數(shù)是完成某個特定功能的模塊代碼。通過調(diào)用模塊代碼完成某項功能。我們定義了一個身份證驗證函數(shù),用來檢測輸入的字符串身份證號碼的有效性。最后一位校驗碼是根據(jù)前面 17 位數(shù)字碼,按照 ISO 7064:1983.MOD 11-2 校驗碼計算出來的校驗碼。

        我們采用用戶自定義函數(shù)Chk18PaperId函數(shù)來完成身份證號校驗過程。

        在Chk18PaperId函數(shù)中我們首先對字符串身份證碼進行位數(shù)的判斷,如果字符串長度不等于18位,那么我們直接返回,判定該身份證號碼為不合法。在字符串長度為18位的基礎上,我們再來判斷每一位是否是數(shù)字字符或者最后一位是羅馬數(shù)字X,這里為了方便,我們直接用英文字母X來表示。滿足以上兩個條件之后,我們再來判斷最后一位校驗碼是否正確。

        假設某一身份證號前17位:

        17位數(shù)字 ?3 2 0 6 2 1 1 9 9 5 0 7 1 8 3 0 2

        加權因子 ?7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

        根據(jù)加權求和公式S = Sum(Ai * Wi),計算17位數(shù)字各位數(shù)字與對應的加權因子的乘積的和S:3×7+2×9+0×10+6×5+2×8+1×4+1×2+9×1+9×6+5×3+0×7+7×9+1×10+8×5+3×8+0×4+2×2=310;

        計算S÷11的余數(shù)T:310 % 11=2;余數(shù)0-10對應校驗碼為[1, 0, X , 9, 8, 7, 6, 5, 4, 3, 2],

        那么該身份證號碼的第18位校驗碼就是X。

        4.2完整代碼

        #include //輸入輸出函數(shù)scanf()和printf()包含在頭文件里面

        #include //字符串長度函數(shù)包含在頭文件里面

        #include //字符分類函數(shù)頭文件

        int Chk18PaperId (const char *sPaperId) //函數(shù)用來判斷身份證號校驗碼是否合法

        { long lSumQT =0;

        int R[] ={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; //加權因子

        char sChecker[11]={'1','0','X', '9', '8', '7', '6', '5', '4', '3', '2'}; //校驗碼

        if( 18 != strlen(sPaperId)) return -1; //檢驗長度

        int i=0; ? ? ? ?//校驗數(shù)字

        for (i=0; i<18; i++)

        { ? if ( !isdigit(sPaperId[i]) && ?。ǎ?X' == sPaperId[i] || 'x' == sPaperId[i])&& 17 == i) )

        { ?return -1;//如果身份證號碼中某一位不是數(shù)字或者X 的話,則返回-1,失敗}}

        for (i=0; i<=16; i++)//驗證最末的校驗碼

        { ? ?lSumQT += (sPaperId[i]-48) * R[i];}

        if (sChecker[lSumQT%11] != sPaperId[17] )

        { return -1;}

        return 0; ?}

        int main(void)

        { char Personal_ID[18];

        printf("請輸入一個身份證號碼:\n");

        gets(Personal_ID); ? ? //用戶輸入一個字符串身份證號碼

        if(!Chk18PaperId(Personal_ID)) ?printf("合法\n"); ?//調(diào)用自定義校驗碼函數(shù)

        else ?printf("不合法\n");

        return 0;}

        五、結論

        C語言本身提供了強大的算法功能,而且還提供項目實踐功能。我們對C語言程序設計進行項目化教學,在教學案例設計中根據(jù)高職學生學習的特點,設計出符合學生的C語言項目教學案例,從而提高學生學習C語言解決各種實際問題的能力。

        參 ?考 ?文 ?獻

        [1]許芝卉,李建華.關于C語言程序設計題自動評分算法的探究,山西大同大學報,2020(10).

        [2]唐小健.探究C語言程序設計在項目實踐中的技巧應用,電腦編程技術與維護,2020(11).

        [3]周軍強.C 語言程序設計課程項目化教學研究,福建電腦,2020(04).

        [4]俞騁.項目教學法在技校C語言教學中的實證研究,現(xiàn)代計算機,2019(14).

        [5]林劍.C語言程序設計課程教學探索,課程教育研究,2019(02).

        秦春娣(1981-),女,江蘇常州人,實驗師,工程師,本科,主要研究方向為計算機應用;

        黃曉偉(1981-),男,江蘇常州人,副教授,研究方向:工業(yè)自動化控制。

        猜你喜歡
        校驗碼身份證號項目化教學
        老師情
        藝術大觀(2019年11期)2019-11-12 09:40:37
        作品賞析(3)
        藝術大觀(2019年22期)2019-10-12 14:19:44
        高職《管理學》課程實行項目化教學改革與實踐策略
        芻議項目化教學法在本科動漫實訓課程中的探索與應用
        眾籌模式引入工業(yè)產(chǎn)品設計項目化教學的思考與探索
        《UG NX機械產(chǎn)品設計》課程項目化教學的改革研究
        科技視界(2016年18期)2016-11-03 21:50:03
        基于Excel實現(xiàn)書號校驗碼的驗證
        基于FPGA的循環(huán)冗余校驗碼設計
        電子世界(2015年14期)2015-11-07 05:32:29
        身份證號碼中的數(shù)學
        《網(wǎng)印工業(yè)》關于作者投稿同時提供身份證號的通知
        人妻AV无码一区二区三区奥田咲 | 国产欧美日韩一区二区加勒比| 亚洲成av人片天堂网| h国产视频| 中文字幕亚洲乱亚洲乱妇| 东风日产车是不是国产的| 日本最新免费二区三区| 在线观看av永久免费| 免费无码AⅤ片在线观看| 黄色精品一区二区三区| 亚洲精品无码专区| 亚洲av无码成人黄网站在线观看| 亚洲无码视频一区:| 亚洲中文字幕一区二区三区多人| 999精品无码a片在线1级| 欧洲成人午夜精品无码区久久 | 欧美日韩国产在线观看免费| 综合图区亚洲偷自拍熟女| 国产白浆一区二区三区性色| 99久久人妻精品免费二区| 日韩亚洲制服丝袜中文字幕| 国产在线视频一区二区三区| 未发育成型小奶头毛片av| 久久久久国产一区二区三区| 国产成人精品cao在线| 国产高清视频在线不卡一区| 特黄做受又硬又粗又大视频小说| 久久AⅤ无码精品为人妻系列| 毛片av中文字幕一区二区| 亚洲亚色中文字幕剧情| 国产真实老熟女无套内射| 亚洲—本道中文字幕久久66| 国产免费人成视频在线观看播放播| 国产精品乱码人妻一区二区三区| 开心婷婷五月激情综合社区| 91在线无码精品秘 入口九色十| 亚洲av少妇高潮喷水在线| 亚洲av日韩av无码污污网站 | 东京热加勒比日韩精品| 亚洲综合偷自成人网第页色| 国产精品成人观看视频|