第四课-逻辑运算, 关键字, 循环for, 转向语句

本文精选了多个经典的C语言编程题目并详细解析了实现思路与代码,包括生成特定数字组合、查找水仙花数、打印菱形图案、输出九九乘法表以及判断素数等,帮助读者掌握循环与条件判断的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑运算符:
&&  逻辑与(二目运算符)
||  逻辑或(二目运算符)
!  逻辑非(一目运算符)

关键字:
基本类型     char int double float enum
修饰类型     long short signal unsigned const volatile
存储类型     auto register static extern 
选择结构     if else 
分支结构     switch case default
循环         for do while 
构造类型     struct union 
类型定义     typedef 
计算类型长度 sizeof
转向         continue break goto return
void 

continue 循环作用域
break    循环作用域/分支作用域
goto     函数作用域
return   函数作用域

循环语句-for循环
for (循环初始值; 循环终止条件; 步进值/循环条件变化值) {
	循环体;
}
/*死循环1*/
for (;;) {
	执行体;
}

for (;;)
	执行体;

循环语句-转向语句 continue, break, goto, return;

循环语句-for 循环的嵌套
作业:
/**
 * 【程序1】
 * 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
 * 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
 */

#include<stdio.h>

int main() {
    int i, j, k;
    for (i = 1; i < 5; i++) {   //以下为三重循环
        for (j = 1; j < 5; j++) {
            for (k = 1; k < 5; k++) {
                if (i != k && i != j && j != k) {   //确保i、j、k三位互不相同
                    printf("%d,%d,%d\n", i, j, k);
                }
            }
        }
    }

    return 0;
}

/**
 * 【程序13】
 * 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
 *       本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
 * 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
 */

#include<stdio.h>

int main() {
    int i, j, k, n;
    printf("'water flower'number is:");
    for (n = 100; n < 1000; n++) {
        i = n / 100;        //分解出百位
        j = n / 10 % 10;    //分解出十位
        k = n % 10;         //分解出个位
        if (i * 100 + j * 10 + k == i * i * i + j * j * j + k * k * k) {
            printf("%-5d", n);
        }
    }
    printf("\n");

    return 0;
}
/**
 * 【程序23】
 * 题目:打印星号组成的菱形图案
 * 分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重
 *       for循环,第一层控制行,第二层控制列。
 */

#include <stdio.h>

int main() {
    int i, j, k;
    for (i = 0; i <= 3; i++) {
        for (j = 0; j <= 2 - i; j++) {
            printf(" ");
        }
        for (k = 0; k <= 2 * i; k++) {
            printf("*");
        }
        printf("\n");
    }
    for (i = 0; i <= 2; i++) {
        for (j = 0; j <= i; j++) {
            printf(" ");
        }
        for (k = 0; k <= 4 - 2 * i; k++) {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

/**
 * 【程序8】
 * 题目:输出9*9口诀。
 * 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
 */

#include<stdio.h>

int main() {
    int i,j,result;
    printf("\n");
    for (i=1;i<10;i++) {
        for(j=1;j<10;j++) {
            result=i*j;
            printf("%d*%d=%-3d",i,j,result);    // -3d表示左对齐,占3位
        }
        printf("\n");   // 每一行后换行
    }

    return 0;
}
/**
 * 【程序12】
 * 题目:判断101-200之间有多少个素数,并输出所有素数。
 * 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
 *           则表明此数不是素数,反之是素数。
 */

#include<stdio.h>

int main() {
    int i, j;
    for (i = 101; i <= 200; i++) {
        for (j = 2; j < i; j++) {
            if (i % j == 0) {   //只要除到一个数让 i 能被整除就跳出该循环。
                break;
            } else {
                if (j == i - 1) {   //除完最后一个数后还不跳出循环,就可以判断该数为素数。
                    printf("%d ", i);
                }
            }
        }
    }

    return 0;
}

/**
 * 【程序2】
 * 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
 *       后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
 * 程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....
 */

#include<stdio.h>

int main() {
    long f1,f2;
    int i;
    f1=f2=1;
    for (i=1;i<=20;i++) {
        printf("%12ld %12ld",f1,f2);
        if (i%2==0) {
            printf("\n");   //控制输出,每行四个
        }
        f1=f1+f2;   //前两个月加起来赋值给第三个月
        f2=f1+f2;   //前两个月加起来赋值给第三个月
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值