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

简介: C语言练手题(52个小练习)2

29、输入3个学生4门课的成绩{(60,70,65,75),(75,80,75,90),(95,75,90,65)},计算每个学生的总分和平均成绩并输出,结果保留一位小数。

#include <stdio.h>
int main()
{
    int student[3][4];
    int i = 0;
    int j = 0;
    double result[3][2];//三个同学的总分和平均分
    double sum = 0;
    double avg = 0;
    for (i = 0; i < 3; i++)
    {
        sum = 0;
        printf("请输入第%d个同学的四门成绩(中间用空格分隔):", i + 1);
        for (j = 0; j < 4; j++)
        {
            scanf("%d", &student[i][j]);
            sum += student[i][j];
        }
        result[i][0] = sum;
        result[i][1] = sum / 4.0;
    }
    for (i = 0; i < 3; i++)
    {
        printf("第%d位同学的总分为:%.1lf,平均分为:%.1lf\n",
            i + 1, result[i][0], result[i][1]);
    }
    return 0;
}


30、求两个正整数的最大公约数。

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    int tmp = 0;
    printf("请输入俩个正整数:");
    if (!(scanf("%d %d", &a, &b) && a > 0 && b > 0))
    {
        printf("输入数据非法!\n");
        return -1;
    }
    if (a < b)
    {
        tmp = a;
        a = b;
        b = tmp;
    }
    while (a % b != 0)
    {
        tmp = a % b;
        a = b;
        b = tmp;
    }
    printf("最大公约数为:%d\n", b);
    return 0;
}


31、求100之内自然数中奇数之和。

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


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

#include <stdio.h>
int main()
{
    int i = 0;
    for (i = 200; i < 400; i++)
    {
        if (0 == i % 3 && 7 == i % 10)
        {
            printf("%d ", i);
        }
    }
    printf("\n");
    return 0;
}


33、编程计算1 * 2 * 3+4 * 5 * 6+…+97 * 98 * 99的值

#include <stdio.h>
int main()
{
    int i = 0;
    int sum = 0;
    for (i = 1; i < 98; i += 3)
    {
        sum += i * (i + 1) * (i + 2);
    }
    printf("sum = %d\n", sum);
    return 0;
}


34、输入n的值,计算并输出1 * 1+2 * 2+3 * 3+4 * 4+5 * 5+…+n * n的值。要求编写函数f求平方。

#include <stdio.h>
int f(int num);
int main()
{
    int n = 0;
    int i = 0;
    int sum = 0;
    printf("请输入n:");
    scanf("%d", &n);
    for (i = 0; i <= n; i++)
    {
        sum += f(i);
    }
    printf("sum = %d\n", sum);
    return 0;
}
int f(int num)
{
    return num * num;
}


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

#include <stdio.h>
int main()
{
    int i = 0;
    int sum = 0;
    for (i = 1; i < 200; i++)
    {
        if (0 != i % 3)
        {
            sum += i;
        }
    }
    printf("sum = %d\n", sum);
    return 0;
}


36、输入一个华氏温度,输出摄氏温度,计算公式为c=5/9*(F-32)。要求结果保留两位小数。

#include <stdio.h>
int main()
{
    double fahrenheit = 0;
    double degree_celsius = 0;
    printf("请输入一个华氏温度:");
    scanf("%lf", &fahrenheit);
    degree_celsius = 5.0 / 9 * (fahrenheit - 32);
    printf("转换为摄氏温度为:%.2lf\n", degree_celsius);
    return 0;
}


37、输入任意三个数,按从大到小的顺序输出

#include <stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  int c = 0;
  scanf("%d%d%d", &a, &b, &c);
  if(a > b)
  {
    int temp = a;
    a = b;
    b = temp;
  }
  if(b > c)
  {
    int temp = b;
    b = c;
    c = temp;
  }
  if(a > b)
  {
    int temp = a;
    a = b;
    b = temp;
  }
  printf("%d %d %d\n", a, b, c);
  return 0;
}


38、用1元人民币兑换5分、2分、1分的硬币共50枚,每种硬币至少一枚,问共有多少种兑换方案?输出每一种方案中三种硬币的数量

