0基础学习Linux——C语言基础(5)
练习:从键盘输入一个字符,输出该字符的按字典排列顺序的下一个字符,例如,2 输入a,则输出b。如果输入的字符不在26个英语字母中,则显示输入数据有误,如果输入的字符是z或Z,则输出a或A。练习:从终端获得2个数,判断两个数的大小,如果第一个数大于第二个数打印第一个 数,如果第一个数不大于第二个数,两个数交换后打印第一个数。从main函数第一句开始执行,顺序依次执行,执行到main函数结束。==等于
7.puts:
- 在终端打印一行字符串
- puts 会多打印一个\n字符。
使用实例:
puts("hello world!");
#include <stdio.h>
int main (void)
{
char str[32]={"hello world"};
puts("hello world!");
puts(str);
printf("str = %s\n",str);
printf("str = %s\n","hello world");
return 0;
}

8.gets :
- 从终端接受一行字符串
- gets会去掉从终端输入的\n字符。
- gets可以接收带‘ ’的字符串,scanf 不能接收带‘ ’的字符串。
使用示例:
char str[32] = 0;
gtes (str);
#include <stdio.h>
int main(void)
{
char str[32] = {0};
gets(str);
printf("str = %s\n",str);
return 0;
}

4.流程控制
1.顺序结构
从main函数第一句开始执行,顺序依次执行,执行到main函数结束。
2.分支结构
1.关系运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
#include <stdio.h>
int main(void)
{
printf("%d\n",1+(3>5));
return 0;
}

2.逻辑运算符
1. && 逻辑与
2. | | 逻辑或
3. ! 逻辑非
表达式1 逻辑运算符 表达式2
&&:一假为假,全真为真。
| |:一真为真,全假为假。
!:真取非得假,假取非为真。
#include <stdio.h>
int main(void)
{
int num = 200;
int ret = 0;
ret = num >= 0 && num <= 100;
printf("ret = %d\n",ret);
ret = num >= 0 || num <= 100;
return 0;
}

截断:&&左边判断为假时,右边便不再执行。
| |左边判断为真时,右边便不再执行。
#include <stdio.h>
int main(void)
{
int a = 0;
int b = 0;
int c = 0;
c= a++ && ++b;
printf(“a = %d,b = %d,c = %d”,a,b,c);
return 0;
}

1 #include <stdio.h>
2 int main(void)
3 {
4
5 int a = 0;
6 int b = 0;
7 int c = 0;
8 int d = 0;
9 c = a++ && ++b;
10 d = --a || --b;
11 printf("a = %d,b = %d,c = %d\n",a,b,c);
12 printf("a = %d,b = %d,d = %d\n",a,b,d);
13
14
15 return 0;
16
17 }

| 运算符 | 表达式1 | 表达式2 | 结果 |
| && | 真 | 真 | 真 |
| 真 | 假 | 假 | |
| 假 | 真 | 假 | |
| 假 | 假 | 假 |
| 运算符 | 表达式1 | 表达式2 | 结果 |
| | | | 真 | 真 | 真 |
| 真 | 假 | 真 | |
| 假 | 真 | 真 | |
| 假 | 假 | 假 |
3.特殊运算符(三目运算符):
- 结合方向自右至左
?:
格式:逻辑表达式?表达式1:表达式2
ret = num1 > num2 ? num1 : num2;
#include<stdio.h>
int main(void)
{
int num1 = 0;
int num2 = 0;
int ret = 0;
printf("输入两个数字:");
scanf("%d%d",&num1,&num2);
ret = num1 < num2 ? num1 : num2;
printf("ret = %d\n",ret);
return 0;
}

4.if分支
- 判断逻辑时使用if分支。
- 同一类数据完成不同操作使用if分支。
if(逻辑表达式)
{
语句块1;
}
else
{
语句块2;
}
- if可以脱离else单独使用,但是else不能脱离if单独使用。
- if后面必须加条件判断,else后面不用加条件判断。
- if不加大括号{ }默认控制一句,最好加上{ }。
#include<stdio.h>
int main(void)
{
int num = 0;
scanf("%d",&num);
if (1 == num % 2)
{
printf("%d为奇数\n",num);
}
else
{
printf("%d为偶数\n",num);
}
return 0;
}

流程结构:

