学C语言第9天,写个成绩加减小程序,结果全班80%的人卡在第一步密码验证
密码输错直接结束,很多人以为电脑坏了,其实是少写了一行循环。
今天把完整流程拆开讲,顺带把switch容易踩的坑一次说清。
第一步,先让用户输入一个长整数。
用long int,别用int,省得大数字溢出。
格式符记得写%ld,别写成%d,否则编译器会报警。
第二步,判断是不是123456。
不是就打印错误,然后return 0直接结束。
很多人在这一步卡住,因为输错一次程序就退出,体验极差。
解决办法很简单,把整段逻辑包进while死循环,只有输入4才break跳出。
第三步,密码正确后打印菜单:1查总分,2扣分,3加分,4退出。
用printf逐行输出即可,别偷懒写成一行,手机上看会换行错位。
第四步,读取用户选项。
定义int a,用scanf读入。
这里可以用if-else,也可以用switch。
新手建议先用if,逻辑更直观:if查分,else if扣分,else if加分,else ifbreak,其余输入提示无效。
第五步,把扣分加分功能补全。
总分初始设为100,扣分直接减,加分直接加,每次操作完立刻打印最新总分。
别忘记在循环末尾再打印一次菜单,否则用户不知道下一步该干嘛。
switch写法更短,但坑更多。
case后面只能写常量,不能写变量,也不能重复。
想只执行对应分支,每个case后面加break,否则会继续往下跑。
很多人把break漏写,结果输入1把四个选项全跑一遍,场面尴尬。
真实项目里,成绩系统不会把密码写死。
一般会放配置文件或数据库,程序启动时读进来。
加减分也不会直接改内存,而是写日志,防止老师误操作。
这些扩展留给你慢慢玩。
今天的小程序跑通后,把while换成while(a!
=4),再把break删掉,效果一样,代码更短。
多试几种写法,印象更深。