明解C语言第三章习题

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

第一节:if语句

练习3-1:编写一段程序,像下面这样输入两个值,如果后者是前者的约数,则显示B是A的约数,否则显示B不是A的约数。
请输入两个整数。
整数A:17
整数B:5
B不是A的约数。

#include<stdio.h>
int main()
{
    int a, b;
    printf("请输入两个整数。\n");
    printf("整数A:"); scanf("%d", &a);
    printf("整数B:"); scanf("%d", &b);
    if (b % a)
        puts("B不是A的约数");
    else
        puts("B是A的约数");
    return 0;
}

练习3-2:请考虑以下,将代码清单3-9最后的else变为else if (no < 0)结果会怎么样?
代码清单3-9代码如下:

#include<stdio.h>
int main()
{
    int no;
    printf("请输入一个整数");
    scanf("%d", &no);
    if (no == 0)
        puts("该整数为0");
    else 
        if (no > 0)
            puts("该整数为正数");
        else
            puts("该整数为负数");
    return 0;
}

代码更换后为:

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

运行结果相同!
在这里插入图片描述
练习3-3:编写一段程序,像下面这样输入一个整数值,显示出它的绝对值。
请输入一个整数:-8
它的绝对值是:8

#include<stdio.h>
int main()
{
    int a;
    printf("请输入一个整数:");
    scanf("%d", &a);
    if (a >= 0)
        printf("绝对值是:%d", a);
    else
        printf("绝对值是:%d", -a);
    return 0;
}

练习3-4:编写一段程序,像下面这样输入两个整数值,如果两数值相等,则显示“A和B相等”。如果A大于B则显示“A大于B”。如果A小于B则显示“A小于B”。

#include<stdio.h>
int main()
{
    int a, b;
    printf("请输入两个整数。\n");
    printf("整数A:"); scanf("%d", &a);
    printf("整数B:"); scanf("%d", &b);
    if (a == b)
        puts("A和B的数值相同");
    else if (a > b)
        puts("A的值大于B");
    else
        puts("A的值小于B");
    return 0;
}

练习3-5:编写一段程序,确认相等运算符和关系符的运算结果是1和0

#include<stdio.h>
int main(void)
{
    int a;
    a = (5 >= 3);
    printf("%d\n", a);
    a = (5 <= 3);
    printf("%d\n", a);
    a = (5 == 3);
    printf("%d\n", a);
    a = (5 != 3);
    printf("%d\n", a);
    return 0;
}

练习3-6:编写一段程序,计算出输入的三个整数中的最小值并显示。(使用if语句)

#include<stdio.h>
int main()
{
    int a, b, c,min;
    printf("请输入三个整数。\n");
    printf("整数1:"); scanf("%d", &a);
    printf("整数2:"); scanf("%d", &b);
    printf("整数3:"); scanf("%d", &c);
    min = a;
    if (b < min)
    {
        min = b;
        printf("最小值是:%d", min);
    }
    else if (c < min)
    {
        min = c;
        printf("最小值是:%d", min);
    }
    else
        printf("最小值是:%d", min);
    return 0;
}

练习3-7:编写一段程序,计算出输入的四个整数中的最大值并显示。(使用if语句)

#include<stdio.h>
int main()
{
    int a, b, c, d, max1,max2;
    puts("请输入四个整数");
    printf("整数1:"); scanf("%d", &a);
    printf("整数2:"); scanf("%d", &b);
    printf("整数3:"); scanf("%d", &c);
    printf("整数4:"); scanf("%d", &d);

    max1 = (a> b) ? a : b;
    max2 = (c > d) ? c : d;
 if (max1 > max2)
    printf("%d", max1);
 else
     printf("%d", max2);
    return 0;
}

练习3-8:使用if语句替换掉315程序中的条件运算符,实现同样的功能

#include<stdio.h>
int main()
{
    int a, b;
    puts("请输入二个整数");
    printf("整数1:"); scanf("%d", &a);
    printf("整数2:"); scanf("%d", &b);
    if (a > b)
        printf("它们的差是%d", a - b);
    if (b > a)
        printf("它们的差是%d", b - a);
    return 0;
}

练习3-9:使用条件运算替换练习3-6的if语句,实现同样的功能

