C语言简要(二)

每走一步就近了一些,就不会觉得远了

if

#include <stdio.h>

int main()
{
int hour1,minute1;
int hour2,minute2;
scanf("%d %d",&hour1,&minute1);
scanf("%d %d",&hour2,&minute2);

int ih=hour2-hour1;
int im=minute2-minute1;
if (im<0){
	im=60+im;
	ih--;
}
printf("时差是%d小时%d分\n",ih,im);
return 0; 
}

格式

if(条件成立){
    ...
}

条件

计算两个值之间得关系,叫做关系运算

关系运算的结果

当两个值得关系符合关系运算符得预期时,关系运算得结果为整数1,否则为整数0

printf("%d\n",5==3); //0

printf("%d\n",5>3); //1

printf("%d\n",5<=3); //0

 优先级

所有的关系运算符的优先级比算数运算的低,但是比赋值运算的高

7>=3+4 //1

int r=a>0

判断是否相等的==和!=优先级比其他低,而连续的关系运算是从左到右进行的

5>3==6>4 

5>3>2

a==b==6

a==b>0

 找零计算器

找零计算器需要用户做两个操作:输入购买的金额,输入支付的票面,而找零计算器则根据用户的输入做出相应的动作:计算并打印找零,或告知用户余额不足以购买

从计算机程序的角度看,这就是意味着程序需要读用户的两个输入,然后进行一些计算和判断,最后输出结果。

#include <stdio.h>

int main()
{
int price=0;
int bill=0;
printf("请输入金额:");
scanf("%d",&price); 
printf("请输入票面:");
scanf("%d",&bill);
printf("应该找您:%d\n",bill-price); 
return 0; 
}

这是一开始的

如果我们输入的票面比金额小他会输出负数,这显然是不行的。 

 所以我们可以加上判断语句

#include <stdio.h>

int main()
{
int price=0;
int bill=0;
printf("请输入金额:");
scanf("%d",&price); 
printf("请输入票面:");
scanf("%d",&bill);
if(price<bill){

printf("应该找您:%d\n",bill-price); 
}else{
	printf("钱少了"); 
}
return 0; 
}

 

注释

单行注释:以两个斜杠“//”开头的语句

 //是C99的注释,ANSIC不支持

多行注释

/**/

以/*开始*/结束 

循环嵌套

比较4 5 6 这三个数

#include <stdio.h>

int main()
{
int a=4;
int b=5;
int c=6;
int max=0;
if(a>b){
	max=a;
	if (max<c){
		max=c;
}}
else{
	max=b;
	if(max<c){
		max=c;
	}
}
printf("最大值%d\n",max); 

return 0; 
}

else的匹配 

else总是和最近的那个if匹配

if-else级联 

分段函数

f(x)=-1;x<0

        0;x=0

        2x;x>0

if(x<0){
f=-1;
}else if(x==0){
f=0;
}else{
f=2*x;
}

结构:

if(exp1)

        st1; 

if(exp2)

        st2; 

if(exp3)

        st3; 

Switch-case

if实现的功能

#include <stdio.h>

int main()
{
int a;
printf("请输入:"); 
scanf("%d",&a); 
if(a==1)
	printf("你好");
else if(a==2)
	printf("早上好");
else if(a==3)
	printf("晚上好");
else if(a==4)
	printf("再见");
else 
	printf("啊,什么啊");
return 0; 
}

 这样程序再运行时,是从第一个if开始找的。

#include <stdio.h>

int main()
{
int a;
printf("请输入:"); 
scanf("%d",&a); 
switch(a){
	case 1:
		printf("你好");
		break;
	case 2:
		printf("早上好"); 
		break;
	case 3:
		printf("晚上好"); 
		break;
	case 4:
		printf("再见"); 
		break;
	default:
		printf("啊,什么啊?"); 
}
return 0; 
}

这样可以直接找到对应的a。

结构

