案例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)

1万+

被折叠的 条评论
为什么被折叠?



