简单的判断语句:ide
if(条件成立){ //执行代码 }
条件测试
关系运算的结果ui
优先级code
3 + 4
,再将结果和7比较,比较的结果为1==
和!=
的优先级比其余的低,而连续的关系运算是从左到右进行的
注释blog
"//"
开头的语句为注释,为程序提供解释 `"//"
是C99的注释,ANSI C不支持比较两个数的大小
用户输入两个数,用比较两个数的大小,输出较大的那个数。
程序流程图:ip
代码实现:rem
#include <stdio.h> int main(int argc, char *argv[]) { int a = 0; int b = 0; int max = 0; printf("请输入两个整数:"); scanf("%d %d", &a, &b); if(a>b){ max = a; } else {//b>=a max = b; } printf("大的那个是%d\n", max); }
运行结果:it
请输入两个整数:5 10 大的那个是10
if语句的大括号的做用io
if
后的那条语句。嵌套的判断
if(条件A成立){ if(条件B成立){ //执行代码 } else { //执行代码 } }
tips
级联的if-else if
示例:
if(条件1){ //执行块1 } else if (条件2){ //执行块2 } else if (条件3){ //执行块3 } ... else { // 这个else能够省略掉 //执行块n }
switch-case
switch (控制表达式){ case 常量: 语句; 语句; break; case 常量: 语句; 语句; case 常量: case 常量: 语句; default: 语句; break; }
swtich-case 示例-成绩转换
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
输入格式:
输入在一行中给出1个整数的百分制成绩
输入出格式:
在一行中输出对应的五分制成绩
输入样例:
90
输出样例:
A
程序实现:
#include <stdio.h> int main(int argc, char *argv[]) { int score = 0; printf("请输入你的分数(0-100):"); scanf("%d", &score); if(score < 0 || score > 100) { printf("输入的分数有误,请输入0至100之内的分数"); } else { score = score / 10; switch(score){ case 10: case 9: printf("A"); break; case 8: printf("B"); break; case 7: printf("C"); break; case 6: printf("D"); break; default: printf("E"); break; } } return 0; }
执行结果:
请输入你的分数(0-100):80 B
错题解析
如下语句是否能够经过编译:
int n = 0;
if ( 1<=n<=10 );
题目分析:
1 <= n <= 10
这个关系表达式的结果,关系表达式按优先级从左到右结合,1<=0的结果为0, 0<=10的结果为1,进一步分析,关系表达式的值只能为0或1,0小于1小于10,所以整个表达式的值老是为1.一、题目内容:
UTC 是世界协调时,BJT 是北京时间,UTC 时间至关于 BJT 减去 8。如今,你的程序要
读入一个整数,表示 BJT 的时和分。整数的个位和十位表示分,百位和千位表示小时。如
果小时小于 10,则没有千位部分;若是小时是 0,则没有百位部分;若是分小于 10 分,
须要保留十位上的 0。如 1124 表示 11 点 24 分,而 905 表示 9 点 5 分,36 表示 0
点 36 分,7 表示 0 点 7 分。
有效的输入范围是 0 到 2359,即你的程序不可能从测试服务器读到 0 到 2359 之外的输
入数据。
你的程序要输出这个时间对应的 UTC 时间,输出的格式和输入的相同,即输出一个整数,
表示 UTC 的时和分。整数的个位和十位表示分,百位和千位表示小时。若是小时小于 10,
则没有千位部分;若是小时是 0,则没有百位部分;若是分小于 10 分,须要保留十位上的
0。
提醒:要当心跨日的换算。
输入格式:
一个整数,表示 BJT 的时和分。整数的个位和十位表示分,百位和千位表示小时。若是小
时小于 10,则没有千位部分;若是小时是 0,则没有百位部分;若是分小于 10 分,须要
保留十位上的 0。
输出格式:
一个整数,表示 UTC 的时和分。整数的个位和十位表示分,百位和千位表示小时。若是小
时小于 10,则没有千位部分;若是小时是 0,则没有百位部分;若是分小于 10 分,须要
保留十位上的 0。
输入样例:
903
输出样例:
103
题目分析
-(-800+2400)
= -1600,也就是说当UTC时间计算结果为负数时咱们还须要用公式 UTC时间 = - ( UTC时间 + 2400 ) 来转换为用户查看的时间。#include <stdio.h> int main(int argc, char *argv[]) { const int TIMELAG = 800; //北京时间和世界协调时间的时差 const int TIMEOFDAY = 2400; //一天的时间24制在程序中的表示 int bjtTime = 0; int utcTime = 0; /*时间有效性状态码, 0:有效 1:无效,小时超出0~23范围 , 2:无效,分钟超出0~59范围 */ int validCode = 0; int hours = 0; int minutes = 0; printf("请输入北京时间,用一个四位正整数表示," "如1124表示11点24分,7表示0点7分:"); scanf("%d", &bjtTime); //校验用户输入时间的正确性 Begin if(validCode == 0) { hours = bjtTime / 100; if(hours < 0){ validCode = 1; } else if(hours > 23){ validCode = 1; } } if(validCode == 0) { minutes = bjtTime % 100; if(minutes < 0){ validCode = 2; } else if(minutes > 59){ validCode = 2; } } //校验用户输入时间的正确性 End if(validCode == 0) {//有效则进行时间转换处理 utcTime = bjtTime - TIMELAG; if(utcTime < 0) { utcTime = -(utcTime + TIMEOFDAY); printf("%d(负数表明UTC前一天的时间,好比-2300表示UTC时间前一天23点整)\n", utcTime); } else { printf("%d\n", utcTime); } } else if(validCode == 1) { printf("输入的时间无效:小时超出范围,请输入0~23内的小时\n"); } else if(validCode == 2) { printf("输入的时间无效:分钟超出范围,请输入0~59内的分钟\n"); } else {//当新增了错误码,但忘记新增else-if分支时提示,帮助排错。 printf("输入的时间无效:错误码%d,请联系管理员\n",validCode); } return 0; }
运行结果:
请输入北京时间,用一个四位正整数表示,如1124表示11点24分,7表示0点7分:1124 324 请输入北京时间,用一个四位正整数表示,如1124表示11点24分,7表示0点7分:7 -1607(负数表明UTC前一天的时间,好比-2300表示UTC时间前一天23点整) 请输入北京时间,用一个四位正整数表示,如1124表示11点24分,7表示0点7分:2400 输入的时间无效:小时超出范围,请输入0~23内的小时 请输入北京时间,用一个四位正整数表示,如1124表示11点24分,7表示0点7分:2360 输入的时间无效:分钟超出范围,请输入0~59内的分钟
二、题目内容:
无线电台的 RS 制信号报告是由三两个部分组成的:
R(Readability) 信号可辨度即清晰度.
S(Strength) 信号强度即大小.
其中 R 位于报告第一位,共分 5 级,用 1—5 数字表示.
1---Unreadable
2---Barely readable, occasional words distinguishable
3---Readable with considerable difficulty
4---Readable with practically no difficulty
5---Perfectly readable
报告第二位是 S,共分九个级别,用 1—9 中的一位数字表示
1---Faint signals, barely perceptible
2---Very weak signals
3---Weak signals
4---Fair signals
5---Fairly good signals
6---Good signals
7---Moderately strong signals
8---Strong signals
9---Extremely strong signals
如今,你的程序要读入一个信号报告的数字,而后输出对应的含义。
输入样例
59
输出样例
Extremely strong signals, perfectly readable.
题目分析
程序实现:
#include <stdio.h> int main(int argc, char *argv[]) { int rsCode = 0; int sinals = 0; //信号强度 int redable = 0; //可辨度 int isValidRSCode = 1; printf("请输入一个信号报告两位整数,十位表明可辨度,个位表明信号强度,\n" "好比59表示Extremely strong signals, perfectly readable. :"); scanf("%d", &rsCode); //用户输入校验 Begin if(rsCode <= 10){ isValidRSCode = 0; }else if(rsCode > 100) { isValidRSCode = 0; } //用户输入校验 End if(isValidRSCode == 1){ sinals = rsCode % 10; switch(sinals) { case 1: printf("Faint signals, barely perceptible"); break; case 2: printf("Very weak signals"); break; case 3: printf("Weak signals"); break; case 4: printf("Fair signals"); break; case 5: printf("Fairly good signals"); break; case 6: printf("Good signals"); break; case 7: printf("Moderately strong signals"); break; case 8: printf("Strong signals"); break; case 9: printf("Extremely strong signals"); break; default: printf("Error:Unown signals%d", sinals); break; } printf(","); redable = rsCode / 10; switch(redable) { case 1: printf("Unreadable"); break; case 2: printf("Barely readable, occasional words distinguishable"); break; case 3: printf("Readable with considerable difficulty"); break; case 4: printf("Readable with practically no difficulty"); break; case 5: printf("Perfectly readable"); break; default: printf("Error:Unown readable%d", redable); break; } printf(".\n"); } else { printf("信号必须是一个两位整数"); } return 0; }
执行结果:
请输入一个信号报告两位整数,十位表明可辨度,个位表明信号强度, 好比59表示Extremely strong signals, perfectly readable. :59 Extremely strong signals,Perfectly readable. 请输入一个信号报告两位整数,十位表明可辨度,个位表明信号强度, 好比59表示Extremely strong signals, perfectly readable. :11 Faint signals, barely perceptible,Unreadable.