【C 语言基础系列】C 语言分支结构,java 反射原理面试
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 都为“假”时,结果是“假”;否则结果是“真”。
**同样来通过一个例子来了解一下
其用法**
判断键盘输入的字符是否为英文字母
#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);
评论