当前位置:   article > 正文

C语言趣味编程

c语言趣味编程

C语言趣味编程

变量及运算符

鸡兔同笼问题

现有一个笼子里面关着鸡和兔子,笼子被一块布档住了,只能看清有多少条腿,和多少个头,要求根据头和腿的数量判断出鸡和兔子格有多少只

#include <stdio.h>
#include <stdlib.h>
​
// 鸡兔同笼问题 ,简单演示,可能存在无解的情况,参考循环结构里的鸡兔同笼
int main() {
    int h;   //定义int整型变量h,头有h个 
    int l;   //腿有l个 
    int x;   //设兔子有x个   
    printf("请输入头的数量\n");
    scanf("%d",&h);
    printf("请输入腿的数量\n");
    scanf("%d",&l);
    
    //l=x*4+(h-x)*2;将公式推导 得到x=(l/2) - h; 
    x=(l/2) - h;
    
    printf("兔子有%d个\n",x);
    printf("鸡有%d个\n",h-x);
​
    return 0;
}

圆的面积

书写c语言程序,根据圆的半径求圆的面积

#include <stdio.h>
#define M_PI 3.14   //定义一个常量PI 
​
int main() {
    double radius;    //定义duoble浮点型变量radius为圆的半径
    double area;      //定义duoble浮点型变量area为圆的面积
​
    printf("请输入圆的半径:");
    scanf("%lf", &radius);
​
    area = M_PI * pow(radius, 2);
​
    printf("圆的面积为:%lf\n", area);
​
    return 0;
}

分支结构

判断学生的成绩

通过输入学生的成绩来判断学生的成绩是否合格,或者是优秀

#include <stdio.h>
#include <string.h>
​
int main01()
{
    int score;            //定义整型变量score为学生得到的分数
    scanf("%d", &score);  //输入学生的分数
​
    //如果分数小于60分则执行if{}内的语句
    if (score < 60)
    {
        if (score > 55)
        {
            score = score + (60 - score);
            printf("不要忘记老师的恩情%d\n", score);
        }
        else 
        {
            printf("成绩不及格%d\n", score);
        }
    }
    
    //如果分数60 <= score < 80,则执行if{}内的语句
    else if (60 <= score < 80)
    {
        printf("成绩及格%d\n", score);
    }
    else 
    {
        printf("成绩优秀%d\n", score);
    }
}

查看时间安排

通过输入一个1-7以内的整型变量,来查看这一周中这天的安排

#include <stdio.h>
​
int main()
{
    int a;
    scanf("%d", &a);
    switch (a)
    {
    case 6:
        printf("打球");
        break;
    case 7:
        printf("上网");
        break;
    default:
        printf("上课");
        break;
    }
​
    return 0;
}

循环结构

猜数字游戏

通过随机一个100以内的整数,让玩家猜测,如果玩家猜测的数比随机数大,则提示玩家"太大了",如果玩家猜测的数比随机数小则提示玩家“太小了”,如果玩家猜测的数正好等于随机数,则结束游戏,提示玩家猜对了。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
​
int main() {
    int secretNumber, guess;   //secretNumber随机一个100以内的整数,guess你猜的数字
    int attempts = 0;          //一共猜了几次
  
    // 生成随机数
    srand(time(0));
    secretNumber = rand() % 100 + 1;
  
    printf("欢迎参加猜数字游戏!\n");
  
    do {
        printf("请输入一个猜测数字(1-100):");
        scanf("%d", &guess);
    
        attempts++;
​
        if (guess > secretNumber) {
            printf("太大了!再试一次。\n");
        } else if (guess < secretNumber) {
            printf("太小了!再试一次。\n");
        } else {
            printf("恭喜你,猜对了!\n");
            printf("你用了 %d 次猜对答案。\n", attempts);
        }
    } while (guess != secretNumber);
​
    return 0;
}

九九乘法表

通过C语言,在标准输入设备上打印一张九九乘法口诀表

