十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

C语言第三章

C语言第三章 十三.做判断devc调整代码大小工具-编译器选项-显示1.算时间差第二章计算时间差考虑到借位的情况转化成分钟后再取余如果就用分别减的方法然后判断有没有出现错位的情况int hour1,minute1; int hour2,minute2; scanf(%d %d,hour1,minute1); scanf(%d %d,hour2,minute2); int ihhour2-hour1; int imminute2-minute1; if(im0){ im60im; ih--; } printf(时间差是%d小时%d分钟,ih,im);2.调试在if(im0){设置断点im此时是-400,则执行命令否则直接跳过if3.if如果if条件成立{…}条件成立则执行…否则直接跳过if十四.判断的条件1.条件里面的是计算两个值之间的关系叫做关系运算运算符意义相等!不相等大于大于或等于小于小于或等于2.关系运算符的结果两个值的关系符合关系运算符关系运算符的结果为整数1否则为整数0printf(%d\n,53); printf(%d\n,53); printf(%d\n,53);3.优先级所有关系运算符的优先级算数运算符的优先级但是赋值运算符的优先级734---77---1printf(%d\n,734);int ra0; 先a0,再赋值4.关系运算符之间的优先级和!优先级其他连续关系运算是从左到右5364---11---1654---14---0ab6---1(或0)6ab0---1(或)0rr十五.找零计算器1.找零计算器原理找零计算器需要用户做两个操作输入购买的金额输入支付的票面找零计算器做两个动作计算并打印找零或告知用户余额不足以购买计算机程序角度看程序需要读用户的两个输入然后计算判断给出结果//初始化 int price0; int bill0; //读入金额和票面 printf(请输入金额); scanf(%d,price); printf(请输入票面); scanf(%d,bill); //计算找零 printf(应该找您%d元,bill-price);2.注释//单行注释/**/多行注释//是c99的注释ansic不支持3.判断票面够不够//初始化 int price0; int bill0; //读入金额和票面 printf(请输入金额); scanf(%d,price); printf(请输入票面); scanf(%d,bill); //计算找零 if(pricebill){ printf(应该找您%d元,bill-price); }4.流程图流程图设计软件draw.io5.人机交互案例const int MINOR35; int age0; //printf人机交互 printf(请输入你的年龄); scanf(%d,age); if(ageMINOR){ printf(人生才刚刚开始); } printf(珍惜时光);流程图就不画了太麻烦了十六.否则的话1.else否则的话在你的if后面写else{…}//初始化 int price0; int bill0; //读入金额和票面 printf(请输入金额); scanf(%d,price); printf(请输入票面); scanf(%d,bill); //计算找零 if(pricebill){ printf(应该找您%d元,bill-price); } else{ printf(钱不够); }2.比较数的大小int a,b; printf(请输入两个整数); scanf(%d %d,a,b); int max0; if(ab){ maxa; } printf(大的那个是%d\n,max);这个代码的问题是ab的情况没有考虑方案1int a,b; printf(请输入两个整数); scanf(%d %d,a,b); int max0; if(ab){ maxa; } if(ba){ maxb; } printf(大的那个是%d\n,max);问题ab的时候终端是0我们不需要考虑ab的情况else包括ab的情况方案2int a,b; printf(请输入两个整数); scanf(%d %d,a,b); int max0; if(ab){ maxa; } else{ maxb; } printf(大的那个是%d\n,max);方案3int a,b; printf(请输入两个整数); scanf(%d %d,a,b); int maxb; if(ab){ maxa; } printf(大的那个是%d\n,max);十七.if语句再探1.if和else不加{}的情况if和else()后可以不加{}而是下一句成为执行的语句if(totalamount) //记得; totalamount10;2.计算薪水const double RATE8.25; const int STANDARD40; double pay0.0; int hours; printf(请输入工作小时数); scanf(%d,hours); printf(\n); if (hoursSTANDARD) paySTANDARD*RATE(hours-STANDARD)*(RATE*1.5); else payhours*RATE; printf(实付工资%f,pay);3.判断成绩const pass60; int score; printf(请输入成绩); scanf(%d,score); printf(你输入的成绩是%d,score); if(scorepass) printf(成绩合格); else printf(成绩不合格); //这个printf就和ifelse没关系了 printf(再见);十八.嵌套的if-else1.三个整数输出最大的int a,b,c; scanf(%d %d %d,a,b,c); int max0; if(ab){ if(ac){ maxa; } }else{ if(bc){ maxb; }else{ maxc; } } printf(最大的数是%d,max);if-else不使用{}的写法int a,b,c; scanf(%d %d %d,a,b,c); int max0; if(ab) if(ac) maxa; else maxc; else if(bc) maxb; else maxc; printf(最大的整数是%d,max);这种写法好像只有我自己看得懂不推荐用这个方法写嵌套2.嵌套的判断if的条件满足或者不满足的时候要执行的语句也可以是一条if或if-else语句这是嵌套的if语句if(codeREADY) if(count20) printf(一切正常\n); else printf(继续等待\n);const int READY24; int code0; int count0; scanf(%d %d,code,count); if(codeREADY) if(count20) printf(一切正常\n); else printf(继续等待\n);3.else的匹配在if-else不使用{}的情况下else总与最近的if匹配如果是if if else else里面两个匹配外边两个匹配加了{}就和最近的{}的if匹配const int READY24; int code0; int count0; scanf(%d %d,code,count); if(codeREADY){ if(count20) printf(一切正常\n); }else printf(继续等待\n);4.缩进缩进格式不能暗示if-else的匹配5.好习惯if-else后面习惯用{}十九.级联的if-else1.分段函数f(x)-1,x0|0,x0|2x,x0int x; scanf(%d,x); int y0; if(x0) y-1; else if(x0) y0; else y2*x; printf(%d\n,y);2.级联if-else下面的应该是无{}用法if(exp1) st1; else if(exp2) st2; else st3;我们用有{}的用法if(exp1){ st1; }else if{(exp2) st2; }else st3;二十.多路分支switch-case语句1.根据每个值执行int type0; scanf(%d,type); if(type1) printf(你好); else if(type2) printf(早上好); else if(type3) printf(晚上好); else if(type4) printf(再见); else printf(什么啊);依次执行2.switch-caseint type0; scanf(%d,type); switch(type){ case 1: printf(你好); break; case 2: printf(早上好); break; case 3: printf(晚上好); break; case 4: printf(再见); break; default: printf(什么啊); }直接找到对应的case到break后直接结束3.switch-case格式switch(控制表达式){case 常量:语句…case 常量:语句…default:语句…}控制表达式只能是整数型的结果常量可以是常数也可以是常熟计算的表达式注意:用const的一个变量做case后面的常量是c99才能用的4.switch-case运行规则简之从常量和控制表达式符合的case再往下走直到遇到第一个break跳过整个switch-case5.利用switch-case的特性成绩转换时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者沈睿浙江大学本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则大于等于90分为A小于90且大于等于80为B小于80且大于等于70为C小于70且大于等于60为D小于60为E。输入格式输入在一行中给出1个整数的百分制成绩。输出格式在一行中输出对应的五分制成绩。输入样例90输出样例A思路第一想法是级联第二想法是得到分数的十位数再用switch-caseint grade; scanf(%d,grade); grade/10; switch(grade){ case 10: case 9: printf(A\n); break; case 8: printf(B\n); break; case 7: printf(C\n); break; case 6: printf(D\n); break; default: printf(F\n); break; }这段代码不符合单一出口因为还没有学习字符或字符串数据的处理也可以根据月份得出单词以后可以用数组来做6.分段函数有没有可能用switch-case来做f(x)-1,x0|0,x0|2x,x0我的思路是要想使用switch-case就要把这三段范围转换成三个点int x,y; scanf(%d,x); if(x0) x1; else if(x0) x2; else x3; switch(x){ case 1: printf(y%d\n,2*x); break; case 2: printf(y%d\n,0); break; case 3: printf(y%d\n,-1); break; }可以运行x0和x0但是这种方法有一个bug前面if-else把x的值覆盖了以至于y2*x的值一直是2ai修改方案用新变量保存分段标记int x, y, flag; scanf(%d, x); if(x 0) flag 1; else if(x 0) flag 2; else flag 3; switch(flag) { case 1: y 2 * x; // 用原始 x 计算 break; case 2: y 0; break; case 3: y -1; break; } printf(y%d\n, y);
返回列表