目录
一、概述
C语言的三种基本结构:顺序结构、选择结构、循环结构
- 顺序结构:程序按顺序执行,不发生跳转
- 选择结构:依据是否满足条件,有选择的执行相应功能
- 循环结构:依据条件是否满足,循环多次执行某段代码
二、选择结构
2.1 if语句
如果表达式结果为真,执行{ }对应的代码
- if(表达式)
- if(表达式){ } else{ }
- if(表达式1){ } else if(表达式2){ }else{ }
#include <stdio.h>
int main() {
int score;
scanf("%d",&score);
if(score>700) {
printf("我要上清华!");
}else{
printf("我要上北大!");
}
return 0;
}
三只小猪称体重:
#include <stdio.h>
int main() {
int a,b,c;
printf("请输入三只小猪的体重:\n");
scanf("%d%d%d",&a,&b,&c);
if(a>b) {
if(a>c) {
printf("小猪a最重\n");
} else {
printf("小猪c最重\n");
}
} else if(b>c) {
printf("小猪b最重\n");
} else {
printf("小猪c最重\n");
}
return 0;
}
//输入:26 28 25
//输出结果:小猪b最重
时间差
#include <stdio.h>
int main(){
//计算时间差
int hour1,minute1;
int hour2,minute2;
scanf("%d %d\n",&hour1,&minute1);
scanf("%d %d",&hour2,&minute2);
int h=hour2-hour1;
int m=minute2-minute1;
if(m<0){
m=m+60;
h--;
}
printf("%d:%d和%d:%d相差了%d时%d分。",hour1,minute1,hour2,minute2,h,m);
return 0;
}
输出结果:
#include <stdio.h>
int main() {
int a,b,c,max;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b) {
if(a>c) {
max=a;
} else {
max=c;
}
} else {
if(b>c) {
max=b;
} else {
max=c;
}
}
printf("三位数%d,%d,%d中,%d最大",a,b,c,max);
return 0;
}
输出结果:
2.2 switch语句
switch(控制表达式){
case 常量:
语句
……
case 常量:
语句
……
default:
语句
……
}
#include <stdio.h>
int main() {
int score;
scanf("%d",&score);
switch(score/10) {
case 10:
printf("优秀");
break;
case 9:
printf("良好");
break;
case 8:
printf("良好");
break;
case 7:
printf("合格");
break;
case 6:
printf("合格");
break;
default:
printf("不合格");
}
return 0;
}
//输入:88
//输出:良好
三、循环结构
3.1 while语句
while循环语句:先判断表达式,后执行语句
#include <stdio.h>
int main() {
//凡是带7的或者7的倍数都要敲桌子
int i=1;
while(i<100){
if(i%7==0||i/10==7||i%10==7){
printf("敲桌子\n");
}else{
printf("%d\n",i);
}
i++;
}
return 0;
}
3.2 do…while语句
#include <stdio.h>
int main(void) {
//水仙花数:从100-999各个位数的立方和相加等于这个数本身就是一个水仙花数
int i=100;
do {
//个位数
int a=i%10;
//十位数
int b=i/10%10;
//百位数
int c=i/100;
if(a*a*a + b*b*b + c*c*c == i) {
printf("%d\n",i);
}
i++;
} while(i<=999);
return 0;
}
3.3 for语句
for(初始表达式1;判断表达式2;运算表达式3) 语句;
eg. for(int i =0; i<5;i++){
// 循环体
}
执行顺序解抛 执行的顺序如下: 第一步 : i=0 初始化值
第二步 : i<5 进行条件判断,如果为真,则继续执行
第三步 : 执行循环体的内容
第四步 : i++ 变量i自增
第五步 : 回到第二步,条件判断为真,则执行循环体内容,再 到i++一直循环, 直到第二步的判断条件为假,则退出该循环
#include <stdio.h>
int main(){
for(int i=0;i<10;i++){
printf("%d ",i);
}
return 0;
}
输出结果:0 1 2 3 4 5 6 7 8 9
#include <stdio.h>
int main(){
int j=2;
for(int i=0;i<10,j<10;i++,j+=2){
printf("%d ",i);
}
return 0;
}
//输出结果:0 1 2 3
3.4嵌套循环
#include <stdio.h>
int main(){
//外层执行一次,内层执行一周
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
printf("%d %d\n",i,j);
}
}
return 0;
}
输出结果:
九九乘法表
#include <stdio.h>
int main(){
for(int i=0;i<=9;i++){
for(int j=0;j<=i;j++){
printf("%d*%d=%d ",j,i,i*j);
}
printf("\n");
}
return 0;
}
输出结果
四、跳转语句
4.1 break语句.
- 当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构
- 当它出现在循环语句中,作用是跳出当前内循环语句,执行后面的代码
- 当它出现在嵌套循环语句中,跳出最近的内循环语句,执行后面的代码
#include <stdio.h>
int main(){
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(j==5){
break;
}
printf("i=%d,j=%d\n",i,j);
}
}
return 0;
}
输出结果
#include <stdio.h>
int main() {
for(int i=0; i<10; i++) {
if(i==5) {
break;
}
for(int j=0; j<10; j++) {
printf("i=%d,j=%d\n",i,j);
}
}
return 0;
}
输出结果:
4.2 continue语句
在循环语句中,如果希望立即终止本次循环、并执行下一次循环,此时就需要使用continue语句
#include <stdio.h>
int main() {
for(int i=0;i<=10;i++){
if(i%2==1){
continue;
}
printf("%d\n",i);
}
return 0;
}
输出结果
4.3、goto语句
无条件跳转
#include <stdio.h>
int main() {
printf("HelloWorld 1\n");
printf("HelloWorld 2\n");
goto flag; //flag后面是分号
printf("HelloWorld 3\n");
printf("HelloWorld 4\n");
flag: //flag后面是冒号
printf("HelloWorld 5\n");
printf("HelloWorld 6\n");
return 0;
}
输出结果
五、随机数
每次召唤 rand() 就得到一个随机的整数
#include <stdio.h>
int main(){
srand(time(0));
int a=rand();
printf("%d",a);
return 0;
}