C语言第十一次课后作业NOTES
【字符】自编车号2009年3月9日起,北京市允许机动车所有人自己编写小汽车的以“京N”开头的号牌的后5位。自编小汽车号牌的规则如下:号牌号码的最后一位必须为数字,其余四位有且必须有两位为大写英文字母(字母I、O不可用)。例如:京NAB999,京NC9D99,京NE99F9,京N9GH99,京N9J9K9,京N99LM9等。
输入:
5位自编号牌
输出:
判断自编号牌是否合法

Q1:如何判断自编号牌最后一位是数字还是字母?
A:这个问题一开始还真的难倒了我,我一开始用的是采用大小写字母对应的ACII码的范围来判断,但是后来,我通过查找别人的程序了解到,C语言中,判断一个字符是否为数字或者字母的方法:可采用if(n == ‘9’)或是if((n >= ‘A’)&&(n <= ‘Z’) )这样的单引号加字符的形式,小写字母同理。

Q2:保密用例过不了怎么办?
A:嗯,其实就是反复读题,然后看自己是否漏了条件。像我一开始,就漏了“字母I、O不可用”这一条。但是当我改正以后,仍有一个保密用例过不了。然后我就上网查找车牌号的编码规则,发现,车牌号中使用的数字是有范围的,即“0-9”,当时我还不知道这一条有什么意义,但是当我实在是在其他方面改无可改(就是把ASCII码改成了‘A’之类的形式以后),我觉得,是不是要规定一下数字的范围?(毕竟计算机这么蠢)。然后,我又找了一个别人编写的程序,发现,他确实规定了数字的取值范围。然后我也依葫芦画瓢,把数字的范围给规定了,这才通过最后一个保密用例=_=。

Q3:一点关于字符串读入的小反思:

1)Q:为什么我一开始用scanf()无法读入字符串儿? A: 因为我用scanf读入时,写成了这种形式:scanf(“%s”, &bn[N]),事实上,后来我翻书得知,字符串的读入是不需要加“&”的,因为编译器已经把数组名“bn”当作指针来处理了,我再加一个“&”反而是语法错误。并且也不需要加那个[N]。正确的格式是“scanf(“%s”, bn);”。

2) Q:为什么我改用gets()函数读入字符串,它自动就给我将程序运行完毕了?A:因为我在gets()的括号里写的是gets(&a),和scanf一样的错误,正确的格式也是只需要写数组名就可以了:“gets(bn);”。当时这个问题,着实纠结了我好久,但是后来仔细反复看书,终于发现了自己的错误。

3)Ⅰ.一点别人的程序给我的启发:程序尽量设置但一出口,也就是在程序设计的过程中,当输出的结果,是两种相反的情况时,我们可以引入一个辅助判断的变量flag(或者IsPrime之类的),把它们用做BOOL类型来作出判断,就是“if(flag); printf();else printf();”之类的,从而选择输出的结果。举个栗子,我一开始写这个程序的时候,是一开始判断完最后一位是否为数字的时候,立刻接上“printf(“ok.\n”);”,然后整个程序,我都是一判断就立刻printf()了,就很烦,看着程序也很长。后来,我直接用了flag,把printf()统一移到了程序的结尾,这样不仅看起来清爽很多,而且听翁恺老师说,在编写大型程序时就不容易出错了。

Ⅱ.说说字符串输入时编译器的局限性:这个其实时接着那个数字的范围的一点发现和思考。就是我一开始以为,编译器在读入字符串的时候,一位数字存储在一个单元里。但是后来,我再确定要不要规定范围的时候,我输入了一个10,结果发现,程序仍然能够正常的执行。所以,编译器在读入字符串的时候,应该是秉持这样的原则,就是不是将单位数字储存在一个单元中,而时会将你输入的数据存储进一个单元中。但是我有一点不解的是,它又是如何判断我输入的数据是一位数还是两位数(或者高位数)的呢?我觉得这里面就有一个随机性了,然后不规定范围的后果,现在是保密用例过不了,以后写一些大型程序,就有可能是程序崩溃了,所以,编译器的这种盲目性和随机性,是非常可怕的,这使我意识到,真的要多考虑一下数据的取值范围问题。还有以前我写if的时候,没有加上else,然后编译器就傻傻的过不了用例,非得我去写明else以后如何如何,它才过了用例,所以,编译器真的很蠢,切记,切记!

#include <stdio.h>
#include <string.h>
#define N 5
#define j 2
#define Board_number bn
int main(void)
{ int i, cnt, flag;char bn[N + 1];//输入号牌scanf("%s", bn);//判断最后一位是否为数字 if((bn[N - 1] > '9') || (bn[N - 1] < '0')){flag = 0;}//判断其余四位是否有两位为大写英文字母(I,O除外) else {cnt = 0;for(i = 0; i < (N - 1); i++){if((bn[i] >= 'A') && (bn[i] <= 'Z') && (bn[i] != 'I') && (bn[i] != 'O'))cnt ++;}if(cnt == j){flag = 1;}else{flag = 0;}}if(flag){printf("ok.\n");}else {printf("no.\n");}return 0;
}

