C语言经典程序集

 1.输出“Hello word!”
#include <stdio.h>
int main()
{
printf("Hello world!");
return 0;
}
2.求两数之和

输入两个整数,计算两数之和并输出。

#include<stdio.h>
int main()
{
int a,b,sum;
printf("请输入两个整数:\n");
scanf("%d %d",&a,&b);
sum=a+b;
printf("两数之和为:%d\n",sum);
return 0;
}

输入两个浮点数,计算两数之和并输出。

#include<stdio.h>
int main()
{

float a,b,sum;
printf("请输入两个浮点数:\n");
scanf("%f %f",&a,&b);
sum=a+b;
printf("两个浮点数的和为:%f\n",sum);
return 0;
}

两个字符型数求和

#include<stdio.h>
int main()
{
char char1,char2;
int sum;
printf("请输入两个字符:\n");
scanf("%c %c",&char1,&char2);
sum=char1+char2;
printf("两个字符的和为:%d\n",sum);
return 0;
}
3.判断奇偶函数

方法一:

#include<stdio.h>
int main()
{
int mun;
printf("请输入一个数:\n");
scanf("%d",&mun);
if(mun%2==0)
{
printf("%d是偶数!\n");
}
else{
printf("%d是奇数!\n");
}
return 0;
}

方法二:

#include<stdio.h>
int main()
{
int mun;
printf("请输入一个数:\n");
scanf("%d",&mun);
if((mun&1)==0){
printf("%d是偶数!\n");
}
else{
printf("%d是奇数!\n");
}
return 0;
}
4.判断闰年

输入年份判断该年份是否为闰年

#include <stdio.h>
int main()
{
int a;
printf("请任意输入一个年份:\n");
scanf("%d",&a);
if((a%4==0&&a%100!=0)||a%400==0){
printf("你输入的%d是闰年",a);
}
else{
printf("你输入的%d不是闰年",a);
}
return 0;
}
5.判断素数

输入一个整数,判断是否为素数(质数)

素数的定义:一个自然数,只有1和它本身两个因数。

方法一:

#include <stdio.h>
int main()
{
int i,n;
scanf("%d",&n);
if(n<=2){
printf("%d不是素数\n",n);
}
else{
for(i=2;i<=n-1;i++){
if(n%i==0)
break;
}
if(i>=n)
printf("%d是素数\n",n);
else
printf("%d不是素数\n",n);
}
return 0;
}

方法二:

#include <stdio.h>
int main()
{
int i,n;
scanf("%d",&n);
for(i=2;i<=n/2;i++){
if(n%i==0)
break;
}
if(i==n/2+1)
printf("%d是素数\n",n);
else
printf("%D不是素数\n",n);
return 0;
}

方法三:

#include<stdio.h>
#include<math.h>
int main(){
int i,n;
scanf("%d",&n);
for(i=2;i<=sqrt(n);i++){
if(n%i==0)
break;
}
if(I>sqrt(n))
printf("%d是素数\n",n);
else
printf("%d不是素数\n",n);
return 0;
}
6.判断阶乘

输入一个非负整数,计算它的阶乘并输出。

#include<stdio.h>
int main()
{
int n,i;
long long factorial=1;
printf("请输入一个非负整数:");
scanf("%d",&n);
if(n<0){
printf("输入错误!请输入一个非负整数");
}
else{
for(i=1;i<=n;i++){
factorial*=i;
}
printf("%d!=%lld\n",n,factorial);
}
return 0;
}
7.斐波那契数列

输出斐波那契数列的前n。

方法一(递归):

#include <stdio.h>
int fibonacci(int n)
{
if(n<=1)
return n;
return fibonacci(n-1)+fibonacci(n-2);
}
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
printf("斐波那契数列的第%d项是:%d\n",n,fibonacci(n));
return 0;
}

方法二(循环):

#include<stdio.h>
int fibonacci(int n)
{
int a=0,b=1,c,i;
if(n==0)
return a;
for(i=2;i<=n;i++){
c=a+b;
a=b;
b=c;
}
return b;
}
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
printf("斐波那契数列的第%d项是:%d\n",n,fibonacci(n));
return 0;
}

