精华内容
参与话题
问答
  • C语言程序设计第五版 谭浩强 第五版课后答案

    万次阅读 多人点赞 2019-06-16 00:27:29
    谭浩强 C语言程序设计第五版 第4章课后答案 3.求两个正整数m和n,求其最大公约数和最小公倍数。 #include<stdio.h> void main() { int m, n, t, i, a = 1; scanf("%d%d", &m, &n); if (m < n) ...

    谭浩强 C程序设计第五版 第五版课后答案

    c程序设计

    第一章

    在这里插入图片描述

    1.什么是程序?什么是程序设计?

    • 程序:就是一组能识别和执行的指令,每一条指令使计算机执行特定的操作

    • 程序设计:是指从确定任务到得到结果、写出文档的全过程

    2.为什么需要计算机语言?高级语言有哪些特点?

    • 为什么需要计算机语言:计算机语言解决了人和计算机交流是的语言问题,使得计算机和人都能识别

    • 高级语言有哪些特点:
      2.1 高级语言的数据结构要比汇编和机器语言丰富;
      2.2 高级语言与具体机器结构的关联没有汇编以及机器语言密切;
      2.3 高级语言更接近自然语言更容易掌握;
      2.4 高级语言编写的程序要经过编译或解释计算机才能执行;

    3.正确理解以下名词及其含义:

    (1)源程序,目标程序,可执行程序。

    • ​源程序:指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令

    • 目标程序:为源程序经编译可直接被计算机运行的机器码集合,在计算机文件上以.obj作扩展名

    • 可执行程序:将所有编译后得到的目标模块连接装配起来,在与函数库相连接成为一个整体,生成一个可供计算机执行的目标程序,成为可执行程序

    (2)程序编辑,程序编译,程序连接。

    程序编辑:上机输入或者编辑源程序。

    程序编译:

    • 先用C提供的“预处理器”,对程序中的预处理指令进行编译预处理
    • 对源程序进行语法检查, 判断是否有语法错误,直到没有语法错误未知
    • 编译程序自动把源程序转换为二进制形式的目标程序

    程序连接:将所有编译后得到的目标模块连接装配起来,在与函数库相连接成为一个整体的过程称之为程序连接

    (3)程序,程序模块,程序文件。

    • 程序:一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具

    • 程序模块:可由汇编程序、编译程序、装入程序或翻译程序作为一个整体来处理的一级独立的、可识别的程序指令

    • 程序文件:程序的文件称为程序文件,程序文件存储的是程序,包括源程序和可执行程序

    (4)函数,主函数,被调用函数,库函数。

    • 函数:将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,来完成一定功能

    • 主函数:又称main函数,是程序执行的起点

    • 被调用函数:由一个函数调用另一个函数,则称第二个函数为被调用函数

    • 库函数:一般是指编译器提供的可在c源程序中调用的函数。可分为两类,一类是c语言标准规定的库函数,一类是

    ​ 编译器特定的库函数

    (5)程序调试,程序测试。
    • 程序调试:是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程

    • 程序测试:是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确保该程序能按预定的方式正确地运行

    4.编写一个C程序,运行时输出

    Hello World!
    这个程序是一些国外C教材中作为第一个程序例子介绍的,一般称为Hello程序。

    代码示例:

    #include <stdio.h>
    
    int main()
    {
    	printf("%s\n", "Hello World!");
    	return 0;
    }
    

    运行截图:

    C程序设计第五版谭浩强第4题答案

    5.编写一个C程序,运行时输出以下图形:

    ****

    ****

    ​ ****

    ​ ****

    代码示例:

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

    运行截图:

    C语言程序设计第五版谭浩强第5题答案

    6.编写一个C程序,运行时输人a,b,c三个值,输出其中值最大者。

    代码示例:

    #include<stdio.h>
    
    int main()
    {
    	int a, b, c, max;
    	printf("请输入三个数:\n");
    
    	scanf("%d%d%d", &a, &b, &c);
    	if (a > b)
    	{
    		max = a;
    	}
    	else
    	{
    		max = b;
    	}
    
    	if (c > max)
    	{
    		max = c;
    	}
    	printf("三个数中最大的数为:%d", max);
    	return 0;
    
    }
    

    运行截图:

    C语言程序设计第五版谭浩强第6题答案

    7.看懂《C程序设计(第五版)学习辅导》第16章中介绍的用Visual Studio 2010对C程序进行编辑、编译、连接和运行的方法,并进行以下操作:

    (1)建立一个新项目,定名为project1.

    C语言程序设计第五版谭浩强第6题答案

    (2)建立一个新文件,定名为test1。

    C语言程序设计第五版谭浩强课后答案 第二题

    (3)向test1 文件输人源程序(此源程序为读者自己编写的程序)。

    C语言程序设计第五版谭浩强课后答案 第三题

    (4)编译该源程序,如发现程序有错,请修改之,直到不出现“编译出错”为止。

    (5)连接并运行, 得到结果。分析结果。

    C程序设计第五版课后答案
    推荐一套B站讲的最好的C语言视频

    B站最火的C语言教程

    全部可运行答案下载地址:

    https://www.cnblogs.com/leetcodetijie/gallery/image/349548.html

    更多相关文章

    C程序设计第五版谭浩强课后习题答案 第一章
    C程序设计第五版谭浩强课后习题答案 第二章
    C程序设计第五版谭浩强课后习题答案 第三章
    C程序序设计第五版谭浩强课后习题答案 第四章
    C语言程序设计第五版谭浩强课后习题答案 第五章
    C语言程序设计第五版谭浩强课后习题答案 第六章
    C语言程序设计第五版谭浩强课后习题答案 第七章
    C语言程序设计第五版谭浩强课后习题答案 第八章
    C语言程序设计第五版谭浩强课后习题答案 第九章
    C语言程序设计第五版谭浩强课后习题答案 第十章

    展开全文
  • C语言第五版 第1章

    2018-12-15 18:45:40
    以UNIX第7中的C语言编译程序为基础,1978年,Brian W.Kernighan和Dennis M.Ritchie 合著了影响深远的名著The C Programming Language,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它是实际上一个...
  • 谭浩强C语言第五版课件,共10章,C语言基础知识
  • 如果我们按照题的要求,应该是直接定义一个变量使它小于100000,这里我们说给定一个正整数。 求几位数我们采取除以十后与零比较的方法 给出功能函数 int Figure1(int n) { if(n == 0) ...分别输出每一...

    如果我们按照题的要求,应该是直接定义一个变量使它小于100000,这里我们说给定一个正整数。

    求几位数我们采取除以十后与零比较的方法

    给出功能函数

    int Figure1(int n)
    {
    if(n == 0)
    {
    return 1;
    }
    int count = 0;


    while(n != 0)
    {
    count++;
    n /= 10;
    }


    return count;

    }

    分别输出每一位数字,这个在我们除以十的过程中进行取余就能做到,也可以直接在上个题中加个printf语句

    给出函数

    void PrintReverse(int n)
    {
    do
    {
    printf("%d ",n%10);
    n/=10;
    }while(n!=0);

    printf("\n");

    而逆序输出就比较费劲了同样采取取余的方法,我们首先要知道这是几位数,所以先用上面的功能函数来得到几位数在

    再来进行取余

    void PrintOrder(int n)
    {
    int count = Figure(n);
    int power = 1;
    int i;
    for(i=0;i<count-1;i++)
    {
    power *= 10;
    }


    for(i=0;i<count;i++)
    {
    printf("%d ",n/power);
    n %= power;
    power/=10;
    }
    printf("\n");

    }

    对于给定一个正整数的方法求其中数字,我们通常采用这种函数来达到目的

     

     

     

     

    展开全文
  • 谭浩强C语言程序设计第五版 第4章 课后习题 答案 1.什么是算术运算?什么是关系运算?什么是逻辑运算? 答:算术运算时数学里基础的加减乘数求余数等;关系运算时求两个或者多个变量或者表达式之间的关系;逻辑运算...

    谭浩强C语言程序设计第五版 第4章 课后习题 答案

    第四章 选择结构程序设计

    1. 什么是算术运算?什么是关系运算?什么是逻辑运算?

    【答案解析】

    算熟运算:

    算术运算即“四则运算”,是加法、减法、乘法、除法、乘方、开方等几种运算的统称。

    其中加减为一级运算,乘除为二级运算,乘方、开方为三级运算。在一道算式中,如果有多级运算存在,则应先进行高级运算,再进行低一级的运算。

    C语言中的算熟运算符包括:+-*/++--% 等种类。

    如果只存在同级运算;则从左至右的顺序进行;如果算式中有括号,则应先算括号里边,再按上述规则进行计算。

    示例:$ (1 + 1)^{2} * 4+5 * 3$

    解析:

    1. 先进行括号内运算1+1,然后进行乘方运算得到结果4.
    2. 接下来与4相乘,得到结果16
    3. 因为乘法优先级大于加法,因此先进行5*3,得到结果15
    4. 最终相加得到结果31

    结果:31

    关系运算:

    关系的基本运算有两类:一类是传统的集合运算(并、差、交等),另一类是专门的关系运算(选择、投影、连接、除法、外连接等),而在C语言中,关系运算通常被认为是比较运算,将两个数值进行比较,判断比较结果是否符合给定的条件。

    常见的关系运算符包括:<<=>>===!= 等种类。

    其中,前4种关系运算符(<、<=、>、>= )的优先级别相同,后2种(==、!=)也相同。而前4种高于后2种。

    例如, > 优先于 == 。而 >< 优先级相同。
    并且,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符(=)。

    逻辑运算:

    在逻辑代数中,有与、或、非三种基本逻辑运算。表示逻辑运算的方法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。而在C语言中,逻辑运算通常用于使用逻辑运算符将关系表达式或其它逻辑量连接起来组成逻辑表达式用来测试真假值。

    常见的逻辑运算符包括:&&||! 等种类

    && 与是双目运算符,要求有两个运算对象,表示两个运算对象都成立,则结果为真,否则结果为假。

    例如:(a<b) && (x>y),表示(a<b)和(x>y)同时成立则为真。

    ||:是双目运算符,要求有两个运算对象,表示两个运算对象只要任意一个成立,则结果为真,否则结果为假。

    例如:(a<b) && (x>y),表示(a<b)和(x>y)两个对象中任意一个成立则结果为真。

    **!**是单目运算符,只要求有一个运算对象,表示取运算对象反义,运算对象为真则结果为假,运算对象结果为假则结果为真。

    例如:!(a>b),表示(a>b)成立时结果为假,不成立时结果为真。

    若在一个逻辑表达式中包含多个逻辑运算符,则优先次序为: ! > && > ||。当然若一个逻辑表达式中包含括号括起来的子逻辑,则优先括号内的子逻辑判断。

    示例:

    (1>2)||(2>3)&&(4>3) 结果为0
    !(1>2)||(2>3)&&(4>3)结果为1

    注:&&优先级大于||,((2>3)&&(4>3))无法同时成立,则结果为假,然后与(1>2)结果进行逻辑或运算,两者都为假因此第一次结果为假。 而第二次!优先级最高,先对(1>2)的结果取逻辑非,得到结果为真,因此结果为真。

    2. C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?

    答案:

    在C语言中逻辑常量只有两个,即0和1,用来表示两个对立的逻辑状态,其中0表示假,1表示真。

    逻辑变量与普通代数一样,也可以用字母、符号、数字及其组合成为的逻辑表达式表示。

    对于系统来说,判断一个逻辑量的值时,系统会以0作为假,以非0作为真。例如3&&5的值为真,系统给出3&&5的值为1

    3. 写出下面各逻辑表达式的值。设a=3,b=4,c=5。

    (1)a + b > c && b == c

    (2)a || b + c && b - c

    (3)!(a > b) && !c || 1

    (4)!(x = a) && (y = b) && 0

    (5)!(a + b) + c - 1 && b + c / 2

    解题思路:

    1. 关系运算符的优先级高于赋值运算符,但是低于算术运算符;
    2. &&表示两边条件同为真则成立,||表示两边条件任意一个为真则成立,!取条件反义。
    3. 逻辑运算符优先级: ! > && > ||
    4. 有括号优先括号。
    3.1 题目:a + b > c && b == c -> 3+4>5&&4==5

    解析: 3+4>5 优先3+4得到结果7,因此7>5结果为真; 4==5为假,一真一假逻辑与最终结果为假。

    答案: 0

    #include <stdio.h>
    int main()
    {
    	int a = 3, b = 4, c = 5;
    	printf("%d\n", a || b + c && b - c);
    	system("pause");//这一句是为了让控制台不退出
    	return 0;
    }
    

    C语言程序设计第五版 谭浩强 第四章 课后习题 答案

    3.2 题目:a || b + c && b - c -> 3||4 + 5 && 4-5

    解析: 优先算术运算4+5得到7,非0则为真,4-5得到-1,非0则为真,接下来逻辑与判断,最终逻辑或判断

    答案: 1

    #include <stdio.h>
    int main()
    {
    	int a = 3, b = 4, c = 5;
    	printf("%d\n", a || b + c && b - c);
    	system("pause");//这一句是为了让控制台不退出
    	return 0;
    }
    

    C语言程序设计第五版

    3.3 题目:!(a > b) && !c || 1 -> !(3>4) && !5 || 1

    解析 : !优先级最高,!(3>4)最终结果为真,!5为假; 其次 &&,真&&假得到假,最终||,1为真,假或真为真

    答案: 1

    #include <stdio.h>
    int main()
    {
    	int a = 3, b = 4, c = 5;
    	printf("%d\n", !(a > b) && !c || 1);
    	system("pause");//这一句是为了让控制台不退出
    	return 0;
    }
    

    C语言程序设计第五版课后答案

    3.4 题目:!(x = a) && (y = b) && 0 -> !(x=3) && (y=4)&&0

    解析: 这里&&优先级最低是最后一个逻辑运算,因此不管如何,最终&&0,则肯定为假

    答案: 假-0

    #include <stdio.h>
    int main()
    {
    	int a = 3, b = 4, c = 5;
    	int x, y;
    	printf("%d\n", !(x = a) && (y = b) && 0);
    	system("pause");//这一句是为了让控制台不退出
    	return 0;
    }
    

    C语言程序设计第五版课后习题答案

    3.5 题目:!(a + b) + c - 1 && b + c / 2 -> !(3+4)+5-1 && 4+5/2

    解析: 在vs中优先对(a+b)取非得到0,0+5-1结果为4,因此最终为真(此题涉及不同平台结果不同的问题,因为在有的平台下编译器会优先算术运算,则最终取非得到结果为假)

    **答案: ** 1

    #include <stdio.h>
    int main()
    {
    	int a = 3, b = 4, c = 5;
    	printf("%d\n", !(a + b) + c - 1);
    	printf("%d\n", !(a + b) + c - 1 && b + c / 2);
    	system("pause");//这一句是为了让控制台不退出
    	return 0;
    }
    

    C语言程序设计课后答案谭浩强

    4. 有3个整数a, b, c,由键盘输入,输出其中最大的数。

    解题思路: 每个数字两两与剩余两个数字进行比较,若比剩下的两个数大则最大,例如:a>b && a>c则a是最大的

    答案:

    #include <stdio.h>
    int main()
    {
        int a, b, c;
        scanf("%d %d %d", &a, &b, &c);
        if (a == b && a == c) {
            printf("Three numbers are equal\n");
        }else if (a == b && a > c) {
            printf("a and b are the largest number\n", a); 
        }else if (a == c && a > b) {
            printf("a and c are the largest number\n", a); 
        }else if (b == c && b > a) {
            printf("c and b are the largest number\n", a); 
        }else if (a > b && a > c) {
            printf("a=%d is the largest number\n", a); 
        }else if (b > a && b > c) {
            printf("b=%d is the largest number\n", b); 
        }else {
            printf("c=%d is the largest number\n", c); 
        }   
        return 0;
    }
    

    C语言程序设计第五版 谭浩强

    5.从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。要求在输入数据后先对其进行检查是否为小于1000 的正数。若不是,则要求重新输入。

    解题思路: 首先判断输入的数字是否大于1000且是正数,然后使用sqrt函数对数据进行取平方根,最主要的是最终在输出是调整输出格式,小数部分为0位,只需要正数部分,且整数部分不会超过4位,

    答案:

    #include <stdio.h>
    #include <math.h>
    int main()
    {
    	float a, b;
    	scanf_s("%f", &a);
    	if (a >= 1000 || a < 0) {
    		printf("请输入小于1000的正数\n");
    		scanf_s("%f", &a);
    		b = sqrt(a);
    	}
    	else {
    		b = sqrt(a);
    	}
    	printf("a=%4.0f, b=%4.0f\n", a, b);
    	system("pause");//这一句是为了让控制台不退出
    	return 0;
    }
    

    课后习题 答案

    6. 有一个函数,编写程序,输入x的值,输出y相应的值。

    y={x   (x<1)2x1  (1<=x<10)3x11(x>=10) y= \begin {cases} x\qquad\qquad\ \ \ (x<1)\\2x-1\qquad\ \ (1<=x<10)\\3x-11\qquad(x>=10) \end{cases}

    解题思路: 根据输入的不同x值进行条件判断,不同的条件采用不同的表达式进行计算即可

    答案:

    #include <stdio.h>
    int main()
    {
    	int x, y;
    	scanf_s("%d", &x);
    	if (x < 1) {
    		y = x;
    	}
    	else if (x >= 1 && x < 10) {
    		y = 2 * x - 1;
    	}
    	else {
    		y = 3 * x - 11;
    	}
    	printf("y = %d\n", y);
    	system("pause");//这一句是为了让控制台不退出
    	return 0;
    }
    

    C语言程序设计第五版第六题答案

    7. 有一个函数,

    y={1(x<0)0   (x=0)1   (x>0) y= \begin {cases} -1\qquad(x<0) \\ 0\qquad\ \ \ (x=0) \\ 1\qquad\ \ \ (x>0) \end{cases}

    有人编写了以下两个程序,请分析它们是否能实现题目要求。不要急于上机运行程序,先分析两个程序的逻辑,画出它们的流程图,分析它们的运行情况。然后,上机运行程序,观察和分析结果。

    #include <stdio.h>
    
    int main()
    {
    	int x, y;
        printf("enter x:");
        scanf("%d", &x);
        y=-1;
        if (x != 0)
    		if (x > 0)
                y=1;
        	else
            	y=0;
        printf("x=%d,y=%d\n", x, y);
        return 0;
    }
    

    解题思路: if语句使用过程中,else总是匹配距离自己最近的且没有配对的if,因此x!=0具有两种情况x>0和x<0;因此x==0时y保持-1;x!=0&&x>0时y=1;x!=0&&x<0时y=0。

    流程图:

    C语言程序设计第五版流程图

    答案:
    课后习题答案

    #include <stdio.h>
    
    int main()
    {
    	int x, y;
        printf("enter x:");
        scanf("%d", &x);
        y=0;
        if (x >= 0)
    		if (x > 0) y=1;
        	else y=-1;
        printf("x=%d,y=%d\n", x, y);
        return 0;
    }
    

    解题思路: if语句使用过程中,else总是匹配距离自己最近的且没有配对的if,因此x>=0具有两种情况x>0和x0;因此x<0时y保持0;x>=0&&x>0时y=1;x>=0&&x0时y=-1。

    流程图:

    c语言谭浩强课后习题答案

    答案:

    C语言程序设计第五版

    8. 给出一百分制成绩,要求输出成绩等级’A’、‘B’、‘C’、‘D’、‘E’。 90分以上为’A’,8089分为’B’,7079分为’C’ ,60~69分为’D’ ,60分以下为’E’。

    解题思路: 根据不同的阶段成绩区间作为成绩的判断条件,属于哪个区间则输出对应等级即可

    答案:

    #include <stdio.h>
    int main()
    {
    	int score;
    	printf("enter score:");
    	scanf_s("%d", &score);
    	if (score >= 90) {
    		printf("A\n");
    	}else if (score >= 80 && score < 90) {
    		printf("B\n");
    	}else if (score >= 70 && score < 80) {
    		printf("C\n");
    	}else if (score >= 60 && score < 70) {
    		printf("D\n");
    	}else {
    		printf("E\n");
    	}
    	system("pause");
    	return 0;
    }
    

    谭浩强第五版课后习题答案

    9. 给一个不多于5位的正整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为321,应输出123。

    ①求出它是几位数;

    解题思路: 大于10000就是5位,否则大于1000就是四位,否则大于100是三位…

    答案:

    #include <stdio.h>
    int main()
    {
    	int num;
    	printf("enter num:");
    	scanf_s("%d", &num);
    	if (num > 99999 || num < 0) {
    		printf("请输入0~99999之间的正数\n");
    		return -1;
    	}
    	if (num >= 10000) {
    		printf("5\n");
    	}else if (num >= 1000) {
    		printf("4\n");
    	}else if (num >= 100) {
    		printf("3\n");
    	}else if (num >= 10) {
    		printf("2\n");
    	}else {
    		printf("1\n");
    	}
    	system("pause");
    	return 0;
    }
    

    C语言程序设计第五版课后答案

    ②分别输出每一位数字;

    解题思路: 99999除以10000则输出9;9999除以1000则输出9,…

    答案:

    #include <stdio.h>
    int main()
    {
    	int num;
    	printf("enter num:");
    	scanf_s("%d", &num);
    	if (num > 99999 || num < 0) {
    		printf("请输入0~99999之间的数字\n");
    		return -1;
    	}
    	if (num / 10000 > 0) {//取出万位数字
    		printf("%d ", num / 10000);
    	}
    	if (num%10000 >= 1000) {//取余10000则可以取出低四位的数据,除以1000则得到千位的数字
    		printf("%d ", (num % 10000) / 1000);
    	}
    	if (num%1000 >= 100) {//取余1000则可以取出低三位的数据,除以100则得到百位的数字
    		printf("%d ", (num % 1000) / 100);
    	}
    	if (num%100 >= 10) {//取余100则可以取出低两位的数据,除以10则得到十位的数字
    		printf("%d ", (num % 100) / 10);
    	}
    	if (num%10 >= 0) {//取余10则取出个位数字
    		printf("%d ", num % 10);
    	}
    	printf("\n");
    	system("pause");
    	return 0;
    }
    

    第八题答案

    ③按逆序输出各位数字,例如原数为321,应输出123。

    解题思路: 思路与第二题相同,只不过将整个过程逆序即可

    答案:

    #include <stdio.h>
    int main()
    {
    	int num;
    	printf("enter num:");
    	scanf_s("%d", &num);
    	if (num > 99999 || num < 0) {
    		printf("请输入0~99999之间的数字\n");
    		return -1;
    	}
    	if (num % 10 >= 0) {
    		printf("%d ", num % 10);
    	}
    	if (num % 100 >= 10) {
    		printf("%d ", (num % 100) / 10);
    	}
    	if (num % 1000 >= 100) {
    		printf("%d ", (num % 1000) / 100);
    	}
    	if (num % 10000 >= 1000) {
    		printf("%d ", (num % 10000) / 1000);
    	}
    	if (num / 10000 > 0) {
    		printf("%d ", num / 10000);
    	}
    	printf("\n");
    	system("pause");
    	return 0;
    }
    

    C语言程序设计第五版习题答案

    10.企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提成10%;利润高于100000元,低于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成7. 5%;200000<I≤400000时,低于200000元的部分仍按上述办法提成(下同)。高于200000元的部分按5%提成;400000<<I≤600000元时,高于400000元的部分按3%提成;600000<1≤1000000时,高于600000元的部分按1.5%提成;I>1000000时,超过1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。要求:(1) 使用if语句编写程序。(2) 使用switch语句编写程序。

    (1) 使用if语句编写程序。

    解题思路: 先将每一档的最大奖金算出来,在某一个区间时,则那小于这一档的奖金加上多出部分的奖金即可,例如:

    先列出100000档的奖金是10000,则180000就是10000 + (180000-100000) * 0.075;

    列出200000档的奖金是第一档加上多出100000部分的7.5%得到17500,则300000就是17500 + (300000-200000)*0.05;

    答案:

    #include <stdio.h>
    int main()
    {
    	double I, salary = 0;
    	printf("enter performance:");
    	scanf_s("%lf", &I);
    	if (I < 0) {
    		printf("请输入一个正数\n");
    		system("pause");
    		return -1;
    	}
    	double salary1 = 100000 * 0.1;//10万的奖金
    	double salary2 = (200000 - 100000) * 0.075 + salary1;//20万的奖金
    	double salary3 = (400000 - 200000) * 0.05 + salary2;//40万的奖金
    	double salary4 = (600000 - 400000) * 0.03 + salary3;//60万的奖金
    	double salary5 = (1000000 - 600000) * 0.015 + salary4;//100万的奖金
    	if (I <= 100000) {
    		salary = I * 0.1;//小于100000按10%提成
    	}else if (I > 100000 && I <= 200000) {
    		salary = salary1 + (I - 100000) * 0.075;//多出10万的按比例计算,加上10w的奖金
    	}else if (I > 200000 && I <= 400000) {
    		salary = salary2 + (I - 200000) * 0.05;//多出20万的按比例计算,加上20w的奖金
    	}else if (I > 400000 && I <= 600000) {
    		salary = salary3 + (I - 400000) * 0.03;//多出40万的按比例计算,加上40w的奖金
    	}else if (I > 600000 && I <= 1000000) {
    		salary = salary4 + (I - 600000) * 0.015;//多出60万的按比例计算,加上60w的奖金
    	}else if (I > 1000000){
    		salary = salary5 + (I - 1000000) * 0.01;//多出100万的按比例计算,加上100w的奖金
    	}
    	printf("salary:%f\n", salary);
    	system("pause");
    	return 0;
    }
    

    C语言程序设计第五版课后答案谭浩强

    (2) 使用switch语句编写程序。

    解题思路: 与第一题思路没有太大差别,区别在于switch语句的case子句中需要是一个常量整数,并且switch中若子句中没有break将循序向下执行,直到遇到break才会跳出switch语句,如果这时候将利润除以10w,则得到09的数字,其中0表示小于10w,1表示介于1020w,2、3表示介于2040w,4、5表示介于4060w,6、7、8、9表示介于60~100w,否则就是大于100w

    答案:

    #include <stdio.h>
    int main()
    {
    	double I, salary = 0;
    	printf("enter performance:");
    	scanf_s("%lf", &I);
    	if (I < 0) {
    		printf("请输入一个正数\n");
    		system("pause");
    		return -1;
    	}
    	double salary1 = 100000 * 0.1;//大于100000时0~100000的奖金
    	double salary2 = (200000 - 100000) * 0.075 + salary1;//大于200000时0~20万的奖金
    	double salary3 = (400000 - 200000) * 0.05 + salary2;//大于400000时0~40万的奖金
    	double salary4 = (600000 - 400000) * 0.03 + salary3;//大于600000时0~60万的奖金
    	double salary5 = (1000000 - 600000) * 0.015 + salary4;//大于1000000时0~100万的奖金
    	int grade = I / 100000;
    	switch(grade) {
    		case 0:
    			salary = I * 0.1; break;
    		case 1:
    			salary = salary1 + (I - 100000) * 0.075; break;
    		case 2://会顺序执行到下一个breakcase 3:
    			salary = salary2 + (I - 200000) * 0.05; break;
    		case 4:
    		case 5:
    			salary = salary3 + (I - 400000) * 0.03; break;
    		case 6:
    		case 7:
    		case 8:
    		case 9:
    			salary = salary4 + (I - 600000) * 0.015; break;
    		default:
    			salary = salary5 + (I - 1000000) * 0.01; break;
    	}
    	printf("salary:%f\n", salary);
    	system("pause");
    	return 0;
    }
    

    c语言谭浩强课后答案

    11. 输入4个整数,要求按由小到大的顺序输出。

    解题思路: 四个数中先找到最小的,剩下的三个数中找到第二小的,剩下的两个数中找到第三小的。

    答案:

    #include <stdio.h>
    int main()
    {
    	int a, b, c, d;
    	int max_num;
    	scanf_s("%d %d %d %d", &a, &b, &c, &d);
    	int tmp;
    	//找到最小的数
    	if (a > b) {
    		tmp = a; a = b; b = tmp; // a>b两个数据交换,则给a存储小的b
    	}
    	if (a > c) {
    		tmp = a; a = c; c = tmp;
    	}
    	if (a > d) {
    		tmp = a; a = d; d = tmp;
    	}
    	//找到第二小的数,不需要和最小的数比较
    	if (b > c) {
    		tmp = b; b = c; c = tmp;
    	}
    	if (b > d) {
    		tmp = b; b = d; d = tmp;
    	}
    	//找到第三小的数据,不需要和第一和第二小比较
    	if (c > d) {
    		tmp = c; c = d; d = tmp;
    	}
    	printf("%d %d %d %d\n", a, b, c, d);
    	system("pause");
    	return 0;
    }
    

    c语言程序设计第五版第11题答案

    12. 有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1,见图。这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。

    第12题

    解题思路: 塔的半径为1m,则x坐标小于-3或者大于3,以及y坐标大于3或者小于-3则都是0m的建筑;其余则判断输入的坐标是否在各个圆塔的圆形范围内。该点到各个圆心的距离是否大于1,小于则是10m建筑,否则为0m建筑。

    math.h中提供了fabs(double)求一个浮点数的绝对值,输入x,y坐标

    fabs(fabs(x) - 2)得到输入坐标距离圆心的横轴距离;

    fabs(fabs(y) - 2)得到舒服坐标距离圆心的纵轴距离;

    三角形两个直角边长平方相加,然后开平方根得到第三边长,若大于1,则不再圆塔范围内。

    答案:

    #include <stdio.h>
    #include <math.h>
    void main()
    {
    	int h;
    	double x, y, m, n, r;
    	printf("Please input a coordinate (x,y):");
    	scanf_s("%lf,%lf", &x, &y);
    	if (fabs(x) > 3 || fabs(y) > 3) {
    		h = 0;
    		printf("The height of the coordinate(%f,%f):h=%d\n", x, y, h);
    		return 0;
    	}
    	m = fabs(x) - 2; n = fabs(y) - 2;
    	r = sqrt(m * m + n * n);
    	if (r > 1)
    		h = 0;
    	else
    		h = 10;
    	printf("The height of the coordinate(%f,%f):h=%d\n", x, y, h);
    	system("pause");
    	return 0;
    }
    

    C语言程序设计第五版谭浩强课后习题答案

    更多相关文章

    C语言程序设计第五版 谭浩强 第五章 课后习题 答案

    展开全文
  • C语言练习题 写几个函数: 1、输入职工姓名和职工号 2、按职工号从小到大排序 3、输入职工号,用折半查找法找出姓名并输出 #include<stdio.h> #include<stdlib.h> #include<string.h> #define M...

    `## C语言练习题

    • 写几个函数:
      1、输入职工姓名和职工号
      2、按职工号从小到大排序
      3、输入职工号,用折半查找法找出姓名并输出
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define M 10
    
    int main()
    {
    
        void input_s(int s[],char [][8]);//函数声明
        void sort_sno(int s[],char [][8]);//函数声明
        void search_sno(int key,int s[],char [][8]);//函数声明
        int c,number;//定义查找关键字
        int s[M];//全局数组
        char name[M][8];//全局数组
        while(1)
        {
    
    
            printf("*****************MENU******************\n");
            printf("0:录入职工信息\n");
            printf("1:按职工号排序\n");
            printf("2:查找职工\n");
            printf("3:退出\n");
            printf("please choose:");
            scanf("%d",&c);
            switch(c)
            {
            case 0:
                input_s(s,name);//函数调用
                break;
            case 1:
                sort_sno(s,name);//函数调用
                break;
            case 2:
                printf("input sno you wnat to search:");
                scanf("%d",&number);
                search_sno(number,s,name);//函数调用
                break;
            case 3:
                exit(1);//退出系统
            default:
                break;
            }
        }
        return 0;
    }
    void input_s(int s[M],char name[][8])//录入职工信息
    {
        int i;
        for(i=0; i<M; i++)
        {
            printf("input sno:");
            scanf("%d",&s[i]);
            printf("input name:");
            getchar();//
            gets(name[i]);
        }
    }
    void sort_sno(int s[M],char name[][8])//
    {
    
        int i,j,temp;
        char tem[8];
        for(i=0; i<M; i++)//冒泡排序
            for(j=0; j<M-i; j++)
                if(s[j]>s[j+1])
                {
                    temp=s[j];
                    s[j]=s[j+1];
                    s[j+1]=temp;
                    strcpy(tem,name[j]);//字符串赋值,等号赋值只适用于单个字符(用'='需要for循环)
                    strcpy(name[j],name[j+1]);//同上
                    strcpy(name[j+1],tem);//同上
                }
        printf("staff sorted by sno:\n");
        for(i=0; i<M; i++)
            printf("%4d  %5s\n",s[i],name[i]);
    }
    
    void search_sno(int key,int s[M],char name[][8])//找职工
    {
        int top,bot,mid,loca,flag;
        bot=0;
        top=M-1;
        loca=0;//定义位置
        flag=1;//标记
        if((key<s[0])||(key>s[M-1]));//看关键字是否在范围内,不在可直接判断出答案
        loca=-1;
        while((bot<=top)&&(flag==1))//折半查找法
        {
            mid=(bot+top)/2;
            if(key==s[mid])
            {
                loca=mid;
                printf("sno.%d,his name is %s\n",key,name[loca]);
                flag=-1;
            }
            else
            {
                if(key>s[mid])//取右半区间
                    bot=mid+1;
                else
                    top=mid-1;//取左半区间
            }
        }
        if(flag==1||loca==-1)
            printf("查无此人\n");
    }
    
    展开全文
  • C语言 第五版 第六章题目1 筛选法求100内的素数 #include <stdio.h> #include <stdlib.h> void main() { int a[100]; int i,j,k,n=0; for(i=2;i<=100;i++) { k=0; for(j=i-1;j > 1;j--)...
  • #include <stdio.h> int main(void) { int x,y; printf("请输入x的值:"); scanf("%d",&x); if(x<1) { y=x; printf("%d\n",y); }else //if(x>=1) 注意这个地方,有没有都可以... printf("%d\n",y=2
  • C语言程序设计第五版谭浩强 第七章答案

    万次阅读 多人点赞 2019-06-16 18:22:35
    C语言程序设计第五版谭浩强著 第七章答案 1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 如有问题欢迎下方留言评论 #include<stdio.h> ...
  • C语言程序设计第五版 谭浩强 第六章 答案

    万次阅读 多人点赞 2019-06-16 00:40:04
    C语言程序设计第五版 谭浩强 第六章 答案 1.用筛选法求100以内的素数。 #include <stdio.h> #include <math.h> void main() { int i,j,a[100],b[100]; for (i=1;i<=100;i++) { a[i]=i+1; for ...
  • C语言教程第五版

    2018-03-09 21:10:29
    清华大学C语言课程课件,计算机语言:人和计算机之间的通讯需要通过某种特定的语言,这种特定的语言就称为计算机语言。
  • C语言 谭浩强 第五版版 书后习题答案 权作参考
  • #include&lt;stdio.h&gt; main() { int x,y,m,n,u,p; scanf("%d%d",&amp;x,&amp;y); m=x; n=y; while(y!=0) { u=x%y; x=y; y=u;...最大公约数=%...
  • #include&amp;lt;stdio.h&amp;gt; main() { int a,b,c; scanf(&quot;%d%d%d&quot;,&amp;amp;a,&amp;amp;b,&amp;amp;c); if(a==b&amp;amp;&amp;...
  • C程序设计第五版 谭浩强 清华大学出版社 课后答案 习题解析 微信扫描小程序二维码查看答案 第一章 程序设计和C语言 第二章 算法—程序的灵魂 第三章 最简单的C程序设计—顺序程序设计 第四章 选择结构程序设计 第...
  • C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言...
  • C语言入门经典第五版

    2017-11-25 09:43:26
    c语言入门经典(第5版)》.((美)霍尔顿(Horton, I.)).[PDF]@ckookC语言入门经典第五版---试读
  • 最新的第五版增加了对C99标准的介绍,更加符合当前C语言学习的需要。  全书共两大部分24章。第一部分讨论了C语言的所有语言特征,包括词法、预处理机制、声明、类型、表达式、语句以及函数等基本语言特性的介绍。第...
  • C语言的基本概念和运行库提供了完整的描述,同时还强调了正确性、完整性和可移植性。
  • 最新的第5增加了对C99标准的介绍,更加符合当前读者学习C语言的需要。  全书分为两大部分,共24章。一部分讨论了C语言的所有语言特征,包括词法、预处理机制、声明、类型、表达式、语句以及函数等基本语言特性...
  • 第五章 1.请画出例5.6中给出的3个程序段的流程图 流程图1: 流程图2: 流程图3: 2.请补充例5. 7程序,分别统计当“fabs(t)>= le- 6”和“fabs(t)> = le- 8”时执行循环体的次数。 fabs(t)>= le- 6 ,...
  • c语言直接在windos上进行编写,帮你理清思路。
  • 两个乒乓球队进行比赛,各出三人。甲队为A,B,C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X,Z比,请编程序找出3对赛车的名单。 #include<...
  • 二分法求下面方程再(-10,10)的根: 2x3-4x2+3x-6=0 二分法是指对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,...

空空如也

1 2 3 4 5 ... 20
收藏数 1,131
精华内容 452
关键字:

c语言第五版

c语言 订阅