#include <stdio.h>
​
int main() {
    int i, j;
​
    for (i = 1; i <= 9; i++) {
        for (j = 1; j <= i; j++) {
            printf("%d * %d = %d\t", j, i, j * i);
        }
        printf("\n");
    }
​
    return 0;
}

倒计时工具

使用c语言的循环结构做一个倒计时的工具,输入你要倒计时多少秒。

#include <stdio.h>
#include <windows.h>
​
int main() {
    int count;
​
    printf("请输入倒计时秒数:");
    scanf("%d", &count);
​
    printf("倒计时开始!\n");
​
    while (count > 0) {
        printf("%d\n", count);
        count--;
        Sleep(1000); // 暂停1秒钟(需要包含 windows.h 头文件)
    }
​
    printf("时间到!\a\n");
    printf("倒计时结束。\n");
​
    return 0;
}

求100以内所有奇数的和

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
​
int main13()
{
    int sum = 0;
    printf("100以内的偶数\n");
    for (int i = 0; i <= 100; i++)
    {
        if (i % 2 == 0)
        {
            printf("%d\n", i);
            continue;
        }
        sum = +i;
    }
    printf("100以内所有奇数的和是:%d\n", sum);
    return 0;
}

找车牌

某黑夜一司机碰伤行人之后落荒而逃,经警方调查,有三个目击者。甲说:车牌号的前两位相同;乙说:车牌号的后两位加起来等于6;丙说:车牌号是一个四位数并且能被2整除。根据以上线索,编程列出可能的车牌号。

#include<stdio.h> 
int main()
{
    int a,b,c,d,x;
    printf("可能的结果有:\n");
    for(x=1000;x<=9999;x++)
    {
        a=(x/1000)%10;
        b=(x/100)%10;
        c=(x/10)%10;
        d=x%10;
        if(a==b)
        if(c+d==6)
        if(x%2==0)
        printf("x=%d  ",x);
    }s
    return 0;
}

鸡兔同笼问题二

#include <stdio.h>
​
void calculateChickenAndRabbit(int n, int m) {
    int x, y;
​
    // 利用循环遍历所有可能的数量
    for (x = 0; x <= n; x++) {
        y = n - x; // 计算兔子的数量
​
        // 验证头数和脚数是否符合题意
        if ((x + y) == n && (2*x + 4*y) == m) {
            printf("鸡的数量:%d\n", x);
            printf("兔子的数量:%d\n", y);
            return;
        }
    }
​
    // 如果没有找到符合条件的解,输出提示信息
    printf("无解\n");
}
​
int main() {
    int n, m;
​
    printf("请输入总头数n:");
    scanf("%d", &n);
​
    printf("请输入总脚数m:");
    scanf("%d", &m);
​
    calculateChickenAndRabbit(n, m);
​
    return 0;
}

数组

找最大问题

可以实用于各种找最大问题,将你要找最大的数集合放入数组中。通过for和if来找到最大值

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
​
int main()
{
    //求数组元素的最大值
    int arr[10] = { 23,45,12,34,56,35,243,5,67,7 };
    int max=0;
​
    for (int i = 0; i < 10; i++)
    {
        if (arr[i]>max)
        {
            max = arr[i];
        }
    }
    printf("%d\n", max);
    return 0;
}

数组的逆置

#include <stdio.h>
​
void reverseArray(int arr[], int length) {
    int start = 0;
    int end = length - 1;
    int temp;
​
    while (start < end) {
        // 交换两个指针所指的元素
        temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
​
        // 更新指针位置
        start++;
        end--;
    }
}
​
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int length = sizeof(arr) / sizeof(arr[0]); // 计算数组长度
    int i;
​
    printf("逆置前的数组:");
    for (i = 0; i < length; i++) {
        printf("%d ", arr[i]);
    }
​
    reverseArray(arr, length);
​
    printf("\n逆置后的数组:");
    for (i = 0; i < length; i++) {
        printf("%d ", arr[i]);
    }