#include<stdio.h>
int main()
{
    int a, b, c, min1,min2;
    printf("请输入三个整数。\n");
    printf("整数1:"); scanf("%d", &a);
    printf("整数2:"); scanf("%d", &b);
    printf("整数3:"); scanf("%d", &c);
    min1 = (a < b) ? a : b;
    min2 = (c < b) ? c : b;
    printf("最小值是:%d", (min1 < min2) ? min1 : min2);
    return 0;
}

练习3-10:编写一段程序,像下面这样输入三个整数,如果三个数都相等,则显示"三个值都相等",如果两个相等则显示有两个相等,如都不符合,则显示,全部不相等。

#include<stdio.h>
int main()
{
    int a, b, c;
    puts("请输入三个值");
    printf("整数1:"); scanf("%d", &a);
    printf("整数2:"); scanf("%d", &b);
    printf("整数3:"); scanf("%d", &c);
    if (a == b && b == c)
        printf("他们三个都相等。");
    else if (a == b || a == c || b == c)
        printf("他们三个有两个相等。");
    else
        printf("他们三个都不想等");
    return 0;
}

练习3-11:编写一段程序,像下面那样输入两个整数,如果它们的差值小于等于10,则显示它们的差小于等于10,否则显示他们的差大于11

#include<stdio.h>
int main()
{
    int a, b;
    printf("请输入两个整数\n");
    printf("整数A:"); scanf("%d", &a);
    printf("整数B:"); scanf("%d", &b);
    if (a - b < 10 || a - b == 10)
        printf("它们的差小于等于10");
    else
        printf("它们的差大于等于11");
    return 0;
}

第二节:switch语句

练习3-12:对代码清单3-4的语句进行修改,要求不适用if语句使用switch语句

#include<stdio.h>
int main()
{
    int a;
    printf("请输入一个整数:");
    scanf("%d", &a);
    switch (a % 2)
    {
            case 0: printf("你输入的是偶数"); break;
            case 1: printf("你输入的是奇数"); break;
    }
    return 0;
}

练习3-13:对代码清单3-17的程序进行修改,不使用if语句,用switch语句来实现

#include<stdio.h>
int main()
{
    int a;
    printf("请输入月份:");
    scanf("%d", &a);
    switch (a)
    {
    case 3 :
    case 4 :
    case 5 : printf("春天!"); break;
    case 6 :
    case 7 :
    case 8 :  printf("夏天!"); break;
    case 9 :
    case 10:
    case 11: printf("秋天!"); break;
    case 12:
    case 1 :
    case 2 : printf("冬天!"); break;
    default: printf("该月份不存在!!"); break;
    }
    return 0;
}

总结板块

&&表示与,两者都为真才为真
|| 表示或,两者都为假才为假
a<b ? a : b 如果a<b结果为真,则为a,如果a<b结果为假,则为b
?:语句就是将if语句功能凝结在一个单一语句中。
switch语句会首先对表达式的值进行判断,然后程序会转向case后书写的值与判断结果相等的部分
当程序被执行到break语句的break时,会跳出switch语句

default :xxxx
如果控制表达式的结果与任何一个case都不同的时候,就会跳转到default的标识下执行

相关文章
TU^
|
5月前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
28 1
|
3月前
|
机器学习/深度学习 C语言
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
要保持最小的步数,每一次汉诺塔问题(无论是最初还是递归过程中的),如果此时初始柱盘子数为偶数,我们第一步是把最上面的盘子移动到中转柱,如果为奇数,我们第一步则是将其移动到目标柱。
76 0
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
TU^
|
5月前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
39 1
TU^
|
5月前
|
存储 C语言
C语言习题~day34
C语言习题~day34
TU^
27 1
TU^
|
5月前
|
算法 C语言
C语言习题~day33
C语言习题~day33
TU^
27 1
TU^
|
5月前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
17 1
TU^
|
5月前
|
C语言
C语言习题~day39
C语言习题~day39
TU^
20 0
C语言习题~day39
|
5月前
|
IDE 编译器 开发工具
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
40 0
TU^
|
5月前
|
存储 C语言
C语言习题~day38
C语言习题~day38
TU^
25 0
TU^
|
5月前
|
C语言
C语言习题~day37
C语言习题~day37
TU^
20 0