亚洲免费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è)》關于作者投稿同時提供身份證號的通知
        成人无码网www在线观看| 人人妻人人澡av| 国产av一区二区三区狼人香蕉| 蜜桃av噜噜一区二区三区9| 日本真人做人试看60分钟| 97一区二区国产好的精华液| 久久亚洲国产欧洲精品一| 亚洲国语对白在线观看| 日产精品99久久久久久| 午夜福利麻豆国产精品| 日本成人字幕在线不卡| 一二三四在线观看韩国视频| 18禁免费无码无遮挡不卡网站 | 黑人玩弄极品人妻系列视频| 成人爽a毛片免费视频| 俺去俺来也在线www色官网| 久久免费区一区二区三波多野在| 国产人成在线免费视频| 亚洲乱码中文字幕一线区| 国产成人av在线免播放观看新| 国产成人精品999在线观看| 人妻丰满熟妇AV无码片| 日韩av综合色区人妻| 国产自拍av在线观看视频 | 亚洲黄色大片在线观看| 人妻少妇精品视频专区vr| 无码人妻av免费一区二区三区| 91麻豆精品激情在线观看最新| 日韩精品不卡一区二区三区| 媚药丝袜美女高清一二区| 免费无码毛片一区二区app| 青青草国产成人99久久| 日韩中文字幕网站| 国产一级内射一片视频免费| av国产传媒精品免费| 欧美老妇与禽交| 成人国产乱对白在线观看| 久久精品亚洲成在人线av乱码| 中文字幕av一区二区三区人妻少妇| 在线精品免费观看| 国产精品久久久精品三级18|