C语言练手题(52个小练习)

Posted 林夕07

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言练手题(52个小练习)相关的知识,希望对你有一定的参考价值。

目录

前言

总题数量52道,其中有很多相似的题目,用于前期学习练手还是挺不错的哦。我提供的解法不一定是最优的,只是提供一种解法,不提供解法思路。如有错误请私聊或者评论联系我进行更正!

1、求100之内自然数中最大的能被17整除的数。

#include <stdio.h>
#define NUM 17
int main()
{
    int tmp = 0;//用于存放最大的值
    int i = 0;

    for (i = 1; i < 100; i++)
    {
        if (0 == i % NUM)
        {
            tmp = i;
        }
    }

    printf("100之内自然数中最大能被17整除的数为:%d\\n", tmp);
    return 0;
}

在这里插入图片描述

2、已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。

#include <stdio.h>
int main()
{
    int i = 0;//循环体的计数器
    int j = 0;
    int k = 0;
    
    for(i = 0; i < 10; i++)
    {
        for(j = 0; j < 10; j++)
        {
            for(k = 0; k < 10; k++)
            {
                if(1333 == i * 100 + j * 10 + k + k * 100 + j * 10 + i)
                {
                    printf("a = %d, b = %d, c = %d\\n", i, j, k);
                }
            }
        }
    }
    return 0;
}

在这里插入图片描述

3、计算并输出200-400之间不能被3整除的整数的和 [200, 400)

#include <stdio.h>

int main()
{
    int sum = 0;
    int i = 0;

    for (i = 200; i < 400; i++)
    {
        if (0 != i % 3)
        {
            sum += i;
            //printf("i = %d\\n", i);
        }
    }
    printf("[200,400)之间不能被3整除的整数之和为:%d\\n", sum);
    return 0;
}

在这里插入图片描述

4、从键盘输入10个数,统计非负数的个数,并计算非负数的和

#include <stdio.h>
int main()
{
    int number = 0;
    int count = 0;
    int sum = 0;
    int i = 0;

    printf("请输入十个整型数字:");
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &number);
        if (number > 0)
        {
            count++;
            sum += number;
        }
    }

    printf("非负数的个数为:%d, 非负数的和为:%d\\n", count, sum);
    return 0;
}

在这里插入图片描述

5、求125之内自然数中偶数之和。

#include <stdio.h>
#define NUM 125
int main()
{
    int i = 0;
    int sum = 0;
    for (i = 1; i < NUM; i++)
    {
        if (0 == i % 2)
        {
            //printf("i = %d\\n", i);
            sum += i;
        }
    }
    printf("125之内的偶数之和为:%d\\n", sum);
    return 0;
}

在这里插入图片描述

6、输入5个数,求和并输出。要求编写求和的函数。

#include <stdio.h>
#define COUNT 5
int sum();

int main()
{
    int num = sum();
    printf("和为:%d\\n", num);
    return 0;
}

int sum()
{
    int number = 0;
    int i = 0;
    int s = 0;

    for (i = 0; i < COUNT; i++)
    {
        scanf("%d", &number);
        s += number;
    }
    return s;
}

在这里插入图片描述

7、编程计算1 * 2 * 3+3 * 4 * 5+5 * 6 * 7+…+99 * 100 * 101的值。

#include <stdio.h>

int main()
{
    int sum = 0;
    int i = 0;

    for (i = 1; i < 100; i += 2)
    {
        sum += i * (i + 1) * (i + 2);
    }
    printf("和为:%d\\n", sum);
    return 0;
}

在这里插入图片描述

8、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。

#include <stdio.h>
int main()
{
    char ch = ' ';

    scanf("%c", &ch);
    while('\\n' != ch)
    {
        if('a' == ch)
        {
            ch = '*';
        }
        printf("%c", ch);
        scanf("%c", &ch);
    }
    printf("\\n");
    return 0;
}

在这里插入图片描述

9、编写程序,将一个一维数组的元素逆序存放并输出。例如,原顺序为1,2,3,4,5,逆序后为5,4,3,2,1。

#include <stdio.h>
#include <stdlib.h>
#define SIZEMAX 5

int main()
{
    int* n = (int*)malloc(sizeof(int) * SIZEMAX);
    int i = 0;

    for (i = 0; i < SIZEMAX; i++)
    {
        n[i] = i + 1;
    }
    //输出数组原始内容
    printf("数组原始内容:");
    for (i = 0; i < SIZEMAX; i++)
    {
        printf("%d ", n[i]);
    }


    //交换
    for (i = 0; i < SIZEMAX / 2; i++)
    {
        int tmp = n[i];
        n[i] = n[SIZEMAX - i - 1];
        n[SIZEMAX - i - 1] = tmp;
    }

    //循环输出
    printf("\\n数组被修改后的内容:");
    for (i = 0; i < SIZEMAX; i++)
    {
        printf("%d ", n[i]);
    }
    printf("\\n");
    return 0;
}

