时间:2024.11.6
一、学习内容
1、无限循环
无限循环:循环永远停不下来
注意点:无限循环因为永远停不下来,所以下面不能再写其他的代码了
2、break
跳转控制语句:
在循环的过程中,跳到其他语句上执行
#include<stdio.h>
int main() {
int count = 0;
int i;
//利用for循环去获取1-100之间的数字
for (i = 1; i < =100; i++) {
//去判断当前的数字是否满足题目的要求
if ((i % 3 == 0) && (i % 5 == 0)){
count++;
if (count == 1)
printf("%d\n", i);
}
}
return 0;
}
或
#include<stdio.h>
int main() {
int i;
//利用for循环去获取1-100之间的数字
for (i = 1; i < =100; i++) {
//去判断当前的数字是否满足题目的要求
if ((i % 3 == 0) && (i % 5 == 0)){
printf("%d\n", i);
break;
}
}
return 0;
}
3、continue
结束本次循环,继续下次循环
#include<stdio.h>
int main() {
int i;
//利用循环去实现吃包子
for (i = 1; i <= 5; i++) {
//跳过第三次
if(i==3)
{
continue;
}
printf("在吃第%d个包子\n", i);
}
return 0;
}
4、跳出多层循环和goto
二、练习
1、练习1-打印矩形
++循环嵌套++:循环里面还有其他循环
++先确定内循环是做什么事情,外循环就是把里面的代码重复执行了N次++
#include<stdio.h>
int main() {
int i,j;
//外循环
for (i = 1; i <= 3; i++) {
//内循环
for (j = 1; j <= 5; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
2、练习2-打印直角三角形
#include<stdio.h>
int main() {
int i,j;
//外循环
for (i = 1; i <= 5; i++) {
//内循环
for (j = 1; j <= i; j++) {
printf("*");
}
printf("\n");
}
for (i = 1; i <= 5; i++) {
//内循环
for (j = 1; j <= 6-i; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
3、练习3-打印乘法表
#include<stdio.h>
int main() {
int i,j,m;
//外循环
for (i = 1; i <= 9; i++) {
//内循环
for (j = 1; j <= i; j++) {
m = i * j;
printf("%d * %d = %d ",i,j,m);
}
printf("\n");
}
return 0;
}
++改进:利用制表符\t调整格式++
#include<stdio.h>
int main() {
int i,j,m;
//外循环
for (i = 1; i <= 9; i++) {
//内循环
for (j = 1; j <= i; j++) {
m = i * j;
printf("%d * %d = %d\t",i,j,m);
}
printf("\n");
}
return 0;
}
4、练习4-统计质数
第1步:
#include<stdio.h>
int main() {
/*
1.判断一个整数是否是一个质数
2.添加范围1-100
3.统计
*/
int n=100,i;
//定义变量记录整数
int count = 0;
//scanf("%d\n", &n);
//统计从2开始,到n-1这个范围内有多少个数字能被n整数
for (i = 2; i < n; i++) {
if (n % i == 0)
{
//找到了一个数字能被n整除
count++;
//优化:后面其余的数字无需再次判断,提高程序的循环效率
break;
}
}
//对count进行判断
if (count == 0) {
printf("%d是一个质数", n);
}
else
printf("%d不是一个质数", n);
return 0;
}
第2步:
#include<stdio.h>
int main() {
/*
1.判断一个整数是否是一个质数
2.添加范围1-100
3.统计
*/for (int i = 2; i < 100; i++) {
//i:依次表示2-100之间的每一个数字
//定义变量记录整数
int count = 0;
//scanf("%d\n", &n);
//统计从2开始,到n-1这个范围内有多少个数字能被n整数
for (int j = 2; j < i; j++) {
if (i % j == 0)
{
//找到了一个数字能被i整除
count++;
//优化:后面其余的数字无需再次判断,提高程序的循环效率
break;
}
}
//对count进行判断
if (count == 0) {
printf("%d是一个质数\n", i);
}
else
printf("%d不是一个质数\n", i);
}
return 0;
}
第3步:
#include<stdio.h>
int main() {
/*
1.判断一个整数是否是一个质数
2.添加范围1-100
3.统计
*/
//定义一个变量,用来统计2-100之间一共有多少个质数
int count1 = 0;
for (int i = 2; i <= 100; i++) {
//i:依次表示2-100之间的每一个数字
//定义变量记录整数
int count = 0;
//scanf("%d\n", &n);
//统计从2开始,到n-1这个范围内有多少个数字能被n整数
for (int j = 2; j < i; j++) {
if (i % j == 0)
{
//找到了一个数字能被i整除
count++;
//优化:后面其余的数字无需再次判断,提高程序的循环效率
break;
}
}
//对count进行判断
if (count == 0) {
printf("%d是一个质数\n", i);
count1++;
}
}
printf("一共%d个质数\n", count1);
return 0;
}
加上scanf
#include<stdio.h>
int main() {
/*
1.判断一个整数是否是一个质数
2.添加范围1-100
3.统计
*/
//定义一个变量,用来统计2-100之间一共有多少个质数
int count1 = 0;
int number;
scanf("%d", &number);
for (int i = 2; i <= number; i++) {
//i:依次表示2-100之间的每一个数字
//定义变量记录整数
int count = 0;
//scanf("%d\n", &n);
//统计从2开始,到n-1这个范围内有多少个数字能被n整数
for (int j = 2; j < i; j++) {
if (i % j == 0)
{
//找到了一个数字能被i整除
count++;
//优化:后面其余的数字无需再次判断,提高程序的循环效率
break;
}
}
//对count进行判断
if (count == 0) {
printf("%d是一个质数\n", i);
count1++;
}
}
printf("一共%d个质数\n", count1);
return 0;
}
5、练习5-幂级数列
#include<stdio.h>
int main() {
long long result = 0;
int i, j,n=10;
//外循环:依次表示1-10
for (i = 1; i <= n; i++) {
//内循环:表示外循环的数字一共要乘几次
//pow表示每个选项的单独结果
long long pow = 1;
for (j = 1; j <= i; j++) {
pow = pow * i;
}
//当内循环结束后,将单独的结果进行累加
result += pow;
}
printf("%lld\n", result);
return 0;
}
6、练习6-特殊数字
#include<stdio.h>
int main() {
for (int i = 1; i <= 1000; i++)
{
int a = i / 100;
int b = i / 10 % 10;
int c = i % 10;
if ((a + b + c) == 15) {
printf("%d\n", i);
}
}
return 0;
}
三、知识点
1、制表符\t
长度可变的大表格
作用:
在打印图表型数据时,可以让数据对齐
原理:
会根据前面字母的个数在后面补空格,让整体的长度达到8或8的倍数,最少补1个,最多补8个
abc\t 补5个
zhangshan\t 补8个
张\t 补6个(一个中文占2个字符)
printf("name\tage\n");
printf("zhangshan23\n");
或
printf("name\t\tage\n");
printf("zhangshan\t23\n");
2、goto的用法
break只能跳出单层循环,goto可以跳出多层循环
结合标号,可以跳到代码中的任意地方,一般只用于跳出循环嵌套