L1-012 计算指数、L1-013 计算阶乘和、 L1-014 简单题、 L1-015 跟奥巴马一起画方块、 L1-016 查验身份证
L1-012 计算指数、L1-013 计算阶乘和、L1-014 简单题、 L1-015 跟奥巴马一起画方块、 L1-016 查验身份证L1-012 计算指数题目描述输入格式输出格式输入样例输出样例解题思路C 代码双引号 的作用拼接过程示例L1-013 计算阶乘和题目描述输入格式输出格式输入样例输出样例解题思路C 完整代码L1-014 简单题题目描述输入格式输出格式C 代码L1-015 跟奥巴马一起画方块题目描述输入格式输出格式输入样例输出样例解题思路C 完整代码1. 行数怎么算2. 双层循环L1-016 查验身份证题目描述输入格式输出格式权重 校验码对应C 完整代码1. 两个固定数组2. 前17位必须是数字3. 计算校验码4. 字符串转数字5. 标记变量L1-012 计算指数题目描述对任意给定的不超过 10 的正整数n nn输出2 n 2^n2n的值。输入格式一行中给出一个不超过 10 的正整数n nn。输出格式2^n 计算结果输入样例5输出样例2^5 32解题思路读入整数n nn计算2 n 2^n2n按指定格式输出C 代码#includeiostream#includecmath// cmath C math是 C 的数学头文件// 必须写这一行才能使用 pow ( ) 函数usingnamespacestd;intmain(){intn;cinn;intrespow(2,n);cout2^n resendl;return0;}双引号 的作用加双引号里面的内容是字符串会原样输出。例如2^、 是固定文字直接显示在屏幕上。不加引号是变量输出变量里面存储的数值。例如n、ans会输出它们的值。拼接过程示例当n 5 , a n s 32 n5, ans32n5,ans32时cout2^n ansendl;输出结果2^5 32L1-013 计算阶乘和题目描述计算 S 1! 2! 3! … N! 的值N ≤ 10。阶乘n! 1×2×3×…×n例如3! 1×2×3 6输入格式一行中给出一个不超过 10 的正整数 N。输出格式一行输出 S 的值。输入样例3输出样例9解题思路循环计算每一个数的阶乘把所有阶乘结果累加起来输出最终的和C 完整代码#includeiostreamusingnamespacestd;intmain(){intn;cinn;intsum0;// 存储阶乘的和intfact1;// 存储当前数的阶乘for(inti1;in;i){factfact*i;// 计算 i!sumsumfact;// 累加到总和}coutsumendl;return0;}L1-014 简单题题目描述没有任何输入只需要在一行输出This is a simple problem.输入格式无输出格式This is a simple problem.C 代码#includeiostreamusingnamespacestd;intmain(){coutThis is a simple problem.endl;return0;}L1-015 跟奥巴马一起画方块题目描述输入正方形边长 N 和字符 C输出用 C 组成的正方形。行数 列数的 50%四舍五入取整。输入格式一行给出 N3≤N≤21和字符 C用空格隔开。输出格式输出对应正方形。输入样例10 a输出样例aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa解题思路输入 N 和字符 c计算行数行 (N 1) / 2自动四舍五入循环 行次每行输出 N 个字符 cC 完整代码#includeiostreamusingnamespacestd;intmain(){intn;charc;cinnc;// 输入边长和字符// 计算行数四舍五入 n/2introw(n1)/2;// 循环 row 行for(inti1;irow;i){// 每行输出 n 个字符for(intj1;jn;j){coutc;}coutendl;// 每行结束换行}return0;}1. 行数怎么算行数 边长的一半四舍五入公式row (n 1) / 2为什么行数是 (n 1) / 2题目要求行数 n 的一半四舍五入。但 C 的整数除法是向下取整直接砍掉小数不会自动四舍五入。想要实现四舍五入公式是row (n 1) / 2例子n 10 → (101)/2 5n 3 → (31)/2 22. 双层循环外层循环控制多少行内层循环控制每行多少个字符L1-016 查验身份证题目描述查验身份证是否合法前17位必须都是数字按规则计算校验码和最后一位必须一致不合法就输出号码全部合法输出All passed输入格式第一行N号码数量接下来 N 行每行18位身份证号输出格式输出有问题的号码全部正确输出 All passed权重 校验码对应权重7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2Z0 1 2 3 4 5 6 7 8 9 10M1 0 X 9 8 7 6 5 4 3 2C 完整代码#includeiostream#includestringusingnamespacestd;intmain(){// 权重数组intw[17]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};// 校验码对应数组charm[11]{1,0,X,9,8,7,6,5,4,3,2};intn;cinn;boolallPasstrue;// 标记是否全部通过for(inti0;in;i){string id;cinid;booloktrue;// 第一步检查前17位是不是数字for(intj0;j17;j){if(id[j]0||id[j]9){okfalse;break;}}// 第二步前17位合法计算加权和if(ok){intsum0;for(intj0;j17;j){sum(id[j]-0)*w[j];}intzsum%11;// 取模得到Zif(id[17]!m[z]){okfalse;}}// 不合法就输出if(!ok){coutidendl;allPassfalse;}}// 全部通过if(allPass){coutAll passedendl;}return0;}#includeiostream#includestring#includecctype//isdigit()判断字符是不是数字 0~9usingnamespacestd;intmain(){intw[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};charm[]{1,0,X,9,8,7,6,5,4,3,2};intn;cinn;boolalltrue;while(n--){//在 C 里数字 0 表示假非 0 表示真。while( 真 ) → 继续循环,while( 假 ) → 停止循环string s;cins;booloktrue;for(inti0;i17;i)if(!isdigit(s[i]))okfalse;if(ok){intsum0;for(inti0;i17;i)sum(s[i]-0)*w[i];//s[i] 是字符不能直接计算,必须用 s[i] - 0 把字符变成真正的数字//字符 0 的码值48 字符 5 的码值53if(s[17]!m[sum%11])okfalse;}if(!ok){coutsendl;allfalse;}}if(all)coutAll passedendl;return0;}1. 两个固定数组intw[17]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};charm[11]{1,0,X,9,8,7,6,5,4,3,2};w前17位权重mZ值对应的正确校验码2. 前17位必须是数字if(id[j]0||id[j]9)不合法只要有一位不是数字直接判定错误。3. 计算校验码前17位 × 对应权重 → 求和和 % 11 → 得到 Z用 Z 去 m数组 找正确的最后一位和身份证最后一位对比不一样就是错的4. 字符串转数字id[j]-0把字符5变成数字5才能计算。5. 标记变量ok判断当前身份证是否合法allPass判断全部身份证是否合法
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2461102.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!