#include <stdio.h>
int main()
{
    int i = 0;
    int j = 0;
    int k = 0;
    printf("有如下几种情况:\n");
    for (i = 1; i < 20; i++)
    {
        for (j = 1; j < 50; j++)
        {
            for (k = 1; k < 100; k++)
            {
                if ((100 == i * 5 + j * 2 + k) && (50 == i + j + k))
                {
                    printf("5分的%d个,2分的%d个,1分的%d个\n", i, j, k);
                }
            }
        }
    }
    return 0;
}


39、从键盘输入圆的半径,计算并输出圆面积与周长,要求结果保留两位小数。

#include <stdio.h>
#define PI 3.1415926
int main()
{
    double r = 0;
    double per = 0;
    double area = 0;
    printf("请输入圆的半径:");
    scanf("%lf", &r);
    per = 2 * PI * r;
    area = PI * r * r;
    printf("周长为:%.2lf,面积为:%.2lf\n", per, area);
    return 0;
}


40、从键盘输入一个字符串,再输入两个正整数m和n,输出字符串中从m开始,连续n个字符。例如,输入abcdefg,2,3,输出bcd。

#include <stdio.h>
int main()
{
    char str[100];
    int m = 0;
    int n = 0;
    printf("请输入一段字符:");
    fgets(str, 100, stdin);
    printf("请依次输入m和n的值:");
    scanf("%d %d", &m, &n);
    if (m > n)
    {
        printf("输入数据非法!");
        return -1;
    }
    int i = 0;
    for (i = m - 1; i <= n; i++)
    {
        putchar(str[i]);
    }
    printf("\n");
    return 0;
}

41、输入一个不多于5位的正整数,判断它是几位数,并逆序输出各位数字

#include <stdio.h>
int main()
{
    int oldnum = 0;
    int newnum = 0;
    int len = 0;
    int tmp = 0;
    printf("请输入一个不多于五位的正整数:");
    scanf("%d", &oldnum);
    tmp = oldnum;
    while (tmp != 0)
    {
        tmp /= 10;
        len++;
    }
    tmp = oldnum;
    while (tmp != 0)
    {
        newnum = newnum * 10 + tmp % 10;
        tmp = tmp / 10;
    }
    printf("这是个%d位数,逆序后为:%d\n", len, newnum);
    return 0;
}


42、输出Fibonacci数列的前40项

#include <stdio.h>
int main()
{
    long long num1 = 0;
    long long num2 = 1;
    long long tmp = 0;
    int i = 0;
    printf("%lld,", num1);
    for (i = 2; i < 40; i++)
    {
        tmp = num1 + num2;
        num1 = num2;
        num2 = tmp;
        printf("%lld,", num1);
    }
    printf("\n");
    return 0;
}


43、判断某一年是否是闰年

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

44、起泡法(选择法)对十个数排序

#include <stdio.h>
int main()
{
    int n[10] = { 3, 2, 5, 6, 7, 67, 14, 1, 8, 13 };
    int i = 0;
    int j = 0;
    for (i = 0; i < 10 - 1; i++)
    {
        for (j = 0; j < 10 - 1 - i; j++)
        {
            if (n[j] > n[j + 1])
            {
                int tmp = n[j];
                n[j] = n[j + 1];
                n[j + 1] = tmp;
            }
        }
    }
    printf("排序后的结果:\n");
    for (i = 0; i < 10; i++)
    {
        printf("%d ", n[i]);
    }
    printf("\n");
    return 0;
}


45、判断某个数是否为素数.

#include <stdio.h>
int main()
{
    int n = 0;
    int i = 0;
    printf("请输入一个数字:");
    scanf("%d", &n);
    for (i = 2; i < n; i++)
    {
        if (0 == n % i)
        {
            printf("不是素数!\n");
            return 0;
        }
    }
    printf("是素数!\n");
    return 0;
}


46、编程计算1!+2!+3!+…+10的值。

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


47、求以下数列前十五项的和:2/1,3/2,5/3,8/5,13/8,21/13…。

