Linux基本命令,vi编译器的使用,简单的编程步骤,程序语言,gcc编译器编译过程,进制转换
相关知识可以查看文档http://t.csdnimg.cn/CmqhC
数值表示,词法符号,变量,常量相关知识可以查看文档http://t.csdnimg.cn/jJIe2
运算符和输表达式,输入输出相关知识可以查看文档http://t.csdnimg.cn/FJe89
目录
控制语句:
控制语句即用来实现对程序流程的选择、循环、转向和返回等进行控制。
1.分支语句
1.1 if-else
基本结构:
if(表达式)
{
代码段1;
}
else
{
代码段2;
}
执行顺序:如果条件成立,则执行代码段1,否则的话执行代码段2
例题:输入a和b两个整数,用if语句实现两数相减
#include <stdio.h>
int main()
{
int a, b, n;
printf("请输入两个整数:\n");
scanf("%d %d", &a, &b);
if (a <= b)
{
n = b - a;
}
else
{
n = a - b;
}
printf("两个数的差值为:%d\n", n);
return 0;
}
分层结构:
if(表达式1)
{
代码段1;
}
else if(表达式2)
{
代码段2;
}
...
else
{
代码段n;
}
执行顺序:如果满足if中的表达式1则执行代码段1,如果不满足则进入下面else if中表达式2进
行判断,如果条件满足则执行代码段2,如果不满足继续往后执行,最后如果都不满足则执行else
中的代码段n。
例题:从终端输入一个学生的成绩,判断学生成绩,打印成绩级别
#include <stdio.h>
int main()
{
int s;
printf("请输入学生成绩:\n");
scanf("%d", &s);
if (100 <= s || s <= 0)
{
printf("请输入正确的成绩,范围为0-100\n");
}
else if (90 <= s && s <= 100)
{
printf("该学生的成绩级别为:A\n");
}
else if (80 <= s && s <= 89)
{
printf("该学生的成绩级别为:B\n");
}
else if (70 <= s && s <= 79)
{
printf("该学生的成绩级别为:C\n");
}
else if (60 <= s && s <= 69)
{
printf("该学生的成绩级别为:D\n");
}
else
{
printf("sorry you lost\n");
}
return 0;
}
嵌套结构:
if(表达式1)
{
if(表达式2)
{
代码段1;
}
else
{
代码段2;
}
}
else
{
代码段3;
}
执行顺序:如果满足if中的表达式1则进入下面 if中表达式2进行判断,如果条件同时满足则执
行代码段1,如果不满足则执行代码段2,如果不满足if表达式1,则执行else中的代码段3中的代码
段n。
例题:从终端输入一个学生的成绩,判断学生成绩,打印成绩级别用,嵌套结构锁定在0大100范围内再判断等级,否则打印错误提示。
#include <stdio.h>
int main()
{
int s;
printf("请输入学生成绩:\n");
scanf("%d", &s);
if (0 <= s && s <= 100)
{
if (90 <= s)
{
printf("该学生的成绩级别为:A\n");
}
else if (80 <= s)
{
printf("该学生的成绩级别为:B\n");
}
else if (70 <= s)
{
printf("该学生的成绩级别为:C\n");
}
else if (60 <= s)
{
printf("该学生的成绩级别为:D\n");
}
else
{
printf("sorry you lost\n");
}
}
else
{
printf("请输入正确的成绩,范围为0-100\n");
}
return 0;
}
总结:
(1)首先判断表达式是否成立,如果成立就执行if下面的语句块,否则就执行else下面的语句块。
(2)if后面可以没有else, 但是else前面必须有if
(3)if和else以及else if后面如果只有一行语句可以省略花括号{}
1.2 switch-case
基本结构:
switch(变量或者表达式)
{
case 常量1: 代码段1; break;
case 常量2: 代码段2; break;
case 常量3: 代码段3; break;
......
case 常量n: 代码段n; break;
default: 代码段n+1;
}
执行顺序:先判断switch()中的条件是否满足以下的case,如果满足则执行满足的case中的语句块,如果都不满足则执行default中的默认语句块。
注意:1. 表达式不能是浮点型或字符串
2. 如果case的语句块和下面case中的语句块相同,则可以省略。形式如下:
case 常量1:
case 常量2:语句块1;break;
遵守switch语句规则
(1)只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他
类型,则必须使用if语句。
(2)case标签必须是常量表达式,如42或者'4'。
(3)case标签必须是唯一性的表达式,不允许两个case具有相同的值。
2.循环语句
2.1 for 循环
基本结构:
for(表达式1;表达式2;表达式3)
{
代码段;
}
表达式1:赋初值
表达式2:判断的判断条件
表达式3:增值或减值
执行顺序:首先执行表达式1进行赋值,然后判断表达式2是否成立,如果成立就进入循环执行语句块,再执行表达式3进行增值或减值然后继续判断表达式2是否成立,直到表达式2不成立退出循环。
例题:1到10求和
#include <stdio.h>
int main()
{
int sum=0;
for (int i = 1; i <= 10; i++)
{
sum += i;
}
printf("%d\n", sum);
return 0;
}
嵌套结构:
for(表达式1;表达式2;表达式3)
{
for(表达式4;表达式5;表达式6)
{
代码段;
}
}
例题:用for循环打印99乘法表
#include <stdio.h>
int main()
{
for (int i = 1; i < 10; i++)
{
for (int j = 1; j <= i; j++)
{
printf("%d*%d = %d\t", j, i, i * j);
}
printf("\n");
}
return 0;
}
变形:
例题:利用for循环打印所有的水仙花数
#include <stdio.h>
int main()
{
int a, b, c;
int m = 0;
for (int i = 100; i < 1000; i++)
{
a = i % 10;
b = i / 10 % 10;
c = i / 100;
if (i == ((a * a * a) + (b * b * b) + (c * c * c)))
{
printf("%d 为水仙花数\n", i);
m++;
}
}
printf("所以水仙花数一共有 %d 个\n", m);
return 0;
}
例题:利用for循环打印输出:
#include <stdio.h>
int main()
{
int n;
printf("请输入要显示多少行* ");
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
{
printf("*");
}
printf("\n");
}
for (int i = 1; i <= n; i++)
{
for (int k = 1; k <= i - 1; k++)
{
printf(" ");
}
for (int j = 1; j <= n - i + 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
2.2 while循环
基本结构:
定义循环变量并赋值;
while(判断条件)
{
代码段;
增值或减值语句;
}
执行顺序:首先定义循环变量并赋值,然后判断是否符合终止条件,如果符合就进入循环执行代码段及增值减值语句,然后继续判断,直到不成立退出循环。
2.3 do-while循环
基本结构:
定义循环变量并赋值;
do
{
代码段;
增减值语句;
}while(判断条件);
执行顺序:首先定义循环变量并赋值,先执行代码段及增值减值语句,然后判断是否符合判断条件,然后进入循环继续执行代码段及增值减值语句,直到不成立退出循环。
do-while 和 while 的区别:
1.执行顺序不同:do while先执行后判断,while先判断后执行。
2.执行次数不同:do while至少会执行一次。
2.4死循环
for( ; ; ;){ }
while(1){ };
while(1);
2.5.循环控制语句 break,continue,goto
(1)break
直接结束循环
(2)continue
结束本次循环,继续进行下一次循环
(3)goto
强制跳转到标签位置,可以应用于多重循环嵌套(尽量不要使用)