查看: 77|回复: 0

C语言经典实例110题【第053讲】

[复制链接]

3

主题

8

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2023-4-9 21:33:49 | 显示全部楼层 |阅读模式
一、输出九九乘法口诀表

使用嵌套 for 循环输出九九乘法口诀表。
实例
#include<stdio.h>
int main(){  
    //外层循环变量,控制行  
    int i = 0;  
    //内层循环变量,控制列   
    int j = 0;   
    for(i=1;i<=9;i++){  
        for(j=1;j<=i;j++){  
            printf("%dx%d=%d\t",j,i,i*j);  
        }  
        //每行输出完后换行   
        printf("\n");     
    }  
}
运行结果:
1x1=1   
1x2=2    2x2=4   
1x3=3    2x3=6    3x3=9   
1x4=4    2x4=8    3x4=12    4x4=16   
1x5=5    2x5=10    3x5=15    4x5=20    5x5=25   
1x6=6    2x6=12    3x6=18    4x6=24    5x6=30    6x6=36   
1x7=7    2x7=14    3x7=21    4x7=28    5x7=35    6x7=42    7x7=49   
1x8=8    2x8=16    3x8=24    4x8=32    5x8=40    6x8=48    7x8=56    8x8=64   
1x9=9    2x9=18    3x9=27    4x9=36    5x9=45    6x9=54    7x9=63    8x9=72    9x9=81  
二、斐波那契数列

斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
这个数列从第3项开始,每一项都等于前两项之和。
实例 - 输出指定数量的斐波那契数列
#include <stdio.h>
int main()
{
    int i, n, t1 = 0, t2 = 1, nextTerm;
    printf("输出几项: ");
    scanf("%d", &n);
    printf("斐波那契数列: ");
    for (i = 1; i <= n; ++i)
    {
        printf("%d, ", t1);
        nextTerm = t1 + t2;
        t1 = t2;
        t2 = nextTerm;
    }
    return 0;
}
运行结果:
输出几项: 10
斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
实例 - 输出指定数字前的斐波那契数列
#include <stdio.h>
int main()
{
    int t1 = 0, t2 = 1, nextTerm = 0, n;
    printf("输入一个正数: ");
    scanf("%d", &n);
    // 显示前两项
    printf("斐波那契数列: %d, %d, ", t1, t2);
    nextTerm = t1 + t2;
    while(nextTerm <= n)
    {
        printf("%d, ",nextTerm);
        t1 = t2;
        t2 = nextTerm;
        nextTerm = t1 + t2;
    }
    return 0;
}
运行结果:
输入一个正数: 100
斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
三、 求两数的最大公约数

用户输入两个数,求这两个数的最大公约数。
实例 - 使用 for 和 if
#include <stdio.h>
int main()
{
    int n1, n2, i, gcd;
    printf("输入两个正整数,以空格分隔: ");
    scanf("%d %d", &n1, &n2);
    for(i=1; i <= n1 && i <= n2; ++i)
    {
        // 判断 i 是否为最大公约数
        if(n1%i==0 && n2%i==0)
            gcd = i;
    }
    printf("%d 和 %d 的最大公约数是 %d", n1, n2, gcd);
    return 0;
}
运行结果:
输入两个正整数,以空格分隔: 81 153
81 和 153 的最大公约数是 9
实例 - 使用 while 和 if
#include <stdio.h>
int main()
{
    int n1, n2;
    printf("输入两个数,以空格分隔: ");
    scanf("%d %d",&n1,&n2);
    while(n1!=n2)
    {
        if(n1 > n2)
            n1 -= n2;
        else
            n2 -= n1;
    }
    printf("GCD = %d",n1);
    return 0;
}
运行结果:
输入两个数,以空格分隔: 81 153
GCD = 9
实例 - 适用正数和负数
#include <stdio.h>
int main()
{
    int n1, n2;
    printf("输入两个数,以空格分隔: ");
    scanf("%d %d",&n1,&n2);
    // 如果输入的是负数,将其转换为正数
    n1 = ( n1 > 0) ? n1 : -n1;
    n2 = ( n2 > 0) ? n2 : -n2;
    while(n1!=n2)
    {
        if(n1 > n2)
            n1 -= n2;
        else
            n2 -= n1;
    }
    printf("GCD = %d",n1);
    return 0;
}
运行结果:
输入两个数,以空格分隔: 81 -153
GCD = 9
实例 - 使用递归
#include <stdio.h>
int hcf(int n1, int n2);
int main()
{
   int n1, n2;
   printf("输入两个正整数: ");
   scanf("%d %d", &n1, &n2);
   printf("%d 和 %d 的最大公约数为 %d", n1, n2, hcf(n1,n2));
   return 0;
}
int hcf(int n1, int n2)
{
    if (n2 != 0)
       return hcf(n2, n1%n2);
    else
       return n1;
}
1、C语言入门到精通

2、C语言经典算法编程110道实战题

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表