switch(控制表达式){

case 常量:

        语句

        ……

case 常量:

        语句

        ……

default:

        语句

        ……

}

 注意:控制表达式只能是整数类型的结果

         常量可以是常数,也可以是常数计算的表达式

 break

switch语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case处。分支标号只是说明switch内部位置的路标,再执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,知道遇到一个break,或者switch结束为止。

#include <stdio.h>

int main()
{
int a;
printf("请输入:"); 
scanf("%d",&a); 
switch(a){
	case 1:
	case 2:
		printf("早上好"); 
	case 3:
		printf("晚上好"); 
		break;
	case 4:
		printf("再见"); 
		break;
	default:
		printf("啊,什么啊?"); 
}
return 0; 
}

 

 

循环

数数几位数

程序要读入一个4位以下(含4位)的正整数,然后输出这个整数的位数。如:

输入:352,输出:3

 程序实现

#include <stdio.h>

int main()
{
int x;
int n=0;
printf("请输入:"); 
scanf("%d",&x); 
if(x>999){
	n=4;
}else if(x>99){
	n=3;
}else if(x>9){
	n=2;
}
printf("%d\n",n);
return 0; 
}

 如果这个数无限大,那么就没法通过这样了。

#include <stdio.h>

int main()
{
int x;
int n=0;
printf("请输入:"); 
scanf("%d",&x); 
n++;
x/=10;
while(x>0){
n++;
x/=10;
}
printf("%d\n",n);
return 0; 
}

如果循环体内没有改变条件,那么程序可能会一直循环下去。

循环之前判断是否继续循环,所以有可能循环一次也没有被执行;

do-while

在进入循环的时候不做检查,而是在执行完一轮循环体的代码之后,再来检查循环的条件是否满足,如果满足则继续下一轮循环,不满足则结束循环

do

{

<循环体语句>

}while(<循环条件>);

while和do-while的区别是 while在循环之前判断,do-while在循环之后判断。

#include <stdio.h>

int main()
{
int x;
int n=0;
printf("请输入:"); 
scanf("%d",&x);  
do{
n++;
x/=10;
}while(x>0); 
printf("%d\n",n);
return 0; 
}

猜数

计算机想一个数,让用户来猜,用户每输入一个数,就告诉它是大了还是小了,知道用户猜中为止,最后还要告诉用户它猜了多少次。

 

#include <stdio.h>

int main()
{
srand(time(0));
int number=rand()%100+1;
int count=0;
int a=0;
printf("我已经想好了一个1到100之间数");
do{
	printf("猜一猜吧:");
	scanf("%d",&a);
	count++;
	if(a>number){
		printf("数大了");	 
	} else if (a<number){
		printf("数小了"); 
	}
}
while(a!=number);
printf("你用了%d次猜到了答案",count);
return 0; 
}

 随机数

每次召唤rand()就得到一个随机的整数

整数分解逆序

一个整数是由1至多位数字组成的,如何分解出整数的各个位上的数字,然后加以计算

对一个整数做%10的操作者,就得到它的个位数;

对一个整数做/10的操作,就去交流它的个位数

然后再对2的结果做%10,就得到原来的十位数了

#include <stdio.h>

int main()
{
int x;
scanf("%d",&x);
int dight;
int ret=0;
while(x!=0){
dight=x%10;
printf("%d",dight);
ret=ret*10+dight;
x/=10;
}

return 0; 
}

 for循环

 阶乘

n!=1*2*3*4*5*……n

写一个程序,让用户输入n,然后计算输出n!

#include <stdio.h>

int main()
{
int n;
scanf("%d",&n);
int fact=1;
int i=1;
for(i=1;i<=n;i++){
	fact*=i;
}
printf("%d!=%d\n",n,fact);
return 0; 
}

循环次数

for(i=0;i<n;i++)

循环次数是n

 break&continue

break:跳出循环

continue:跳出循环这一轮剩下的语句进入下一轮

下班下班

  • 23
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值