接上一节循环语句实例详解
【C语言简明教程(九)(分支语句和跳转语句)】C语言的分支语句有if-else语句、switch语句,跳转语句有break语句、return语句、continue语句,其中return语句用于函数返回值,break语句跳出本控制语句(常见有循环语句和switch语句),continue语句跳过本次循环。分支语句常常需要条件表达式语句,除了上节提到的比较表达式和逗号表达式,还有逻辑表达式。
一、逻辑运算符和逻辑表达式常用的逻辑运算符有与或非&
&
、||、!,以及三目运算符?:,具体解释如下:
运算符和逻辑表达式 | 说明 |
& & ,a & & b | a和b同时为真,该表达式才为真 |
||,a||b | a和b只要有一个为真,则表达式为真 |
!,!a | 对a取反 |
?:,a?b:c | 如果a为真则表达式等于b,否则等于c |
if(表达式1){
语句1;
}
else if(表达式2){
语句2;
}
else{
语句3
}
其中表达式1和表达式2是条件测试表达式,可用的表达式有比较表达式、逗号表达式和逻辑表达式,else if的语句块可以有多个,该if else语句只会执行其中一个语句块,若找到一个符合条件的则执行,执行完毕跳出该语句块,后面有符合条件的也不再检查,如果单独使用多个if判断,则每个都会执行,下面是if else语句的完整代码案例,其中使用到getchar和putchar字符输入输出函数,用于从控制台读取一个字符或输出一个字符,字符测试的相关函数再头文件ctype.h中。
#define SIZE 64void print_01(void){
// if else语句示例,循环从控制台读入字符,模拟命令行持续处理(一次性处理可以使用主函数main(int char**))
char ch;
char str[SIZE];
memset(str, 0, SIZE);
int i = 0;
while ((ch = getchar()) != EOF){
if(ch != '\n'){
str[i] = ch;
i++;
}
else{
run(str);
if(strcmp(str, "quit") == 0)
break;
i = 0;
memset(str, 0, SIZE);
putchar('\n');
}
}
putchar('\n');
}void run(char *message){
// if-else if-else语句
if(strcmp(message, "java") == 0) // java编译
printf("compile java source successfully");
else if(strcmp(message, "python") == 0) // 执行python脚本
printf("running python script...");
else if(strcmp(message, "time") == 0){ // 获取本地当前时间
char local_time[128];
format_time(local_time);
printf("current time: %s", local_time);
}
else
printf("processing...");
}// 自定义格式化时间处理
char * format_time(char *local_time){
struct tm *ptm;
time_t t = time(NULL);
ptm = localtime(&
t);
int year = ptm->tm_year + 1900;
int month = ptm->tm_mon + 1;
int day = ptm->tm_mday;
int hour = ptm->tm_hour;
int minute = ptm->tm_min;
int second = ptm->tm_sec;
// 字符串打印函数
sprintf(local_time, "%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second);
return local_time;
}
三、switch语句switch语句语法格式如下:
switch(数值表达式){
case 值1:
语句;
case 值2:
语句;
default:
默认执行语句;
}
switch语句的圆括号中必须是数值类型的变量,case为该变量的可能值,其中要注意,默认情况下所有case的值都会测试,包括执行default语句,如果不需要测试所有情况在每个case语句后加break语句跳出switch语句,switch语句代码实例如下:
char ch = getchar();
switch(ch){
case 'a':
printf("A apple below the table.\n");
break;
case 'b':
printf("Break down the tree is necessary.\n");
break;
case 'c':
printf("Communicating with them is tired.\n");
break;
case 'd':
printf("Digital image processing depends on mathematics\n");
break;
default:
printf("A rainy day is a good day.\n");
}
四、goto语句goto语句的格式如下:
goto: 标签名;
// ...语句
标签名: 语句开始;
执行到goto语句会跳转到指定的标签名的语句开始执行,并且不会返回执行,C语言仍然保留goto语句,但是goto语句不是一个友好的语句,尽量或者根本不用去使用它,使用goto语句写出来的代码会非常的难阅读和分析,下面是一个goto语句的代码实例:
printf("001\n");
goto label;
printf("002\n");
// 不会执行
label:
printf("003\n");
printf("004\n");
// 输出 001 003 004
推荐阅读
- C语言简明教程(十)(输入输出和文件)
- C语言简明教程(八)(循环语句实例详解)
- C语言简明教程(七)(运算符、表达式和语句)
- 如何使用v-for循环图片路径
- 限制element-ui 表格显示行数
- vue.js实现分页查询
- vue.js的组件和模板
- C语言简明教程(六)(字符串、常量和格式化输入输出实例详解)
- C语言遍历数组的两种方式