顺序结构
1.定义:从main()开始,由上往下语句顺序执行
scanf()
scanf("普通/占位符",地址列表)
1.''普通/占位符'',输入时普通字符必须原样输入
int a,b;
scanf("%d,%d",&a,&b);
输入:3,5重点是,
scanf("a=%d,c=%d",&a,&b);
scanf("%d",&a);
2.占位符,输入时四种输入
int a,b;
scanf("%d%d",&a,&b);
输入:3空格7 回车
3回车7回车
3tab键7
混合式输入:3空格tab键回车7
3.占位符%c,输入时一种输入
char ch1,ch2;
scanf("%c%c",&ch1,&ch2);
输入:ab
4.混合占位符,输入时一种输入
char ch1,ch2;
int x;
scanf("%c%d%c",&ch1,&x,&ch2);
输入:a空格1b
5.地址列表,输入时&
int x,y,z;
scanf("%d%d%d",&y,&x,&z);
字符数据的输入输出
putchar(),getchar()
学习方法:头文件名+函数的使用格式
1.putchar()
格式:putchar(字符常量或字符变量)
功能:输出一个字符但不输出单引号
例如:putchar('a'); a
putchar('\n'); 光标下移
putchar(100); d ascII值
putchar('100');格式错误:字符型数据单引号内只有一个字符
2.getchar()
功能:接收一个从键盘输入的字符
注:getchar()没有任何参数,函数的返回值是输入的字符
如:char a,b;
a=getchar();
b=getchar();
若输入为:1<回车>
则变量a的值为字符'1',变量b的值为回车
选择结构
1.定义:从main()开始,由上往下有些语句执行有些不执行
2.两类语句->执行语句:控制语句
两类表达式
if()...else...
格式1:
if(表达式)
语句序列1;=>if子句
后继子句
格式2:
if(表达式)
语句序列1;
else
语句序列2;
后继语句
main(){
int m=5;
if(m++>5)=====>m++=6
printf("m=%d",m);
else
printf("m=%d",m++);=====>m=6 m++=7
printf("m=%d",++m);======>m=8 ++m=8
}
输出:m=6 m=8
if语句只控制一条语句
例如:
main(){
int m=5;
if(m++>5)
printf("%d",m--);//受if控制
printf("%d",m);//不受if控制----》结构错误,改正加{}
else
printf("%d",m);
}
格式3:if语句的嵌套,else配对在其上方最近且未配对的if
if(表达式1)
if(表达式2)
语句序列11;
else
语句序列12;
else
语句序列2;
例如:
int x;
scanf("%d",&x);
if(x<0)printf("-1\n");
else if(x>0)printf("1\n");
else break;
switch(){...}
格式:
switch(表达式)
{
case 常量表达式1:子句1;break;
case 常量表达式2:子句2;
case 常量表达式n:子句n;
default: 子句n+1;
}
注意:
1.switch后必须用小括号将表达式括起
2.case后常量整型或字符型,不能有变量和逗号运算符
3.各case后常量不能出现相同的值
4.case和default只是一个入口标志,不起中断作用,它们的顺序可以任意颠倒
switch语句有如下规则:
switch语句中的变量类型只能为byte、short、int或者char。
switch语句可以拥有多个case语句。每个case后面跟一个要比较的值和冒号。
case语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
当变量的值与case语句的值相等时,那么case语句之后的语句无条件开始执行,直到break语句出现才会跳出switch语句。
当遇到break语句时,switch语句终止。程序跳转到switch语句后面的语句执行。case语句不必须要包含break语句。如果没有break语句出现,程序会继续执行下一条case语句,直到出现break语句。
switch语句可以包含一个default分支,该分支必须是switch语句的最后一个分支
default在没有case语句的值和变量值相等的时候执行。default分支不需要break语句。
例题分析
循环结构
1.定义:从main()开始,从上向下,使得某些语句重复执行
2.循环结构的程序:在顺序结构中加入循环控制语句
方式1:
While()
{
循环体语句序列;
}
方式2:
Do
{
循环体语句序列;
}while();
方式3:
for(;;)
{
循环体语句序列
}
方式4:
if(){}
else{}与goto配合使用
格式1---while语句(当型循环):
While(表达式)
{
循环体语句序列;
}
后继语句;
说明:
1.执行过程直到表达式为假跳出循环
2.表达式()加括号
3.while和它的控制语句算一条执行语句
4.复合语句算一条执行语句
例如:
main(){
int n=6;
while(n<9)
{printf("%d\n",n);
n++;
}
printf("%d\n",n--);
}
输出
6
7
8
9
格式2---do-while语句(直到型循环):
do
循环体语句序列
while(表达式);
后继语句
说明:1.执行过程
2.do-while();
3.do-while配对
4.do就近控制一条,若要控制多条的话,需要加花括号变成复合语句
例:
while(表达式);-----》while后加分号表示空控制语句,也是一条单独的语句
语句1;
语句2;
语句3;所以该程序共有四条语句
do
{语句1
语句2
语句3}
while(表达式);----》该程序共一条语句
格式3:
for(exp1;exp2;exp3)
{
循环语句序列;
}
后继语句;
说明:1.执行过程
2:exp1---初始化---》执行一次
exp2----条件---》判断
exp3----》增量式----》影响exp2
3.exp2----永真---》死循环
4.两次分号分割三个表达式
5.for(exp1;1;exp3)
循环体
缺省exp2为永真表达式,默认填入为1
例:求循环体次数,执行后变量i=?
问题1
for(i=1;i++<4;);循环体执行3次,i=5
问题2
for(i=1;++i<4;i++);循环体执行1次,i=4
例题:1+....+100哦这个题hhh
(1)累加器:
sum=0;sum+=i;
累乘器:sum=1;sum*=i;
(2)重复加法
解决方法(4种)(以下代码均为菜鸡作者随手一写,意会即可)
int i,sum=0;
1.for(int i=1;i<=100;i++)sum+=i;
2.while(i++<=100)sum+=i;
3.do{sum+=i}while(i<101)
4.LP:sum+=i;i++
if(i<=100)goto LP;
两个控制语句----break continue
格式:break;跳出
功能:中止退出。范围:循环体照和switch体
格式:continue;
功能:结束一次循环继续
范围:循环体中,在for循环中跳回exp3,while循环中跳回while表达式
双循环结构
定义:一个语句出现两个以上的for循环,while循环
以双循环为例最外层成为外循环,内层为内循环,内循环结束后回到外循环