学习笔记3

案例3:

(1)求1~100之间的偶数和

#include <stdio.h>
int main()
{
    int i,num=0;
    for(i=0;i<=100;i++)
            {
                if(i%2==0)
                num+=i;
            }

    printf("%d",num);
    return 0;
}

(2)求1~100之间奇数和

#include <stdio.h>
int main()
{
    int i,num = 0;
    for(i=0;i<100;i++)
    {
        if(i%2!=0)
        num+=i;
    }
    printf("奇数和为%d",num);
    return 0;
}

案例4

(1)统计满足条件的数字

键盘输入两个数字,表示一个范围,该范围内即能被6整除又能被8整除的数字有多少个?

#include <stdio.h>
int main()
{
    int a,b,i,num=0;
    printf("请输入两个整数\n");
    scanf("%d %d",&a,&b);
    int min = a<b?a:b;
    int max = a>b?a:b;
    for(i=min;i<=max;i++)
    {   
        if(i%6==0 && i%8==0)
            num++;
    }
    printf("共有%d个\n",num);
    return 0;
}

while循环:

格式和执行流程:

for 和while的对比

for循环中:知道循环的次数或者循环的范围

while循环:不知道循环的次数和范围,只知道循环的结束条件

练习;

案例1:2的幂

给你一个整数n,请你判断该整数是否是2的幂次方

eg:n=1--yes;n=2--yes;n=3--no

错误思路:直接用if(n%2==0)【14%2=0,但是14不为2的幂次方,该方法为判断偶数】

正确解法:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int n;
	printf("请输入一个整数\n");
	scanf("%d",&n);
	while (n > 1 && n % 2 == 0)
	{
		n = n / 2;	
	}
	if (n == 1)
		printf("yes\n");
	else
		printf("no\n");
	return 0;
}

案例2:

打印折纸的次数

#define _CRT_SECURE_NO_WARNINGS
//需求:世界最高山峰是珠穆朗玛峰(8844.43米 = 8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以在折成珠穆朗玛峰的高度?
#include <stdio.h>
#include <math.h>
int  main()
{
	int i=0;
	double paper = 0.1 ;
	int height = 8844430;
	while ( paper<= height)
	{
		paper = paper * 2;
		i++;
	}
	printf("折叠%d次",i);
	return 0;
}

案例3:整数反转(将一个整数x,进行反转)如:123变成321

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int x = 0,y=0,num=0;
	printf("请输入一个整数\n");
	scanf("%d",&x);
	while (x != 0)
	{
		y = x % 10;
		x = x / 10;
		num = num * 10 + y;
	}
	printf("%d\n",num);
	return 0;
}

案例4:x的平方根

给一个非负数X,计算并返回X的算数平方根,结果只保留整数部分,小数部分被舍去(x=4 --2,x=8--2)

案例5:回文数

判断一个数是否为回文数(指正序(从左到右)和倒序(从右到左)读都是一样的整数)

例:121是回文,而123不是

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int num,i,j=0;
	printf("请输入一个整数\n");
	scanf("%d",&num);
	int x = num;
	while (num != 0)
	{
		i = num % 10;
		num = num / 10;
		j = j * 10 + i;
	}
	if (j == x)//注意这里的num的值已经发生变化,所以不能直接使用,需要用另一个形式变量来代替
		printf("是回文数");
	else
		printf("不是回文数");
	return 0;
}

案例6:两数相乘

有两个整数,将两个整数相除,要求不得使用乘法,除法和取余运算;返回得到的商和余数

EG:两个整数11、3

输出:商 3    余 2

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int x, y,i=0,z=0;
	printf("请输入两个整数\n");
	scanf("%d %d",&x,&y);
	while (z >= 0 && x > y)
	{
		z = x - y;
		i++;
		x = x - y;
	}
	printf("商是:%d 余: %d", i, x);
	return  0;
}

do  while循环:

格式,执行流程:

特点:先执行再判断,循环体至少会执行一次!!

循环语句(高级)

(1)无限循环

注意点:无限循环因为永远停不下来,所以下面不能再写其他的代码了

(2)跳转控制语句

1)break不可单独书写,只能写在switch,或者循环中,表示结束,跳出的意思

2)continue结束本次循环,继续下次循环

练习:

3)循环嵌套:

一、打印矩形

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i,j;
	for (i = 1; i <= 3; i++)
	{
		for (j = 1; j <= 3; j++)
			printf("*");
		printf("\n");
	}
	return 0;
}

 打印三角形:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i, j;
	for (i = 1; i <= 5; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;

}

倒三角:

打印九九乘法表;

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	for (int i = 1; i <= 9; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			printf("%d * %d = %d\t",j,i,i*j);
		}
		printf("\n");
	}
	return 0;
}

制表符:"\t"长度可变的大空格

原理: 会根据前面字母的个数在后面补空格,让整体的长度达到8或8的倍数,最少补1个,最多补8个

作用:打印表格数据的时候,可以对齐

例:

四、计算质数

给定数字n,获取所有小于n的质数的数量

实例:输入:n=100

           输出:25

注意:代码中的count要写在第一层for循环里面,因为每一次第二层循环结束后count值需要归零,否则代码会运行错误结果!!!

五、计算数字

六、和为15的数字

找出0~1000之内,符合要求的数字:

要求:每一位的数字之和等于15

举例:78,168,1167

七、goto语句

goto:可实现在同一个函数内跳转到设置好的标号处(一般不使用,但是跳出多层循环的时候恒好用!!!!)

(可跳出多层循环)结合标号,可以跳到代码中的任意地方。但是一般只用于跳出循环嵌套

break:只能跳出单层循环

 函数:程序中独立的功能

 格式:

返回值类型  函数名(实参1,实参2)

{

        函数体;

        return   返回值;
}

主函数:

{

        变量=函数名(实参。。。)

        printf("占位符",函数名(实参.....))

}

例:定义一个函数,求10和20的和

(2)带参的函数:

     

带有返回值的函数:

定义函数的终极绝招:(三个问题)

1、我定义函数要干什么?--函数体

2、我干了这件事需要怎么样才能完成?--形参

3、我干完了,调用处是否要继续使用?--返回值类型

(需要继续使用  必须写;不需要返回  void)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值