首页 > 编程语言 >C语言基础算法

C语言基础算法

时间:2024-07-29 14:28:08浏览次数:15  
标签:arr int 基础 C语言 ++ 算法 printf 阶乘 排序

C语言基础算法

目录

1、阶乘

递归实现

#include <stdio.h>

// 递归函数计算阶乘
int factorial(int n) {
    if (n == 0 || n == 1)
        return 1;
    else
        return n * factorial(n - 1);
}

int main() {
    int n;
    printf("请输入一个整数:");
    scanf("%d", &n);
    
    // 调用函数计算阶乘并输出结果
    printf("%d 的阶乘是 %d\n", n, factorial(n));
    
    return 0;
}

循环实现

#include <stdio.h>

int main() {
    int n, fact = 1;
    printf("请输入一个整数:");
    scanf("%d", &n);
    
    // 循环计算阶乘
    for (int i = 1; i <= n; ++i) {
        fact *= i;
    }
    
    // 输出结果
    printf("%d 的阶乘是 %d\n", n, fact);
    
    return 0;
}

2、排序

冒泡排序

#include <stdio.h>

// 冒泡排序函数
void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n-1; i++) {
        // 内层循环用于比较相邻元素并交换位置
        for (int j = 0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                // 如果前一个元素大于后一个元素,则交换它们
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr)/sizeof(arr[0]);
    
    // 调用冒泡排序函数对数组进行排序
    bubbleSort(arr, n);
    
    // 输出排序后的数组
    printf("排序后的数组:\n");
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
    
    return 0;
}

选择排序

#include <stdio.h>

// 选择排序函数
void selectionSort(int arr[], int n) {
    int i, j, min_idx, temp;
    // 选择排序的外循环,从数组第一个元素开始
    for (i = 0; i < n - 1; i++) {
        // 假设当前元素为最小值
        min_idx = i;
        // 在剩余未排序序列中寻找最小值的索引
        for (j = i + 1; j < n; j++) {
            if (arr[j] < arr[min_idx]) {
                min_idx = j;
            }
        }
        // 将最小值与当前位置交换
        temp = arr[min_idx];
        arr[min_idx] = arr[i];
        arr[i] = temp;
    }
}

int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);
    
    printf("未排序数组:\n");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    selectionSort(arr, n);
    
    printf("排序后的数组:\n");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    return 0;
}

3、斐波那契数列

\\该函数最终会返回一个数字
double fabric(int n){
    int a = 0, b = 1, c;
    for(int i = 2; i <= n; ++i){
        c = a+b;
        a = b;
        b = c;
    }
    return b;
}

4、ASCII码的使用

#include "stdio.h"

int main(){
    for(int i = 65;i <= 90;i++){
        char letter = (char)i;
        printf("%c\n",letter);
    }
    for (int j = 90; j >= 65; j--) {
        char letter = (char)j;
        printf("%c\n",letter);
    }
    return 0;
}

如果你想要了解更多,欢迎访问小树 | C语言基础语法

标签:arr,int,基础,C语言,++,算法,printf,阶乘,排序
From: https://www.cnblogs.com/juniortree/p/18328012

相关文章

  • CTF竞赛介绍以及刷题网址(非常详细)零基础入门到精通,收藏这一篇就够了
    前言CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,201......
  • 【基础篇】Docker 架构与组件 TWO
    嗨,小伙伴们!我是小竹笋,一名热爱创作的工程师。上一篇我们聊了聊Docker的历史与发展、与虚拟机的对比以及它在行业中的应用。今天,让我们更进一步,深入探讨Docker的架构与关键组件。欢迎订阅公众号:JAVA和人工智能......
  • C语言中的函数(保姆级详细讲解)
    文章目录一.函数的概念1.1库函数1.2自定义函数二.函数的参数1.实参2.形参3.形参和实参的关系(传值调用)4.数组做函数参数(传址调用)三.函数的return语句四.函数的嵌套调用和链式访问1.嵌套调用2.链式访问五.static和extern1.作用域和生命周期2.static2.1s......
  • 从零开始学嵌入式技术之C语言04:进制与转换
    一:进制        计算机世界中只有二进制,所以计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。(1)二进制:0、1,满2进1。(2)十进制:0-9,满10进1。(3)十六进制:0-9及A-F,满16进1。十六进制中,除了0到9十个数字外,还引入了字母,以便表示超过......
  • 从零开始学嵌入式技术之C语言01:环境的搭建
    一:计算机语言简史(1)机器语言        1946年2月14日,世界上第一台计算机ENIAC诞生,使用的是最原始的穿孔卡片。这种卡片上使用的是用二进制代码表示的语言,与人类语言差别极大,这种语言就称为机器语言。(2)汇编语言        使用英文缩写的助记符来表示基本的操作,这......
  • Python全套教程,小白零基础入门必备!
    Python是一种语法简单、功能强大的编程语言,它注重的是如何高效解决问题。【教程领取方式在文末!!】正是这种简单实用的特性,让Python成为近年来最热门的编程语言之一。Python具有广泛的应用场景,包括:Web开发、数据分析、机器学习、网络爬虫、人工智能、量化交易等众多领......
  • 《重生到现代之从零开始的C语言生活》—— 数组
    数组数组是个啥数组是一组相同类型元素的集合数组分为一维数组和多维数组,多维数组比较常见的是二维数组一维数组的创建和初始化一维数组的建立的基本语法typearr_name[常量]存放的数组的值被称为数组的元素,在创建时可以指定数组的大小和数组的元素类型比如想创建......
  • 《关于登甲智能建筑图像生成大模型算法的分析报告》
    一、算法全周期行为分析(一)算法安全                    信息内容安全:在生成图片的过程中,需要确保所生成的图片内容不包含违法、有害、侵权或违背社会道德的元素。例如,不能生成具有暴力、色情、歧视等不良内容的图片。信息源安全:对......
  • PADS Layout 入门基础教程(一)
    一、PADSLayout快捷键Ctrl+Q:选中对象后查看其属性 Ctrl+ALt+S:查看状态 AA:任意角度模式     AD:斜角模式    AO:直角模式F4:切换顶底层(或L+层数字:L1)DRP:禁止违背设计规则   DRW:违背设计规则时警告DRI:忽略设计规则     DRO:关闭设计......
  • MySQL基础篇(一)
    1.事物的四大特性事务是逻辑上的一组操作,要么都执行,要么都不执行原子性(Atomicity):事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性(Consistency):执行事务前后,数据保持一致,例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是不......