概述
C语言学习
Part2
文章目录
- C语言学习
- Part2
- 1、判断
- 代码块
- 解释
- 判断的条件
- 优先级
- 找零计算器plus
- 比较两个数的大小
- 三个数比大小
- 代码块
- else的匹配情况
- 对求三个数中最大数的代码改进
- 单一出口
- 多路分支
- 成绩换算
- ==更智慧的做法:用多路分支的办法做==
- 浅try一下
- 2、循环
- 例题引入
- 代码块
- 算法
- do-while循环
- 循环小技巧
- 1、保存初始值
- 计算以二为底x的对数
- 2、当循环次数过大时,用小的次数来模拟大的次数以此当作规律
1、判断
在Part1.2中有一道例题:求时间差。
当时留下了这样一个问题,如果我们使用分钟减去分钟,小时减去小时的方法,在不存在分钟借位的时候是可行的,但如果遇到分钟借位该怎么办呢?
我们当然可以使用全换算为分钟的方法来避免这样的事情发生,但如果非要使用这样的方法该怎么办呢?
这是就需要引入判断
代码块
#include<stdio.h>
int main()
{
int hour1,minute1;
int hour2,minute2;
printf("请输入第一个时间:(单位:时,分)");
scanf_s("%d %d",&hour1,&minute1);
printf("请输入第二个时间:(单位:时,分)");
scanf_s("%d %d",&hour2,&minute2);
int t1,t2;
t1=hour2-hour1;
t2=minute2-minute1;
if(t2<0){
t2=minute2+60-minute1;
t1=hour2-hour1-1;
}
printf("两个时间相差%d小时%d分钟",t1,t2);
return 0;
}
解释
if(t2<0){
t2=minute2+60-minute1;
t1=hour2-hour1-1;
}
这是一个判断语句,其语法是
if(判断语句)判断其中的语句是否成立,若成立则进入大括号中的语句{
······
}
判断的条件
优先级
关系运算的优先级比计算的优先级低但比赋值的运算级要高。
找零计算器plus
前面的章节中我们制作过一个找零计算器,但并没有考虑到当价格高于所给票面的情况,如果出现了这样的情况,我们又该如何改进这个计算器呢?
这里就需要用到我们学到的判断了
#include<stdio.h>
int main()
{
//初始化
int price=0;
int bill=0;
//标识符与输入值对应
printf("请输入价格");
scanf_s("%d",&price);
printf("请输入票面");
scanf_s("%d",&bill);
//相减求值
int a=bill-price;
//判断
if(a>=0){
printf("找您%d元",a);
}
else{
printf("您的钱不够");
}
return 0;
}
比较两个数的大小
#include<stdio.h>
int main()
{
int a=0;
int b=0;
printf("请输入两个数:");
scanf_s("%d %d",&a,&b);
if(a>b){
printf("较大的数为%d",a);
}
else{
printf("较大的数为%d",b);
}
return 0;
}
三个数比大小
代码块
#include<stdio.h>
int main()
{
int a=0;
int b=0;
int c=0;
printf("请输入三个数:");
scanf_s("%d %d %d",&a,&b,&c);
if(a>b){
if(a>c){
printf("最大值为%d",a);
}
else{printf("最大值为%d",c);}
}
else{
if(b>c){
printf("最大值为%d",b);
}
else{printf("最大值为%d",c);}
}
}
else的匹配情况
else总与最近的if匹配
对求三个数中最大数的代码改进
#include<stdio.h>
int main()
{
//变量初始化
int a = 0;
int b = 0;
int c = 0;
int max = 0;
printf("请输入三个数:");
scanf_s("%d %d %d", &a, &b, &c);
//if判断
if (a > b)
{
if (a > c)
{
max = a;
}
else
{
max = c;
}
}
else
{
if (b > c)
{
max = b;
}
else
{
max = c;
}
}
printf("三个数中最大的数为%d",max);
return 0;
}
单一出口
这里我们引入了一个变量max而不是直接在大括号内输出printf(),这样有利于我们对最大数进行其他的操作而不仅仅是printf()。
多路分支
成绩换算
#include<stdio.h>
int main()
{
int grades;
printf("请输入您的成绩");
scanf_s("%d",&grades);
if(grades>=90)
{
printf("您的等级为A");
}
else if(grades>=80)
{
printf("您的等级为B");
}
else if(grades>=70)
{
printf("您的等级为C");
}
else if(grades>=60)
{
printf("您的等级为D");
}
else
{
printf("您的等级为E");
}
return 0;
}
更智慧的做法:用多路分支的办法做
我们可以注意到当十位数字为9或10时,等级一律为A;当十位数字为8时,等级一律为B,以此类推,也就是十位数字决定了成绩的等级,所以我们可以用一个更为智慧的方法,使用多路分支的办法去做这件事。
#include<stdio.h>
int main()
{
int grades;
printf("请输入您的成绩");
scanf_s("%d",&grades);
int a=grades/10;
switch(a)
case 10:
case 9:
printf("A");
break;
case 8:
printf("B");
break;
case 7:
printf("C");
break;
case 6:
printf("D");
break;
default:
printf("E");
break;
return 0;
}
浅try一下
#include<stdio.h>
int main()
{
int x,f,flag;
printf("请输入一个x的值");
scanf_s("%d",&x);
flag=(x>0)?1:(x<0)?2:3;
switch(flag)
{
case 1:f=-1;break;
case 2:f=2*x;break;
case 3:f=0;break;
}
return 0;
}
在第七行代码中,我们使用了一个判断:
若x>0则flag等于1;若x不大于零则进行冒号后面的判断。
2、循环
例题引入
判断一个数是几位数?
代码块
#include<stdio.h>
int main()
{
int x;
int n=0;
printf("请输入一个x的值");
scanf_s("%d",&x);
n++;
x=x/10;
while(x>0)
{
n++;
x=x/10;
}
printf("这个数是%d位数",n);
return 0;
}
算法
1、初始化n,使n=0。
2、n=n+1;,开始进行计数。
3、x=x/10,从右开始计算位数,x除以10之后会消去最右边的一位数来进行下面的计算。
4、进入循环,条件是x>0,若x不大于零则n直接输出为1,若x大于零则继续循环第三步,直到x<0为止。
5、输出n,即计算的次数。
do-while循环
#include<stdio.h>
int main()
{
int x;
int n=0;
printf("请输入一个数");
scanf_s("%d",&x);
do
{
x=x/10;
n++;
}while(x>0);
printf("这个数是%d位数",n);
return 0;
}
这里我们使用了另一种写循环的方式,先写循环体后写条件,也就是当循环进了一次后再进行条件判断是否会进行下一次。
这样写简化了流程,同时可以使程序第一次运行就进入循环。
循环小技巧
1、保存初始值
计算以二为底x的对数
#include<stdio.h>
int main()
{
int x,
int n=0;
printf("请输入一个x的值");
scanf_s("%d",&x);
int t=x;
while(t>1)
{
t=t/2;
n++;
}
printf("log 2 of %d is %d",x,n);
return 0;
}
如果我们没有将x的值储存而是直接进行这个程序的运行,那么我们最后得到的将会是这样:
这样我们初始输入的x的值会随着while循环而改变而不是维持它的初始值,所以我们需要用一个变量储存x,同时用另一个变量去进行计算。
2、当循环次数过大时,用小的次数来模拟大的次数以此当作规律
#include<stdio.h>
int main()
{
int count=3;
while(count>=0)
{
count--;
printf("%d",count);
}
printf("发射");
return 0;
}
当count的值为100时,我们不能够通过一次一次的试验来得到结果,这时我们可以将count的值选为3,以此来找到规律。
此时循环进行了四次,最后输出了-1,count的值为-1。
最后
以上就是发嗲大侠为你收集整理的【学习轨迹】C语言学习(if判断和while循环)C语言学习的全部内容,希望文章能够帮你解决【学习轨迹】C语言学习(if判断和while循环)C语言学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复