练习:从终端获得2个数,判断两个数的大小,如果第一个数大于第二个数打印第一个 数,如果第一个数不大于第二个数,两个数交换后打印第一个数
1 #include <stdio.h>
2 int main(void)
3 {
4 int num1 = 0;
5 int num2 = 0;
6 int t = 0;
7 printf("请输入两个数;");
8 scanf("%d",&num1);
9 scanf("%d",&num2);
10 if (num1>num2)
11 {
12 printf("最大值是%d\n",num1);
13 }
14 else
15 {
16 t = num1;
17 num1 = num2;
18 num2 = t;
19 printf("最大值是%d\n",num1);
20 }
21
22 return 0;
23 }

2.阶梯分支
1.结构
if(表达式1)
{
语句块1;
}
else if(表达式2)
{
语句块2;
}
else if(表达式3)
{
语句块3;
}
else
{
语句块4;
}
#include<stdio.h>
int main(void)
{
int score = 0;
printf("请输入成绩:");
scanf("%d",&score);
if (score >= 90 && score <= 100)
{
printf("优秀");
}
else if (score >= 80 && score < 90)
{
printf("良好");
}
else if (score >= 70 && score < 80)
{
printf("一般");
}
if (score >= 60 && score < 70)
{
printf("及格");
}
else
{
printf("不及格");
}
return 0;
}

3.嵌套分支
if (表达式1)
{
if(表达式2)
{
if(表达式3)
{
....
}
}
}

1 #include <stdio.h>
2 int main(void)
3 {
4 int score = 0;
5 scanf("%d",&score);
6 if(score >=60)
7 {
8 if (score >= 70)
9 {
10 if(score >= 80)
11 {
12 if(score >=90)
13 {
14 printf("优秀");
15 }
16 else
17 {
18 printf("良好");
19 }
20 }
21 else
22 {
23 printf("一般");
24 }
25
26 }
27 else
28 {
29 printf("及格");
30 }
31
32 }
33
34 else
35 {
36 printf("不及格");
37 }
38
39
40 return 0;
INSERT >> e7.c[+

练习:从键盘输入一个字符,输出该字符的按字典排列顺序的下一个字符,例如,2 输入a,则输出b。如果输入的字符不在26个英语字母中,则显示输入数据有误,如果输入的字符是z或Z,则输出a或A。
1 #include<stdio.h>
2 int main(void)
3 {
4 char ch = 0;
5 printf("请输入一个字母:");
6 scanf("%c",&ch);
7 if((ch >='A'&& ch <='Z')||( ch >='a'&& ch <='z'))
8 {
9 if(ch !='z'&& ch !='Z')
10 {
11 printf("%c\n",ch+1);
12 }
13 else
14 {
15 if(ch == 'z')
16 {
17 printf("a\n");
18 }
19 else
20 {
21 printf("A\n");
22 }
23 }
24 }
25
26 else
27 {
28 printf("数据有误\n");
29 }
30
31 return 0;
32 }

5.switch 分支:有若干个确定的分支
1.基本结构:
Switch (整形表达式)
{
case常量1:语句块1;break;
case常量2:语句块2;break;
case常量3:语句块3;break;
default;
语句块4;
}

- Switch后面的表达式必须为整形,不能为浮点数类型。
- case后面的值必须为常量,不能为常量表达式,变量或变量表达式
- Switch只与case后面的值比一次,然后顺序下行执行。
#include<stdio.h>
int main(void)
{
int num = 0;
printf("请输入0-5之间的数字:\n");
scanf("%d",&num);
switch (num)
{
case 0:printf("零\n"); break;
case 1:printf("一\n"); break;
case 2:printf("二\n"); break;
case 3:printf("三\n"); break;
case 4:printf("四\n"); break;
case 5:printf("五\n"); break;
default:
printf("不认识\n");
}
return 0;
}

#include<stdio.h>
int main(void)
{
int score = 0;
int num = 0;
printf("请输入成绩:\n");
scanf("%d",&score);
num = score/10;
switch (num)
{
case 6:printf("及格\n"); break;
case 7:printf("一般\n"); break;
case 8:printf("良好\n"); break;
case 9:printf("优秀\n"); break;
case 10:printf("满分\n"); break;
default:
printf("不及格\n");
}
return 0;
}

2.嵌套结构
- 里层Switch结束之后,使用break跳出外层Switch,若如果没有break,会顺序进行。
#include<stdio.h>
int main(void)
{
int score = 0;
int num = 0;
printf("请输入成绩:\n");
scanf("%d",&score);
num = score/10;
switch (num)
{
case 6:printf("及格\n"); //缺少break
case 7:printf("一般\n"); break;
case 8:printf("良好\n"); break;
case 9:printf("优秀\n"); break;
case 10:printf("满分\n"); break;
default:
printf("不及格\n");
}
return 0;
}

更多推荐


所有评论(0)