
题目:输出 9*9 口诀。
思路: 使用循环嵌套来写这个代码,我们首先要让i=1的时候,做一遍1的乘法运算,也就是说我们的j<=i,所以我们第二个for循环就可以写成是让j也从1开始遍历,范围要小于等于i,以此递增。
/*
99乘法表
*/
#include"stdio.h"
int main()
{
for(int i = 1;i<10;i++)
{
for(int j = 1 ; j <= i ; j++)
{
printf("%d * %d = %d ",i,j,i*j);
}
printf("\n");
}
return 0;
}题目:要求输出国际象棋棋盘
思路: 首先我们要创建要给8*8的一个矩阵,再矩阵中,当行号 i 和列号 j 的和为偶数时,打印实心方块,当行号 i 和列号 j 的和为奇数时,打印空格
代码:
#include <stdio.h>
int main()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
if((i+j)%2==0)
printf("%c%c",219,219);
else printf(" ");
printf("\n");
}
return 0;
}题目:打印楼梯,同时在楼梯上方打印两个笑脸。
思路: 这个题目我们可以理解为实在输出一个*号楼梯。我们的外层循环用来控制循环的行数,内层循环用来控制每行的星号数量。
代码:
#include "stdio.h"
int main()
{
printf("@@\n");
for(int i = 1;i<11;i++)
{
for(int j = 1 ;j <= i;j++)
{
printf("* ");
}
printf("\n");
}
return 0;
}题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
思路: 首先我们要让前两个月为1,然后我们再来分析一下繁殖规则:成年兔子(≥3个月)每月生1对小兔子,小兔子出生后第3个月开始繁殖,所有兔子都不死亡
这样的话,我们就可以做出一个表格出来
月份 | 成年兔 | 未成年兔 | 总数 | 说明 |
|---|---|---|---|---|
1 | 0 | 1 | 1 | 初始1对未成年兔 |
2 | 1 | 0 | 1 | 上月的未成年兔成熟 |
3 | 1 | 1 | 2 | 成年兔生1对小兔 |
4 | 1 | 1 | 3 | 原有成年兔继续生1对 |
5 | 2 | 2 | 5 | 第3个月出生的小兔成熟并开始繁殖 |
这样我们可以写一个伪代码出来:
初始化前两个月 = 1
输出前两个月
for 月份从3到40:
本月 = 上月 + 前月
更新前月 = 上月
更新上月 = 本月
输出本月代码:
#include <stdio.h>
int main() {
// 初始化前两个月的兔子对数
long long month1 = 1; // 第1个月兔子对数
long long month2 = 1; // 第2个月兔子对数
long long current; // 当前月兔子对数
printf("月份\t兔子对数\n");
printf("1\t%lld\n", month1);
printf("2\t%lld\n", month2);
// 计算并输出第3到第40个月的兔子对数
for (int month = 3; month <= 40; month++) {
// 当前月兔子对数 = 上个月 + 上上个月
current = month1 + month2;
// 更新前两个月的值
month1 = month2;
month2 = current;
printf("%d\t%lld\n", month, current);
}
return 0;
}题目:判断 101 到 200 之间的素数。
程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
思路: 判断素数,素数就是大于1且只能被1和自身整除的自然数。
伪代码:
函数 isPrime(数字 num):
如果 num <= 1:
返回 false
如果 num <= 3:
返回 true
如果 num 能被2整除 或 num 能被3整除:
返回 false
初始化 i = 5
当 i * i <= num 时循环:
如果 num 能被 i 整除 或 num 能被 (i + 2) 整除:
返回 false
i 增加 6
返回 true
主函数 main():
打印 "素数在 101 到 200 之间的列表:"
对于 i 从 101 到 200:
如果 isPrime(i) 为真:
打印 i 和空格
打印换行代码:
// 题目:判断 101 到 200 之间的素数。
#include <stdio.h>
#include "stdbool.h"
bool isPrime(int num) {
// 小于等于1的数不是素数
if (num <= 1) return false;
// 2和3是素数
if (num <= 3) return true;
// 排除能被2或3整除的数
if (num % 2 == 0 || num % 3 == 0) return false;
// 优化循环:从5开始,每次增加6
for (int i = 5; i * i <= num; i += 6) {
// 检查6k±1形式的因子
if (num % i == 0 || num % (i + 2) == 0)
return false;
}
return true;
}
int main() {
printf("素数在 101 到 200 之间的列表:\n");
// 遍历101到200的所有整数
for (int i = 101; i <= 200; i++) {
if (isPrime(i)) {
printf("%d ", i); // 打印素数
}
}
printf("\n"); // 打印换行
return 0;
}原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。