写点什么

【C 语言基础系列】C 语言分支结构,java 反射原理面试

作者:Java高工P7
  • 2021 年 11 月 10 日
  • 本文字数:2530 字

    阅读完需:约 8 分钟

scanf()函数:


上述代码中的 scanf()函数是系统提供的用于输入的库函数,也在系统文件 stdio.h 中声明。该函数用于从键盘输入数据,其调用格式与函数 printf()类似:


scanf(格式控制字符串,输入参数 1,…,输入参数 n);


格式控制字符串表示输入的格式,输入参数是变量地址(变量名前加 &)。


格式控制字符串中包含两种信息:格式控制说明和普通字符。


① 格式控制说明:按指定的格式读入数据,它包含以 %开头的格式控制字符,不同类型的数据采用不同的格式控制字符(和 printf()函数一样)。


scanf()函数的输入参数必须和格式控制字符串中的格式控制说明相对应,并且它们的类型,个数和位置要一一对应。


② 普通字符:在输入数据时,需要原样输入的字符。


例:scanf(“x=%d”, &x);


程序输入:


x = 13


上述代码运行效果:


多分支结构和 else-if 语句

else-if 语句是最常用的实现多分支(多路选择)的方法,一般形式为:


if(表达式 1)


语句 1;


else if(表达式 2)


语句 2;



else if(表达式 n-1)


语句 n-1;


else


语句 n;


执行的流程图如下:



首先会求解表达式 1,如果表达式 1 的值为“真”,则执行语句 1,并结束整个 if 语句的执行,否则,求解表达式 2…最后的 else 处理给出条件都不满足的情况,即表达式 1、表达式 2…表达式 n-1 的值都为“假”时,执行语句 n。


下面来看一个简单的例子:


输入一个形式如 “操作数 ?? 运算符?? 操作数” 的四则运算表达式,输出运算结果。


#include<stdio.h>


int main(){


double value1, value2;


char op;


printf("请输入一个表达式: ");


scanf("%lf%c%lf", &value1, &op, &value2);


if(op == '+')


printf("%.2f + %.2f = %.2f\n", value1, value2, value1+value2);


else if(op == '-')


printf("%.2f - %.2f = %.2f\n", value1, value2, value1-value2);


else if(op == '*')


printf("%.2f * %.2f = %.2f\n", value1, value2, value1*value2);


else if(op == '/')


printf("%.2f / %.2f = %.2f\n", value1, value2, value1/value2);


else


printf("请输入正确格式数据!\n");


return 0;


}


char 字符内息的数据,包含一个字符型常量,字符写在单引号中。


输出 %.2f 为输出字符型变量,并保留 2 位小数。


上述案例中输出结果为:



字符型数据的输入和输出


字符型数据的输入输出可以用 scanf()、printf(),也可以用 getchar()、putchar()。


scanf()和 printf()这里就不多说了,这里说一下 getchar()和 putchar()。


字符输入函数 getchar()


调用字符输入函数 getchar()可以从键盘输入一个字符。


设 ch 是字符型变量,函数 getchar()的一般使用格式为:


ch = getchar();


其功能是从键盘输入一个字符,并赋值给变量 ch。


由于函数 getchar()只能读入一个字符,如果输入多个字符,则需要多次调用该函数。


字符输出函数 putchar()


调用字符输出函数 putchar()可以输出一个字符


函数 putchar()的一般调用格式为:


putchar(输出参数);


其功能是输出参数是字符型变量或字符型常量。


【注】函数 getchar()和 putchar()只能处理单个字符的输入和输出,即调用一次函数,只能输入或输出一个字符。


逻辑运算符


上面的例子关系表达式都是只给定了一个条件,如果需要同时满足两个条件时,就需要用到逻辑运算符了。C 语言提供了三种逻辑运算符,如下:


| 运算符 | ! | && | || |


| --- | --- | --- | --- |


| 名称 | 逻辑非 | 逻辑与 | 逻辑或 |


设 a 和 b 表示逻辑运算对象,逻辑运算符的功能描述如下:


!a:如果 a 为“真”,结果是“假”;如果 a 为“假”,结果是“真”。


a && b:当 a 和 b 都为“真”时,结果是“真”;否则结果为“假”。


a || b:但 a 和 b 都为“假”时,结果是“假”;否则结果是“真”。


**同样来通过一个例子来了解一下


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


其用法**


判断键盘输入的字符是否为英文字母


#include<stdio.h>


int main(){


char ch;


printf("请输入一个字符:");


ch = getchar(); /* 输入一个字符赋值给 ch 变量 */


printf("输入的字符为:");


putchar(ch);


if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')){


printf("\n%c 是字母!", ch);


}else{


printf("\n%c 不是字母!", ch);


}


return 0;


}


测试运行结果如下:



输入一个年份,判断是否是闰年


#include<stdio.h>


int main(){


int year;


printf("请输入一个年份:");


scanf("%d", &year);


if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))


printf("%d 是闰年", year);


else


printf("%d 不是闰年", year);


return 0;


}


测试结果如下:



嵌套 if 语句


在 if-else 语句的内嵌语句是另一条基本的 if 语句,就形成了嵌套的 if-else 语句。形式如下。


if(表达式 1)


if(表达式 2)?? 语句 1;


else ??语句 2;


else


if(表达式 3) ??语句 3;


else 语句 4;


流程图如下:



具体用法如下:


#include<stdio.h>


int main(){


int x;


printf("请输入一个整数:");


scanf("%d", &x);


if(x > 50){


if(x % 2 == 0){


printf("%d 是一个大于 50 的偶数!", x);


}else{


printf("%d 是一个大于 50 的奇数!", x);


}


}else{


printf("%d 小于 50", x);


}


return 0;


}


测试效果如下:


switch 语句

switch 语句可以处理多分支选择问题,根据其中 break 语句的使用方法(break 语句为强制结束循环),一般分两种情况。


1、在 switch 语句的每个语句段中都使用 break 语句,也是 switch 语句的主要使用方法,一般形式为:


switch(表达式){


case 常量表达式 1:语句段 1; break;


case 常量表达式 2:语句段 2: break;



case 常量表达式 n:语句段 n; break;


default: 语句段 n+1; break;


}


该 switch 语句的执行流程如下:



首先求解表达式,如果表达式的值与某个常量表达式的值相等,则执行该常量表达式后的相应语句段,如果表达式的值与任何一个常量表达式的值都不相等,则执行 default 后的语句段,最后执行 break 语句,跳出 switch 语句。


在 switch 语句中,表达式和常量表达式的值一般是整形或字符型。每个语句段可以包括一条或多条语句,也可以为空语句。


switch 语句中 default 可以省略,如果省略了 default,当表达式的值与任何一个常量表达式的值都不相等时,就什么都不执行。


还是上面的那个小例子:输入一个形式如 “操作数 运算符 操作数” 的四则运算表达式,输出运算结果。用 switch 语句编写。代码如下:


#include<stdio.h>


int main(){


double value1, value2;


char op;


printf("请输入一个表达式:");


scanf("%lf%c%lf", &value1, &op, &value2);

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
【C语言基础系列】C语言分支结构,java反射原理面试