C语言作业NOTES相关推荐

  1. 单片机c语言 i%3c%3c1,单片机C语言作业及上机习题及答案

    <单片机C语言作业及上机习题及答案>由会员分享,可在线阅读,更多相关<单片机C语言作业及上机习题及答案(37页珍藏版)>请在人人文库网上搜索. 1.第一次课熟悉winTC编译环 ...

  2. 下列python语言、返回结果不是uc_MKAN1-UC 5103作业代写、代做Analytics作业、Java,Python,c/c++程序语言作业代做...

    MKAN1-UC 5103作业代写.代做Analytics作业.Java,Python,c/c++程序语言作业代做 日期:2020-05-21 11:08 Marketing Analytics Sp ...

  3. 代写python代码一般多少钱_代写CO 353课程作业、代做Python程序设计作业、代写Python语言作业...

    代写CO 353课程作业.代做Python程序设计作业.代写Python语言作业 日期:2020-03-17 11:22 CO 353 - Homework assignment 4 Winter ' ...

  4. c语言作业帮,少训练大功课C语言

    紧急分配C语言. C语言分配,很紧急. 急C语言作业. //1. #include#includeintmain(void){&nbsp C语言作业,请设计一种算法来完成两个超长正整数的加法运 ...

  5. python实验报告代写_TensorFlow作业代写、代做Python程序语言作业、代写github课程作业、Python实验作业代写...

    TensorFlow作业代写.代做Python程序语言作业.代写github课程作业.Python实验作业代写 日期:2019-07-10 10:34 Python Practical Examine ...

  6. 代写php代码作业,代写phpmyadmin留学生作业、代做SQL语言作业、SQL程序设计作业调试、代做PHP script作业...

    代写phpmyadmin留学生作业.代做SQL语言作业.SQL程序设计作业调试.代做PHP script作业 日期:2019-04-20 01:17 Overview:In this assignme ...

  7. C语言 n的作业,C语言作业练习

    C语言作业练习 人天天都学到一点东西,而往往所学到的是发现昨日学到的是错的. 以下是小编为大家搜索整理了C语言作业练习,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网! 一.思考题 ...

  8. 代写python作业 费用_代写dither method作业、代做python程序设计作业、代写python语言作业、代做Image Dithering作...

    代写dither method作业.代做python程序设计作业.代写python语言作业.代做Image Dithering作 日期:2019-10-07 04:39 ? Implement the ...

  9. c定义一个整型数组_滨州学院C语言作业讲解有序数组插入

    点击蓝字 关注我们 + 滨州学院C语言作业详解 [问题描述]一个长度为11的整型数组中存放有10个从小到大排好序的整数:1 3 5 10 23 100 180 200 350 500.输入一个x,把它 ...

  10. C语言及实验作业,C语言作业及参考答案

    <C语言作业及参考答案>由会员分享,可在线阅读,更多相关<C语言作业及参考答案(65页珍藏版)>请在人人文库网上搜索. 1.C语言及实验作业参考做法分支程序设计上机作业:标题 ...

最新文章

  1. ie 打开后端发过来的pdf_某办公软件PDF阅读器漏洞挖掘及Crash分析
  2. Java内存使用量测试 看看我们天天在用的JVM到底浪费了多少内存资源
  3. Table tr td th表格使用案例
  4. 安卓惯性传感器(二)
  5. Grafana Labs 携手阿里云,将提供国内首款 Grafana 托管服务
  6. 如何使用matplotlib绘制一个函数的图像
  7. html特效指令,vue2——指令v-text v-html v-bind
  8. Linux进程O(1)调度算法,面试必考哦
  9. 计算机应用学科之间的逻辑性,数学教学中计算机应用
  10. 用户需求源源不断,阿里云网络创新不止
  11. 构造函数和实例化原理
  12. of介词短语作定语_介词短语用作状语/定语/表语/复合宾语
  13. springboot实战pdf_Java程序员中秋节福利发送:Spring boot+Redis实战文档「PDF」
  14. PHP error_reporting() 错误控制函数功能详解
  15. 应用机器学习(一):聚类分析
  16. HTML DOM教程 18-HTML DOM Body 对象
  17. 剑三 服务器维护,11月15日服务器例行维护公告 补偿部分服务器
  18. 调用import win32com.client出错的解决办法
  19. 别再用 offset 和 limit 分页了,性能太差!
  20. linux su命令参数及用法详解--linux切换用户命令

热门文章

  1. Visual Studio 2012下载资源 百度云
  2. JAVA排课教务系统
  3. 新版PassXYZ已上线,新增一次性密码(OTP)管理功能
  4. Java 创建线程的三种方式总结
  5. JAR包的JDK版本查看与设置
  6. IEEE1588v2解析(1)--同步的概念
  7. 电阻的种类以及选型要点
  8. 手把手教你安装破解IAR For ARM 6.3
  9. 微信小程序自定义导航栏;uni-app微信小程序自定义顶部导航栏;微信小程序顶部导航栏高度;微信小程序左上角胶囊按钮;uni-app微信小程序左上角胶囊设置
  10. OSx86的来龙去脉