方法三(动态规划):

#include<stdio.h>
int fibonacci(int n){
int f[n+2];
int i;
f[0]=0;
f[1]=1;
for(i=2;i<=n;i++){
f[i]=f[i-1]+f[i-2];
}
return f[n];
}
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
printf("斐波那契数列的第%d项是:%d\n",n,fibonacci(n));
return 0;
}
8.最大公约数和最小公倍数

输入两个正整数,计算它们的最大公约数和最小公倍数。

#include<stdio.h>
//计算最大公约数
int gcd(int a,int b)
{
if(b==0){
return a;
}
else{
return gcd(b,a % b);
}
}
//计算最小公约数
int lcm(int a,int b)
{
return a*b/gcd(a,b);
}
int main()
{
int num1,num2;
printf("请输入两个正整数:");
scanf("%d,%d",&num1,&num2);
printf("最大公约数是:%d\n",gcd(num1,num2));
printf("最小公倍数是:%d\n",lcm(num1,num2));
return 0 ;
9.十进制转二进制
#include <stdio.h>

void decToBinary(int n) {
    // 初始化一个数组来存储二进制表示
    int binaryNum[32];
    int i = 0;
    
    // 循环直到十进制数变为0
    while (n > 0) {
        binaryNum[i] = n % 2;  // 存储余数
        n = n / 2;  // 更新n为n除以2的结果
        i++;  // 移动到数组的下一个位置
    }
    
    // 打印二进制表示
    for (int j = i - 1; j >= 0; j--) {
        printf("%d", binaryNum[j]);
    }
    printf("\n");
}

int main() {
    int decNum;
    
    printf("请输入一个十进制数: ");
    scanf("%d", &decNum);
    
    printf("二进制表示为: ");
    decToBinary(decNum);
    
    return 0;
}

10.二进制转十进制
#include <stdio.h>

int binaryToDecimal(int binaryNum) {
    int decimalNum = 0;
    int base = 1; // 初始化权重为2的0次方
    while (binaryNum > 0) {
        int lastDigit = binaryNum % 10; // 获取二进制数的最后一位
        binaryNum /= 10; // 移除二进制数的最后一位
        decimalNum += lastDigit * base; // 累加到十进制数
        base *= 2; // 权重乘以2
    }
    return decimalNum;
}

int main() {
    int binaryNum;
    printf("Enter a binary number: ");
    scanf("%d", &binaryNum);
    printf("Decimal representation: %d\n", binaryToDecimal(binaryNum));
    return 0;
}
11.字符串长度

计算一个字符串的长度并输出。

​
#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello, World!";
    int length = strlen(str);
    printf("The length of the string is: %d\n", length);
    return 0;
}

​
12.字符串反转

输入一个字符串,反向输出该字符串。

#include <stdio.h>
#include <string.h>

void reverseString(char *str) {
    int length = strlen(str);
    int left = 0;
    int right = length - 1;
    while (left < right) {
        // 交换左右两侧的字符
        char temp = str[left];
        str[left] = str[right];
        str[right] = temp;
        
        // 移动指针
        left++;
        right--;
    }
}

int main() {
    char str[] = "Hello, World!";
    
    printf("Original string: %s\n", str);
    reverseString(str);
    printf("Reversed string: %s\n", str);
    
    return 0;
}
13.数组求和

输入数组元素,求和后输出。

#include <stdio.h>

int sumArray(int arr[], int size) {
    int sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arr[i]; // 累加数组中的每个元素
    }
    return sum;
}

int main() {
    int arr[] = {1, 2, 3, 4, 5}; // 初始化一个整型数组
    int size = sizeof(arr) / sizeof(arr[0]); // 计算数组的大小

    int sum = sumArray(arr, size); // 调用函数求和
    printf("The sum of the array elements is: %d\n", sum);

    return 0;
}
14.数组的最大值及最小值

输入数组元素,求出最大值及最小值。

#include <stdio.h>