在这里插入图片描述

10、求3行3列矩阵a[3][3]={1,2,3,4,5,6,7,8,9}非对角线上元素之和。

#include <stdio.h>

int main()
{
    int a[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

    int sum = 0;
    int i = 0;
    int j = 0;
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            if (i != j && 3 != i + j + 1)
            {
                sum += a[i][j];
            }
        }
    }
    printf("非对角线之和为:%d\\n", sum);
    return 0;
}

在这里插入图片描述

11、编程判断输入的整数的正负性和奇偶性。如果为正数,输出z;如果为负数,输出f;如果为偶数,输出o;如果为奇数,输出j

#include <stdio.h>

int main()
{
    int n = 0;

    scanf("%d", &n);

    if(n > 0)
    {
        printf("z");
    }
    else
    {
        printf("f");
    }

    if(0 == n % 2)
    {
        printf("o");
    }
    else
    {
        printf("j");
    }
    
    printf("\\n");
    return 0;
}

在这里插入图片描述

12、计算并输出1-200之间不能被5整除的整数的和。

#include <stdio.h>

int main()
{
    int sum = 0;
    int i = 0;

    for (i = 1; i < 200; i++)
    {
        if (0 != i % 5)
        {
            sum += i;
        }
    }

    printf("和为:%d\\n", sum);
    return 0;
}

在这里插入图片描述

13、从键盘输入n和a的值,计算a+aa+aaa+…+aa…a(n个a)的值。

#include <stdio.h>

int main()
{
    int n = 0;
    int a = 0;
    long int sum = 0;
    int i = 0;
    long int tmp = 0;

    printf("请输入n的值:");
    scanf("%d", &n);
    printf("请输入a的值:");
    scanf("%d", &a);

    tmp = a;
    for(i = 0; i < n; i++)
    {
        //printf("%d\\n", tmp);
        sum += tmp;
        tmp = tmp * 10 + a;
    }
    printf("结果为:%ld\\n", sum);
    return 0;
}

在这里插入图片描述

14、输入5个数,求它们中最大值和平均值并输出。

#include <stdio.h>
#include <limits.h>
int main()
{
    int max = INT_MIN;
    double avg = 0;
    int n[5];
    int i = 0;
    int sum = 0;

    for (i = 0; i < 5; i++)
    {
        scanf("%d", &n[i]);
        sum += n[i];
        if (n[i] > max)
        {
            max = n[i];
        }
    }

    avg = sum / 5.0;
    printf("最大值为:%d,平均值为:%.2lf\\n", max, avg);
    return 0;
}

在这里插入图片描述

15、输出所有200-400之间能被3整除且个位数字为6的整数。

#include <stdio.h>

int main()
{
    int i = 0;

    printf("能被3整除且尾数为6的数字有如下:\\n");
    for (i = 200; i < 400; i++)
    {
        if (0 == i % 3 && 6 == i % 10)
        {
            printf("%d ", i);
        }
    }
    printf("\\n");

    return 0;
}

在这里插入图片描述

16、编写程序,将用户输入的字符串中所有的字符a去掉,然后输出剩余的字符。

#include <stdio.h>

int main()
{
    char str[100];
    char tmp[100];
    int i = 0;
    int j = 0;
    fgets(str, 100, stdin);

    while (str[i] != '\\n')
    {
        if ('a' != str[i])
        {
            tmp[j++] = str[i];
        }
        i++;
    }
    tmp[j] = '\\0';
    fputs(tmp, stdout);
    printf("\\n");
    return 0;
}

在这里插入图片描述

17、计算并输出200-400之间不能被7整除的整数的和。

#include <stdio.h>
int main()
{
    int i = 0;
    int sum = 0;
    for (i = 200; i < 400; i++)
    {
        if (0 <

以上是关于C语言练手题(52个小练习)的主要内容,如果未能解决你的问题,请参考以下文章

初学 C 语言没有项目练手?这 20 个小项目拿走不谢~

数据存储题 练手

51单片机可以用来练手的60个小设计

值得苦练的100道Python经典练手题,(附详细答案)

CCF CSP 202109赛题练习

python游戏练手--贪吃蛇