绝大多数简单算法题中,for循环、while循环与do while循环都可以替换使用。
根据实际问题选择不同语句,可以事半功倍。本篇主要展示for循环的使用。
1. 九九乘法表
- 操作要求:
编程输出九九乘法口诀表。
- 核心思路:
①for循环根据每行每列间关系控制输出
②printf语句控制输出格式
/*
题目:
九九乘法表
操作要求:
编程输出九九乘法口诀表。
核心思路:
①for循环根据每行每列间关系控制输出
②printf语句控制输出格式
*/
#include <stdio.h>
int main(){
int i,j;
for(i=1;i<=9;i++){ //for循环控制每行输出
for(j=1;j<=i;j++) //for循环每列输出
printf("%d*%d=%2ld ",j,i,j*i);
printf("\n");
}
return 0;
}
2. 求100以内素数
素数的判断方法众多,可根据约数、平方根等辅助判断。
筛选方式也有如:素数表筛选、埃拉托斯特尼筛选、线性筛选——欧拉筛选等。本篇仅讨论最简单的穷举筛选法。
- 操作要求:
编程输出100以内所有素数。
- 核心思路:
利用素数的判断条件,配合for循环穷举。
/*
题目:
求100以内素数
操作要求:
编程输出100以内所有素数。
核心思路:
利用素数的判断条件,配合for循环穷举
*/
#include <stdio.h>
int main(){
int i,j,n;
printf("100以内的素数如下:\n");
for(i=2;i<=100;i++){ //控制素数范围
for(j=2;j<i;j++) //与大于"1"且小于自身的数逐个相除
if(i%j==0) //若能除净则跳出循环
break;
if(i==j) //否则输出该数
printf("%d ",i);
}
return 0;
}
3. 百钱百鸡问题
- 操作要求:
编写程序,求解百钱买百鸡问题。假设母鸡3元一只 ,公鸡2元,小鸡 0.5元。
- 核心思路:
①for循环嵌套使用,实现对所有可能性结果的遍历
②if条件语句与逻辑运算符"&&(与)"配合使用,实现对符合条件的所有结果的输出并记录。
/*
题目:
百钱百鸡问题
操作要求:
编写程序,求解百钱买百鸡问题。假设母鸡3元一只 ,公鸡2元,小鸡 0.5元。
核心思路:
①for循环嵌套使用,实现对所有可能性结果的遍历
②if条件语句与逻辑运算符"&&(与)"配合使用,实现对符合条件的所有结果的输出并记录。
*/
#include <stdio.h>
int main(){
int x,y,z,n;
for(x=0;x<34;x++) //控制母鸡数量
for(y=0;y<51;y++) //控制公鸡数量
for(z=0;z<201;z+=2) //控制小鸡数量
if(x+y+z==100&&x*3+y*2+z/2==100){
printf("母鸡:%2ld只,公鸡:%2ld只,小鸡:%2ld只。\n",x,y,z);
n++;
}
printf("共有%d种结果。",n);
return 0;
}
4. 计算一百以内偶数和
- 操作要求:
用循环语句计算区间[1,100]中所有偶数之和。
- 核心思路:
if条件语句与for循环语句嵌套使用。
/*
题目:
计算一百以内偶数和
操作要求:
用循环语句计算区间[1,100]中所有偶数之和。
核心思路:
if条件语句与for循环语句嵌套使用
*/
#include <stdio.h>
int main(){
int n,m;
m=0; //变量m初始化
for(n=0;n<=100;n++) //以n>100为出口,实现对区间[1,100]中所有整数遍历
if(n%2==0) //判断偶数,实现累加
m+=n;
printf("计算一百以内偶数和为:%d",m);
return 0;
}
5. 输出指定图形
- 操作要求:
利用循环语句绘制如下三种图形,要求行数可以指定。
- 核心思路:
①空函数分别输出指定图形
②变量 n 用于向对应函数传递指定行数
③switch结构实现对指定行数的调用
/*
题目:
输出指定图形
操作要求:
利用循环语句绘制如下三种图形,要求行数可以指定。
****** ****** *
****** ****** ***
****** ****** *****
****** ****** *******
核心思路:
①空函数分别输出指定图形
②变量 n 用于向对应函数传递指定行数
③switch结构实现对指定行数的调用
*/
#include <stdio.h>
/*空函数输出指定矩形*/
void rec(int n){
int i,j;
for(i=0;i<n;i++){ //for循环控制行数
for(j=0;j<6;j++) //for循环控制输出'*'的个数
printf("*");
printf("\n");
}
}
/*空函数输出指定平行四边形*/
void rho(int n){
int i,j,t;
t=n-1; //变量t辅助控制每行' '的输出
for(i=0;i<n;i++){
for(j=t;j>0;j--) //for循环控制输出' '的个数
printf(" ");
for(j=0;j<6;j++)
printf("*");
t--;
printf("\n");
}
}
/*空函数输出指定三角形*/
void tri(int n){
int i,j,t;
t=n-1;
for(i=0;i<n;i++){
for(j=t;j>0;j--)
printf(" ");
for(j=0;j<2*(i+1)-1;j++) //根据三角形每行的'*'个数为等差数列,for循环控制输出'*'的个数
printf("*");
t--;
printf("\n");
}
}
int main(){
int n;
char c;
printf("请选择所输出图形:\n");
printf("A.矩形 B.平行四边形 C.三角形\n");
scanf("%c",&c);
getchar();
printf("请输入行数:");
scanf("%d",&n);
switch(c){ //swtich结构调用对应函数
case 'A':rec(n);break;
case 'B':rho(n);break;
case 'C':tri(n);
}
return 0;
}