​
    return 0;
}

冒泡排序

#include <stdio.h>
​
void bubbleSort(int arr[], int length) {
    int i, j, temp;
​
    for (i = 0; i < length - 1; i++) {
        // 每次循环将最大的元素冒泡到末尾
        for (j = 0; j < length - i - 1; j++) {
            // 如果相邻元素逆序,则交换它们的位置
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
​
int main() {
    int arr[] = {5, 2, 9, 1, 3};
    int length = sizeof(arr) / sizeof(arr[0]); // 计算数组长度
    int i;
​
    printf("排序前的数组:");
    for (i = 0; i < length; i++) {
        printf("%d ", arr[i]);
    }
​
    bubbleSort(arr, length);
​
    printf("\n排序后的数组:");
    for (i = 0; i < length; i++) {
        printf("%d ", arr[i]);
    }
​
    return 0;
}

二维数组

二维数组:定义了5个学生、语文、数学、外语的成绩。求各科的平均分和各科不及格的人数

#include <stdio.h>
​
int main()
{
    //二维数组:  五行、三列
    //行代表人:  学生1,学生2 。。。学生5的各科成绩
    //列代表科目:语、数、外的成绩
    float a[5][3] = { 
        { 80, 75, 56 }, 
        { 59, 65, 71 }, 
        { 59, 63, 70 }, 
        { 85, 45, 90 }, 
        { 76, 77, 45 } };
​
    int i, j, person_low[3] = { 0 };
    float s = 0, lesson_aver[3] = { 0 };
​
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 5; j++)
        {
            s = s + a[j][i];
            if (a[j][i] < 60)
            {
                person_low[i]++;
            }
        }
​
        lesson_aver[i] = s / 5;
        s = 0;
    }
​
    printf("各科的平均成绩:\n");
    for (i = 0; i < 3; i++)
    {
        printf("%.2f\n", lesson_aver[i]);
    }
        
    printf("各科不及格的人数:\n");
    for (i = 0; i < 3; i++)
    {
        printf("%d\n", person_low[i]);
    }
        
    return 0;
}

函数

斐波拉契数列

很久很久以前,在一个神奇的森林里,住着一群爱斗智斗勇的小精灵。这些小精灵非常聪明,他们发现了一种神奇植物的种子,每年只能结出两颗果实。

一年过去了,第一个植物的种子发芽了,长出了一株小小的植物,结果结了两颗果实。在第二年,这两颗果实又各自发芽并结出果实,总共有三颗果实。第三年,这三颗果实又发芽并结出果实,总共有五颗果实。小精灵们惊喜地发现,每年的果实数量是前两年果实数量的总和。

#include <stdio.h>
​
int fibonacci(int n) {
    if (n <= 1) {
        return n;
    }
    else {
        return fibonacci(n-1) + fibonacci(n-2);
    }
}
​
int main() {
    int position;
    printf("请输入年份\n");
    scanf("%d",&position);
    int result = fibonacci(position);
    printf("植物的第 %d 年结出了:%d个果实\n", position, result);
    return 0;
}

阶层的计算

#include <stdio.h>
​
int factorial(int n) {
    if (n == 0) {
        return 1;
    }
    else {
        return n * factorial(n-1);
    }
}
​
int main() {
    int num;
    printf("请输入你要计算那个数的阶层:"); 
    scanf("%d",&num); 
    int result = factorial(num);
    printf("%d 的阶乘为:%d\n", num, result);
    return 0;
}

字符串反转:使用指针和递归函数来反转字符串。

#include <stdio.h>
​
void reverseString(char* str) {
    if (*str == '\0') {
        return;
    }
    else {
        reverseString(str + 1);
        printf("%c", *str);
    }
}
​
int main() {
    char str[] = "Hello World";
    printf("反转后的字符串为:");
    reverseString(str);
    printf("\n");
    return 0;
}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/427645
推荐阅读
相关标签
  

闽ICP备14008679号