一、选择结构和判断语句
注意 当报错提示 \243 ,\272 就是代码中有中文字符。
1.1 if ...else 语句
#include <stdio.h> // 预处理
//流程控制if语句
int main() // 函数入口
{
int money; // 定义一个变量,变量名为money
printf("你有多少钱?\n"); // 输出:"你有多少钱“,这句话,\n 是换行符。
scanf("%d",&money); // 在键盘上输入数字,&:是取地址。
if(money >= 100) //如果超过100元;
// == 是等于号(判断),= 是赋值。
// if()括号的内容终将会转成1,0.
//只有是1(true)才会执行大括号中的代码语句。
{
printf("有钱人\n"); //键盘输出:"有钱人",这句话。
}
/*getchar 获取字符,
putchar输出字符,
puts 输出一个字符串,
gets输入一个字符串*/
puts("谈话结束"); // 不管超没超过100元,都输出:”谈话结束“这句话。
printf("测试结果:%d\n",money>=100);
// 这里的money>=100是一个表达式,判断是否大于100,
//如果满足(大于或等于)返回1,如果不满足(小于)返回0.
return 0;
}
输入三个数,从小到达输出
#include <stdio.h>
// 代数法。
// 从小到达输出。
int main()
{
int data1;
int data2;
int data3;
int datatmp; //不管怎么输入,小数一定在前面
printf("请输入三个数:\n");
scanf("%d%d%d",&data1,&data2,&data3);
// 3 2
if(data1>data2){
// 如果3>2 就进行互换,
printf("=============进行交换\n");
datatmp = data1 ;
// 3 = datatmp
data1 = data2 ,
// 2 = data2
data2 = datatmp ;
if(data1>data3){
// 如果2 > 1 ,着进行互换
printf("---------进行交换\n");
datatmp = data1 ;
// 2 =datatmp
data1 = data3 ;
// 1 = data2
data3 = datatmp;
// 2 = data3
}
}
if(data2>data3){
// 如果2 > 1 ,着进行互换
printf("---------进行交换\n");
datatmp = data2 ;
// 2 =datatmp
data2 = data3 ;
// 1 = data2
data3 = datatmp;
// 2 = data3
// 3 = data2
}
printf("%d,%d,%d\n",data1,data2,data3);
return 0;
}
逻辑运算符
#include <stdio.h>
//逻辑运算符
int main()
{
int a;
int b;
printf("请输入a,b两个数:\n");
scanf("%d%d",&a,&b);
if( a==1 && b==0) //判断 同时满足,执行下面代码 并且
{
printf("逻辑与成功\n");
}
if( a==1 || b==0) //判断 满足其中一个条件,执行下面代码 或者
{
printf("逻辑或成功\n");
}
if( !a ) //判断 相反结果
// 如果输入1 那就是非a(非1)=0,就是假,不执行下面代码
// 如果输入0 那就是非a(非0)=1,就是真,执行下面代码
{
printf("逻辑非\n");
}
return 0;
}
if语句练习
#include <stdio.h>
int main()
{
int havaMoney; // 先定义变量名
int handSome;
int people;
puts("你是哪里人,莆田扣0,其他扣1");
scanf("%d",&people);
if(people != 1 )
{
puts("不嫁莆田人\n");
return 1;
}
// 第一个if判断是不是莆田人,
// 如果不是继续向下执行,如果是直接终止。
puts("你有钱吗?有钱扣1,没钱扣0");
scanf("%d",&havaMoney);
puts("你帅吗?帅扣1,不帅扣0");
scanf("%d",&handSome);
if(havaMoney == 1 && handSome == 1)
{
printf("我既有钱,也帅\n");
puts("高富帅");
}
// 这个的if判断是否有钱,是否帅,
// 如果都满足就输出:”高富帅“,如果不满足程序就向下执行。
if(havaMoney == 1 || handSome == 1)
{
printf("我条件还凑合\n");
puts("我们可以考虑一下");
} //这里的if判断是否满足其中的某一项。
// 如果满足其中某一项,就输出:”可以考虑一下“。
//如果都不满足,就向下执行程序。
if(havaMoney != 1 && handSome != 1)
{
printf("我没钱,没车,没房,没颜值\n");
puts("你个瘪三");
} //这里if判断,如果都不满足,就输出你是:”瘪三“。
puts("相亲结束");
return 0 ;
}
1.2if() ...else if
#include <stdio.h>
int main()
{
int body;
int money;
int rich;
int play;
puts("你身体怎么样");
scanf("%d",&body);
if(body == 1){
puts("你家庭条件怎么样,有没有车房 (tips:输入两个整数)");
scanf("%d%d",&money,&rich);
if(money ==1 && rich ==1){
puts("你愿意给我花钱吗?");
scanf("%d",&play);
if(play ==1){
puts("条件还不错,我很满意");
}else{
printf("对不起,我没有看上你");
}
}else if(money ==1 || rich ==1){
puts("条件还不错,我考虑一下");
}else{
puts("不好意思,我零时有点事,失陪了");
}
}else{
printf("我们不能做朋友,你的身体太差了");
}
return 0;
}
switch语句:
#include <stdio.h>
int main()
{
int score; // 定义一个变量
char cdata;
char cdata1;
char cdata2;
char cdata3;
puts("请输入分数!"); // 使用puts输出语句,
// 与printf的区别在于,puts只能输出字符串,并且自带换行。
scanf("%d",&score); // 在键盘上输出数据。
switch(score/10){ // 这里定义的是int(整数类型的):89/10 就是8. 如果 score =x
case 0 : //case == 0 ; 满足0
case 1 : //case == 1 ; 满足1
case 2 : //case == 2 ; 满足2
case 3 : //case == 3 ; 满足3
case 4 : //case == 4 ; 满足4
case 5 : //case == 5 ; 满足5
// 满足1到5 执行下面语句
printf("等级为D,不及格,学渣\n");
break ; //切换 跳出循环
case 6 : //case == 6 ;
case 7 : //case == 7 ;
// 满足6到7 执行下面语句
printf("等级为c,一般般,混日子吧\n");
break ; //切换 跳出循环
case 8 : //case == 8 ;
case 9 : //case == 9 ;
// 满足8到9 执行下面语句
printf("等级为B,良好,还不错\n");
break ; //切换 跳出循环
case 10: //case == 10 ;
// 满足10 执行下面语句
printf("等级为A,优秀,很棒帮\n");
break ; //切换 跳出循环
default: // 不满足以上,会怎么样
printf("成绩无效,请重新输入\n");
}
printf("请输入一个字符:\n");
// 第十行里有个scanf 需要吸收一个回车符
getchar();
scanf("%c",&cdata);
// 当代码中出现了多个scanf语句,需要在后面scanf语句前加一个getchar
switch(cdata){
case'a':
puts("满足条件a的情况");
break;
case'b':
puts("满足条件b的情况");
break;
case'c':
puts("满足条件c的情况");
break;
default:
printf("请输入正确字符");
}
printf("请输入一个字符:\n");
// 第十行里有个scanf 需要吸收一个回车符
getchar();
scanf("%c",&cdata1);
// 当代码中出现了多个scanf语句,需要在后面scanf语句前加一个getchar
switch(cdata1){
case'a':
puts("满足条件a的情况");
break;
case'b':
puts("满足条件b的情况");
break;
default:
printf("请输入正确字符");
}
printf("请输入一个字符:\n");
// 第十行里有个scanf 需要吸收一个回车符
getchar();
scanf("%c",&cdata2);
// 当代码中出现了多个scanf语句,需要在后面scanf语句前加一个getchar
switch(cdata2){
case'a':
puts("满足条件a的情况");
break;
case'b':
puts("满足条件b的情况");
break;
default:
printf("请输入正确字符");
}
puts("pone!"); // 结束
return 0 ;
}
二、while循环
while循环的底层逻辑是,三个表达式
第一个表达式,条件的初始值。 int wacher =0;
第二个表达式,条件的临界值。 wacher < 10;
第三个表达式,条件发生变化。 wacher ++
当条件为真时,就循环一次。直到条件不为真时,停止当前循环,并且跳出循环。
#include <stdio.h>
int main()
{
int times;
times =10;
while(times){
// 只要条件为真,就一直执行,if,只执行一次。
// 要避免死循环,到一定程度上要能满足退出条件,除c51单片机
puts("我爱你1");
printf("times = %d\n",times);
times = times - 1; // while不仅仅是执行puts语句,是在执行过程中进行判断
// 当条件为真时就输出,当times == 0 ;循环结束
// 自减:times -- == times =times - 1
}
// 另一种思路
int wacher = 0 ;
// 0,1,2,3,4,5,6,7,8,9
// 注意不能写成wacher <=10,不然就会输出成 0,1,2,3,4,5,6,7,8,9,10;
// 在计算机中0也算数字。
while(wacher < 10){
puts("我爱你");
printf("wacher = %d\n",wacher);
wacher ++;
}
return 0;
}
2.1计算1到100的和。
思路:首先是定义两个变量sum和date,数字和1到100的和
引入while循环 目的是使循环到100就停止,
我们一步步来,先来循环出1到100,
然后在理解一下题的意思,计算1到100所有数据的和。
ge:1+0 =1
2+1 =3
3+3 =6
4+6=10...
在循环内写出累加0到100的和的式子
最后循环通过数字递增来实现0到100的相加
最后在循环外面 输出0到100的总和
当理解题的意思之后,就开始写代码
#include <stdio.h>
int main() // 一共有三个表达式
{
int sum = 0; //变量最好初始化成0,编码习惯。
int data = 1; //第一个表达式,条件的初始值。
// <10 0,1,2,3,4,5,6,7,8,9
//<=10 0,1,2,3,4,5,6,7,8,9,10
// 当data变量满足这个条件就开始打印。
while(data < 101){ //第二个表达式,条件的临界值。
// 只要条件为真,就一直执行,if,只执行一次。
// 要避免死循环,到一定程度上要能满足退出条件,除c51单片机
printf("data = %d = %d + %d\n",data,sum,data);
sum = sum + data ;
data ++ ; // 第三个表达式,条件发生变化。
/*第一次循环
sum = 0 +1 ;
第二次循环
sum = 1+1
第三次循环
sum = 2 +1*/
}
printf("0到一百的和是%d\n",sum);
return 0;
}