#include <stdio.h>
int main()
{
    int a1 = 1;
    int a2 = 1;
    int b1 = 0;
    int b2 = 1;
    int i = 0;
    double sum = 0;
    for (i = 0; i < 15; i++)
    {
        int tmp = a2;
        a2 = a1 + a2;
        a1 = tmp;
        tmp = b2;
        b2 = b1 + b2;
        b1 = tmp;
        sum += a2 / (double)b2;
        //printf("%lf\n", sum);
    }
    printf("sum = %.2lf\n", sum);
    return 0;
}


48、从键盘输入圆柱体高与底面半径,计算并输出圆柱体表面积与体积,要求结果保留两位小数。

#include <stdio.h>
#define PI 3.1415926
int main()
{
    double high = 0;
    double r = 0;
    double area = 0;
    double volume = 0;
    printf("依次输入圆柱体高和地面半径:");
    scanf("%lf %lf", &high, &r);
    //area = 2πr2 + 2πrh
    area = 2 * PI * r * r + 2 * PI * r * high;
    // 圆柱体的体积=底面积×高=(V=πr²h)
    volume = PI * r * r * high;
    printf("圆柱体表面积为:%.2lf, 体积:%.2lf\n", area, volume);
    return 0;
}


49、从键盘输入一个十进制整型数据,计算并输出其各位上数字之和(忽略正负号)。例如,输入1234,输出10;输入-1234,输出10。

#include <stdio.h>
int main()
{
    int num = 0;
    int n = 0;
    printf("请输入一个数字:");
    scanf("%d", &num);
    if (num < 0)
    {
        num *= -1;
    }
    while (num != 0)
    {
        n += num % 10;
        num /= 10;
    }
    printf("输出:%d\n", n);
    return 0;
}


50、已知银行定期存款利率为r=2.25%,输入存款本金x、存款年数n,输出本利之和y=x(1+r)(1+r)…(1+r),共n个(1+r)。

#include <stdio.h>
#include <math.h>
int main()
{
    double rate = 0.0225;
    int x = 0;
    int n = 0;
    double sum = 1;
    int i = 0;
    printf("请输入存款本金和存款年数:");
    scanf("%d %d", &x, &n);
    for (i = 0; i < n; i++)
    {
        sum *= (1 + rate);
    }
    sum = x * sum;
    printf("本息和为:%.2lf\n", sum);
    return 0;
}


51、编程判断输入的字符串是否为“回文”。所谓“回文”是指顺读和倒读都一样,如abcba。

#include <stdio.h>
#include <string.h>
int main()
{
    char str[100];
    fgets(str, 100, stdin);
    int len = strlen(str) - 1;
    int i = 0;
    for (i = 0; i < len / 2; i++)
    {
        if (str[i] != str[len - 1 - i])
        {
            break;
        }
    }
    if (i != len / 2)
    {
        printf("不是回文!\n");
    }
    else
    {
        printf("是回文!\n");
    }
    return 0;
}


52、编写程序,将用户输入的字符串中删除所有的数字,然后输出剩余的字符

#include <stdio.h>
#include <ctype.h>
int main()
{
    char str[100];
    char ch = ' ';
    int i = 0;
    while (scanf("%c", &ch) && ch != '\n')
    {
        if (!isdigit(ch))
        {
            str[i++] = ch;
        }
    }
    str[i] = '\0';
    fputs(str, stdout);
    printf("\n");
    return 0;
}


本章完!由于匆忙可能存在一些错误。感谢理解。

目录
相关文章
|
1月前
|
C语言 数据安全/隐私保护
C语言初阶②(分支语句和循环语句)编程练习
C语言初阶②(分支语句和循环语句)编程练习
36 1
|
27天前
|
算法 C语言 容器
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(上)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
25 0
|
1月前
|
C语言
C语言指针——练习
C语言指针——练习
|
1月前
|
编译器 C语言
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。(下)
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。
25 0
|
1月前
|
编译器 C语言 C++
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(下)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
31 2
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(下)
|
27天前
|
存储 前端开发 算法
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(下)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
7 0
|
1月前
|
算法 编译器 C语言
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(上)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
29 3
|
1月前
|
编译器 C语言 C++
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(中)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
25 1
|
1月前
|
C语言
C语言必备练习(含详细理解:适用于初学者)
C语言必备练习(含详细理解:适用于初学者)
17 2
|
1月前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结