明解C语言第四章习题

简介: 明解C语言第四章习题

第一节:do语句

练习4-1:代码清单3-9是判断所输入的整数符号的程序,请将其改写为可将输入显示这一过程循环任意次

#include <stdio.h>

int main()
{
    int a;
    int b;
    do {
        printf("请输入一个整数:");
        scanf("%d", &a);

        if (a == 0)
            puts("该整数为0。");
        else if (a > 0)
            puts("该整数为正数。");
        else
            puts("该整数为负数。");

        printf("要重复一次吗?【yes  0/No  1】:");
        scanf("%d", &b);
    } while (b == 0);

    return 0;
}

练习4-2:编写一段程序,像下面这样读取两个整数的值,然后计算出它们之间所有整数的和
请输入两个整数。
整数A:37
整数B:28
大于等于28小于等于37的所有整数的和是:325

#include<stdio.h>
int main()
{
    int a, b, c;
    int sum = 0;
    puts("请输入两个整数。");
    printf("整数A:"); scanf("%d", &a);
    printf("整数B:"); scanf("%d", &b);
    c = a;
    do
    {
        sum += c;
        c--;
    } while (c != b - 1);
    printf("大于等于%d小于等于%d的所有整数的和是:%d", b, a, sum);
    return 0;
}

第二节:while语句

练习4-3:对代码清单4-5中的程序进行修改,当输入的值为负数时不执行换行操作

#include<stdio.h>
int main()
{
    int no;
    printf("请输入一个正数.");
    scanf("%d", &no);
    while (no >= 0)
    {
        printf("%d ", no);
        no--;
    }
    if (no < 0)
        putchar('\n');
    return 0;
}

练习4-4:对代码清单4-6进行修改,使其:
递减到1而非递减到0;
当输入的值小于0时,不进行换行;

#include<stdio.h>
int main()
{
    int no;
    printf("请输入一个正整数:");
    scanf("%d", &no);
    while (no >= 1)
    {
        printf("%d  ", no--);
    }
    if (no < 0)
        putchar('\n');
    return 0;
}

练习4-5:对代码清单4-7的程序进行修改。
从1开始递增;
输入的值小于0时不换行;

#include<stdio.h>
int main()
{
    int i, no;
    printf("请输入一个正整数:");
    scanf("%d", &no);
    i = 1;
    while (i <= no)
    {
        printf("%d  ", i++);
    }
    if (no >= 0)
        putchar('\n');
    return 0;
}

练习4-6:编写一段程序,像下面按照升序显示出小于输入值的所有正偶数。
请输入一个整数:19
2 4 6 8 10 12 14 16 18

#include<stdio.h>
int main()
{
    int a = 0;
    int i = 1;
    printf("请输入一个整数:");
    scanf("%d", &a);
    while (i < a )
    {
        if (i % 2 ==0)
        {
            printf("%d ", i);
        }
        i++;
    }
    return 0;
}

练习4-7:编写一段程序,像下面这样显示出小于输入的整数的所有2的乘方
请输入一个整数:19
2 4 8 16

#include<stdio.h>
int main()
{
    int a = 0, i = 1;
    printf("请输入一个正整数:");
    scanf("%d", &a);
    while (i < a)
    {
        if (i < 19 && i % 2 == 0)
        {
            printf("%d  ", i);
        }
        i*=2;
    }
    return 0;
}

练习4-9:编写一段程序,交替显示+和-,总个数等于所输入的整数值。另外输入0以下的整数时,什么也不显示。

#include<stdio.h>
int main()
{
    int i = 0, no = 0;
    printf("请输入一个正整数:");
    scanf("%d", &no);
    while (i < no)
    {
        if (i % 2 == 0)
            printf("+");
        else
            printf("-");
        i++;
    }
    return 0;
}

练习4-10:编写一段程序,像下面一样练习显示 * 总个数等于输入数值的个数,当输入0以下的数值时什么也不显示

#include<stdio.h>
int main()
{
    int i = 0, no = 0;
    printf("请输入一个正整数:");
    scanf("%d", &no);
    while (i < no)
    {
        printf("*\n");
        i++;
    }
    return 0;
}

练习4-11:编写代码,显示下方效果;
请输入一个正整数:1963
1963的逆向结果是3691

#include<stdio.h>
int main()
{
    int i, j;
    do
    {
        printf("请输入一个正整数:");
        scanf("%d", &i);
        if (i <= 0)
            puts("请不要输入负数和0。");
    } while (i <= 0);
    j = i;
    printf("%d逆向显示的结果是:", j);
    while (j > 0)
    {
        printf("%d", j % 10);
        j /= 10;
    }
    puts("。");
    return 0;
}

练习4-12:读取一个整数,显示其位数。
请输入一个正整数:1963
1963的位数是:4

#include<stdio.h>
int main()
{
    int a = 0, b = 0, c = 0;
    printf("请输入一个正整数:");
    scanf("%d", &a);
    b = a;
    while (b > 0)
    {
        b /= 10;
        c++;
    }
    printf("%d的位数是%d", a, c);
    return 0;
}