void findMinMax(int arr[], int size, int *min, int *max) {
    if (size <= 0) {
        // 如果数组大小不正确,返回错误或异常
        return;
    }
    *min = *max = arr[0]; // 初始化最小值和最大值为数组的第一个元素
    for (int i = 1; i < size; i++) {
        if (arr[i] < *min) {
            *min = arr[i]; // 更新最小值
        }
        if (arr[i] > *max) {
            *max = arr[i]; // 更新最大值
        }
    }
}

int main() {
    int arr[] = {1, 5, 2, 8, 3, 7}; // 初始化一个整型数组
    int size = sizeof(arr) / sizeof(arr[0]); // 计算数组的大小
    int min, max;

    findMinMax(arr, size, &min, &max); // 调用函数找到最小值和最大值

    printf("The minimum value is: %d\n", min);
    printf("The maximum value is: %d\n", max);

    return 0;
}
15.反转数组

输入数组元素将其反转输出。

#include <stdio.h>

void reverseArray(int arr[], int size) {
    int left = 0;
    int right = size - 1;
    while (left < right) {
        // 交换左右两侧的元素
        int temp = arr[left];
        arr[left] = arr[right];
        arr[right] = temp;
        
        // 移动指针
        left++;
        right--;
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5}; // 初始化一个整型数组
    int size = sizeof(arr) / sizeof(arr[0]); // 计算数组的大小

    printf("Original array: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    reverseArray(arr, size); // 调用函数反转数组

    printf("Reversed array: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}
16.冒泡排序

输入数组元素对其冒泡排序输出。

#include <stdio.h>

void bubbleSort(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                // 交换 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 size = sizeof(arr) / sizeof(arr[0]); // 计算数组的大小

    printf("Original array: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    bubbleSort(arr, size); // 调用函数进行冒泡排序

    printf("Sorted array: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}
17.选择排序

输入数组元素,对其选择排序输出。

#include <stdio.h>

void selectionSort(int arr[], int size) {
    int i, j, min_idx, temp;
    for (i = 0; i < size - 1; i++) {
        // 找到从i到size-1的最小元素的索引
        min_idx = i;
        for (j = i + 1; j < size; j++) {
            if (arr[j] < arr[min_idx]) {
                min_idx = j;
            }
        }
        // 将找到的最小元素交换到位置i
        if (min_idx != i) {
            temp = arr[i];
            arr[i] = arr[min_idx];
            arr[min_idx] = temp;
        }
    }
}

int main() {
    int size;
    printf("Enter the number of elements in the array: ");
    scanf("%d", &size);

    int arr[size];
    printf("Enter %d integers:\n", size);
    for (int i = 0; i < size; i++) {
        scanf("%d", &arr[i]);
    }

    selectionSort(arr, size);

    printf("Sorted array: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}
18.插入排序

输入数组元素,对其插入排序后输出。

#include <stdio.h>

void insertionSort(int arr[], int size) {
    int i, j, key;
    for (i = 1; i < size; i++) {
        key = arr[i];
        j = i - 1;
        
        // 将arr[i]与已排序的arr[0...i-1]中的元素进行比较,找到合适的位置插入
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

int main() {
    int size;
    printf("Enter the number of elements in the array: ");
    scanf("%d", &size);

    int arr[size];
    printf("Enter %d integers:\n", size);
    for (int i = 0; i < size; i++) {
        scanf("%d", &arr[i]);
    }

    insertionSort(arr, size);

    printf("Sorted array: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}
19.希尔排序

输入数组元素,对其希尔排序后输出。

#include <stdio.h>

void shellSort(int arr[], int n) {
    for (int gap = n / 2; gap > 0; gap /= 2) {
        for (int i = gap; i < n; i++) {
            int temp = arr[i];
            int j;
            for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
                arr[j] = arr[j - gap];
            }
            arr[j] = temp;
        }
    }
}

int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90}; // 初始化一个整型数组
    int n = sizeof(arr) / sizeof(arr[0]); // 计算数组的大小

    printf("Original array: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    shellSort(arr, n); // 调用函数进行希尔排序

    printf("Sorted array: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

以上代码仅供参考,如有问题欢迎大家在留言区批评指正;
版权所有,翻印必究,如有雷同纯属巧合,转载请注明出处。

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值