程序设计三种结构
顺序结构
分支结构
做判断,做选择
if(条件){
语句块;//条件为真时执行语句块
}
如果语句块只有一条语句,可以不加大括号(不推荐)
要求if语句中不能省略括号,且括号成对出现
二个里选择一个(2选1)
if(条件1){
语句块1;
}
else{
语句块2;
}
//如果条件1成立,执行语句块1,否则执行语句块2
//条件只能放在if后面
分支结构可以互相嵌套
多分支结构(使用条件:连续区间)
if(条件1){
//语句块1;
}else if(条件2) {
//语句块2;
}else if(条件3){
//语句块3;
}
使用switch优化if--else if多分支结构
条件:如果条件中都是等值判断,建议使用switch
switch(表达式){
case 1://常量表达式
语句块1;
break;//含义:case匹配成功后,跳出switch程序
case 2://常量表达式
语句块2;
break;
default://没有匹配时执行
语句块;
}
常量表达式只能是整数,char,枚举
当在case语句块中定义变量时,语句块需加大括号
几个case执行同一语句块时
{
case1:
case2:
语句块;
break;
case3:
语句块;
}
#include <stdio.h>
int main()
{
int num;
printf("please inpput a number(1~7):");
scanf("%d",&num);
/*if(num < 1 || num > 7)
{
printf("无效数字,程序退出\n");
//退出程序
return 1;//exit(1);
}
else*/
{
/*if(1 == num)
{
printf("星期一\n");
}
else if(2 == num)
{
printf("星期二\n");
}
else if(3 == num)
{
printf("星期三\n");
}
else if(4 == num)
{
printf("星期四\n");
}
else if(5 == num)
{
printf("星期五\n");
}
else if(6 == num)
{
printf("星期六\n");
}
else
{
printf("星期日\n");
}*/
/*switch(num)
{
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;
}*/
switch(num)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("do work\n");
break;
case 6:
printf("rest\n");
break;
case 7:
printf("attend class\n");
break;
default:
printf("数值无效,程序退出\n");
return 1;
}
}//switch
return 0;
}
使用随机函数rand();生成随机数:引入头文件 #include <stdlib.h>
为什么每次生成随机数都一样?
:随机数是一个正态分布函数,会有一个种子(电脑开机后自动产生,不会更改)
如果想要1真正产生随机数,就必须重新播种,time
使用srand()函数
srand(time(NULL));
随机变量=rand() % n
引入头文件#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
//石头0,剪刀1,布2的游戏,一局一总结
//用户通过键盘输入
//电脑可以随机出
//随机函数rand();
int draw = 0,pcwin = 0,userwin = 0;
int user_select = 0;
while(pcwin >= 0 && userwin >= 0)
{
srand(time(NULL));
int pc = rand() % 3;
printf("请输入手势(0:石头,1:剪刀,2:布,输入0,1,2以外数字退出游戏):" );
scanf("%d",&user_select);
switch(pc)
{
case 0:
{
if(user_select == 0)
{
printf("平局\n");
draw++;
break;
}
else if(user_select == 1)
{
printf("你输了\n");
pcwin++;
break;
}
else if(user_select == 2)
{
printf("你赢了\n");
userwin++;
break;
}
}
case 1:
{
if(user_select == 0)
{
printf("你赢了\n");
userwin++;
break;
}
else if(user_select == 1)
{
printf("平局\n");
draw++;
break;
}
else if(user_select == 2)
{
printf("你输了\n");
pcwin++;
break;
}
}
case 2:
{
if(user_select == 0)
{
printf("你输了\n");
pc++;
break;
}
else if(user_select == 1)
{
printf("你赢了\n");
userwin++;
break;
}
else if(user_select == 2)
{
printf("平局\n");
draw++;
break;
}
}
default:
printf("游戏结束!\n");
return 1;
}
if(pcwin > userwin)
{
printf("电脑赢%d盘,你赢%d盘,平局%d盘,电脑获胜!\n",pcwin,userwin,draw);
}
else if(pcwin == userwin)
{
printf("电脑赢%d盘,你赢%d盘,平局%d盘,比分平!\n",pcwin,userwin,draw);
}
else if(pcwin < userwin)
{
printf("电脑赢%d盘,你赢%d盘,平局%d盘,你获胜了!\n",pcwin,userwin,draw);
}
}
return 0;
}
循环结构:
将相同功能的代码重复多次
whlile循环的结构:
while(循环条件){
//循环体 如果循环变量与循环条件满足,执行循环体(更新循环变量);如果循环变量和循环条件不满足,循环结束
}
循环三要素
循环体 循环条件 循环变量
死循环