练习4-13:编写一段程序,求1到n的和。

#include<stdio.h>
int main()
{
    int n=0,i=0,sum=0;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    for (i = 0; i <= n; i++)
    {
        sum += i;
    }
    printf("1到%d的和为:%d", n, sum);
    return 0;
}

练习4-14:编写一段程序,像下面这样根据输入的整数,循环显示1234567890,显示的位数和输入的数值相同
请输入一个正整数:25
1234567890123456789012345

#include<stdio.h>
int main()
{
    int i = 0, j = 0;
    printf("请输入一个正整数:");
    scanf("%d", &i);
    for (j = 1; j <= i; j++)
    {
        printf("%d", j%10);
    }
    return 0;
}

练习4-15:像下面一样显示身高和标准体重的对照表。显示的身高范围和间隔由输入的整数值进行控制,标准体重精准到小数点后两位。
开始数值(cm):155
结束数值(cm):190
间隔数值(cm):4
150cm 49.50kg
160cm 54.00kg
........(以下省略).........

#include<stdio.h>
int main()
{
    int begin = 0;
    int end = 0;
    int interval = 0;
    int i = 0 , j=0;
    printf("开始数值(cm):"); scanf("%d", &begin);
    printf("结束数值(cm):"); scanf("%d", &end);
    printf("间隔数值(cm):"); scanf("%d", &interval);
    j = begin;
    for (i = 0; i <= (end - j) / interval; i++)
    {
        printf("%dcm        %.2fkg\n", begin, (begin - 100) * 0.9);
        begin += interval;
    }
    return 0;
}

练习4-16:编写一段程序,输入一个整数值,显示该整数值以下所有奇数
整数值:15
1 3 5 7 9 11 13 15*

#include<stdio.h>
int main()
{
    int a = 0, i = 1;
    printf("请输入一个整数值:");
    scanf("%d", &a);
    while (i <= a)
    {
        printf("%d  ", i);
        i+=2;
    }
    return 0;
}

练习4-17:编写一段程序,像下面这样显示1~n的整数值的二次方。
n的值:3
1的二次方是:1
2的二次方是:4

#include<stdio.h>
int main()
{
    int n = 0, i = 0;
    printf("n的值为:"); scanf("%d", &n);
    for (i = 1; i < n; i++)
    {
        printf("%d的二次方是:%d\n", i, i * i);
    }
    i++;
    return 0;
}

练习4-18:编写一段程序,显示 * 每五个就进行一次换行,数字为几显示多少个。

#include<stdio.h>
int main()
{
    int i = 0, j = 0;
    printf("整数值:");
    scanf("%d", &j);
    for (i = 1; i <= j; i++)
    {
        printf("*");
        if (i % 5 == 0)
            putchar('\n');
    }
    return 0;
}

练习4-19:对代码清单4-15进行修改,在显示所有约数后显示约数个数
整数值:4
1
2
4
约数有:3个

#include<stdio.h>
int main(void)
{
    int i = 0, n = 0, m = 0;
    printf("整数值:");
    scanf("%d", &n);    
     for (i = 1; i <= n; i++)
        if (n % i == 0)
    {
         printf("%d ", i);
         printf("\n");
         m++;
    }
     printf("约数有%d个。", m);
     return 0;
}
相关文章
|
2月前
|
存储 C语言
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
100 16
|
2月前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
108 18
|
2月前
|
Serverless C语言
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
74 18
|
2月前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
76 13
|
2月前
|
存储 安全 C语言
【C语言程序设计——选择结构程序设计】预测你的身高(头歌实践教学平台习题)【合集】
分支的语句,这可能不是预期的行为,这种现象被称为“case穿透”,在某些特定情况下可以利用这一特性来简化代码,但在大多数情况下,需要谨慎使用。编写一个程序,该程序需输入个人数据,进而预测其成年后的身高。根据提示,在右侧编辑器补充代码,计算并输出最终预测的身高。分支下的语句,提示用户输入无效。常量的值必须是唯一的,且在同一个。语句的作用至关重要,如果遗漏。开始你的任务吧,祝你成功!,程序将会继续执行下一个。常量都不匹配,就会执行。来确保程序的正确性。
112 10
|
2月前
|
小程序 C语言
【C语言程序设计——基础】顺序结构程序设计(头歌实践教学平台习题)【合集】
目录 任务描述 相关知识 编程要求 测试说明 我的通关代码: 测试结果: 任务描述 相关知识 编程编写一个程序,从键盘输入3个变量的值,例如a=5,b=6,c=7,然后将3个变量的值进行交换,使得a=6,b=7,c=5。面积=sqrt(s(s−a)(s−b)(s−c)),s=(a+b+c)/2。使用输入函数获取半径,格式指示符与数据类型一致,实验一下,不一致会如何。根据提示,在右侧编辑器补充代码,计算并输出圆的周长和面积。
56 10
|
2月前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
52 3
|
2月前
|
存储 算法 安全
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
38 2
|
2月前
|
存储 C语言
【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
71 6
|
2月前
|
存储 编译器 C语言
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
68 1