1.C语言结构
顺序结构
C语言是一门结构化的程序设计语言 选择结构
循环结构
语句:由一个分号隔开的就是一条语句 ;//空语句
2.分支语句
(1)if分支
if(表达式) if(表达式) if(表达式1)
语句; 语句1; 语句1;
else else if(表达式2)
语句2; 语句2;
else
语句3;
表达式成立,结果为逻辑值“1”,否则为“0”。
if选择语句结构,无论有多少分支,只能执行一个分支控制的语句。
错例:if(11=<age<28)
正例:if(age>=18 && age<28)
语句如果要控制多条语句,则需要用大括号括起来。(代码块)
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//if分支
int main()
{
int age = 0;
printf("请输入年龄:\n");
scanf("%d",&age);
if (age <18)
{
printf("未成年\n");
}
else if(age>=18 && age<28)
{
printf("青年\n");
}
else if(age>=28 && age<50)
{
printf("中年\n");
}
else if(age>=50 && age<90)
{
printf("老年\n");
}
else
{
printf("长寿\n");
}
return 0;
}
1.悬空else问题
else会与最近未匹配的if配对
书写问题:
例:if(5 == sum)//判断相等,数字写前面,容易判断错误。
错例:if(sum = 5)//赋值语句
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//悬空else问题
int main()
{
int a = 0;
int b = 2;
if(a==1)
if(b==2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
2.修正悬空else问题
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//修正悬空else问题
int main()
{
int a = 0;
int b = 2;
if(a==1)
{
if(b==2)
printf("hehe\n");
}
else
{
printf("haha\n");
}
return 0;
}
(2)switch语句(多分支)
switch(整型表达式)
{
语句项;
}
case 整型常量表达式(进入的位置):
语句;
整型常量表达式可以是char类型,字符在内存中是以ASCII码形式存储的。
例:case 'a':
相当于
case 97:
1.switch分支(1)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//switch分支(1)
int main()
{
int day = 0;
printf("请输入星期几:");
scanf("%d",&day);
switch(day)
{
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;
case 6:
printf("今天星期六\n");
break;
case 7:
printf("今天星期天\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
2.switch分支(2)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//switch分支(2)
int main()
{
int day = 0;
printf("请输入星期几:");
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
3.case嵌套
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//case嵌套
int main()
{
int n = 1;
int m = 2;
switch(n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch(n)
{
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m=%d, n=%d\n",m,n);
return 0;
}
3.while循环
while(表达式)
循环语句;
continue:中止continue后面的语句,返回到判断语句1,进行下一次循环的入口判断;
break:中止循环。
(1)while循环
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//while循环
int main()
{
int i = 1;
while(i<=10)
{
printf("i=%d\n",i);
i++;
}
return 0;
}
(2)while循环加break
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//while循环break
int main()
{
int i = 1;
while(i<=10)
{
if(5==i)
{
break;
}
printf("i=%d\n",i);
i++;
}
return 0;
}
(3)while循环continue(1)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//while循环continue(1)
int main()
{
int i = 1;
while(i<=10)
{
if(5==i)
{
continue;
}
printf("%d ",i);
i++;
}
return 0;
}
(4)while循环continue(2)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//while循环continue(2)
int main()
{
int i = 0;
while(i<=10)
{
i++;
if(5==i)
{
continue;
}
printf("i=%d\n",i);
}
return 0;
}
(5)键盘读取字符
getchar() //识别用户输入的字符并转化为ASCII码,以int形式存储。
例:int ch = getchar();
putchar(ch); //相当于printf("%c",ch);
连续读取键盘输入字符并输出:
while((ch = getchar())!=EOF)
{
putchar(ch);
}
//多字符输入时,实质上是分多次循环输出的。
//getchar 一个一个get,putchar一个一个put,连带输入时的回车也输出了。
//ctrl + z,回车结束代码
//ctrl + c,直接结束代码
EOF(文件结束标志) -> end of file ->实质上是 -1
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//键盘读取字符
int main()
{
int ch = 0;
printf("请输入字符:\n");
while ( ( ch = getchar() )!=EOF )
{
putchar (ch);
}
return 0;
}
(6)输出1~100之间的奇数(1)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//输出1~100之间的奇数(1)
int main()
{
int i = 1;
int j = 0;
printf("1到100之间的奇数有:\n");
while (i<=100)
{
if (i%2)
{
printf("%d\n",i);
j++;
}
i++;
}
printf("1到100之间一共有%d个奇数\n",j);
return 0;
}
(7)输出1~100之间的奇数(2)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//输出1~100之间的奇数(2)
int main()
{
int i = 1;
int j = 0;
printf("1到100之间的奇数有:\n");
while (i<=100)
{
printf("%d\n",i);
i+=2;
j++;
}
printf("1到100之间一共有%d个奇数\n",j);
return 0;
}