破壳Ai

  • 编程入门
    • C语言
    • 数据结构及算法基础
  • 应用程序开发
    • C++
    • Windows API编程
    • opengl图形编程
  • 计算机科学与Web
    • Python
    • 编程语言学
    • 信息理论
    • 人工智能
  • 计算机原理
    • 汇编
    • 系统编程
    • 操作系统
    • 编译原理
    • 网络
  • 关于
    • 关于
    • 友链
    • 支持小站
    • 留言
忘记时间 专注当下
  1. 首页
  2. 编程入门
  3. C语言
  4. 正文

C Primer Plus 第六版 编程练习第九章答案 最新出炉

2020-10-23 1039点热度 0人点赞 0条评论

寻找志同道合的学习伙伴,请访问我的个人网页.
该内容同步发布在CSDN和耳壳网.

提示

8—11题是递归部分,为赶进度暂时不做,后面有时间再补上,持续更新。

1、设计一个函数min(x, y),返回两个double类型值的较小值。在一个简单的驱动程序中测试该函数。

// 9.1
#include<stdio.h>
double min(double x, double y);

int main(void)
{
    double num1, num2;

    printf("Enter two numbers: ");
    scanf("%lf %lf", &num1, &num2);
    printf("The minist number is %g", min(num1, num2));
}

double min(double x, double y)
{
    return x < y ? x : y;
}

2、 设计一个函数chline(ch, i, j),打印指定的字符j行i列。在一个简单的驱动程序中测试该函数

// 9.2
#include<stdio.h>
void chline(ch, i, j);

int main(void)
{
    char ch;
    int row, column;

    printf("Enter a character: ");
    ch = getchar();
    printf("Enter two integer: ");
    scanf("%d %d", &row, &column);
    chline(ch, row, column);
}

void chline(ch, i, j)
{
    for(int row = 0; row < i; row++){
        for(int column = 0; column < j; column++)
            putchar(ch);
        putchar('\n');
    }
}

3、编写一个函数,接受3个参数:一个字符和两个整数。字符参数是待打印的字符,第1个整数指定一行中打印字符的次数,第2个整数指定打印指定字符的行数。编写一个调用该函数的程序。

和第二题一样,就不做了。

4、两数的调和平均数这样计算:先得到两数的倒数,然后计算两个倒数的平均值,最后取计算结果的倒数。编写一个函数,接受两个double类型的参数,返回这两个参数的调和平均数。

和第一题差不多。

5、编写并测试一个函数larger_of(),该函数把两个double类型变量的值替换为较大的值。例如, larger_of(x, y)会把x和y中较大的值重新赋给两个变量。

// 9.5
#include<stdio.h>
void larger_of(double * num1, double * num2);

int main(void)
{
    double num1, num2;

    printf("Enter two numbers: ");
    scanf("%lf %lf", &num1, &num2);
    printf("num1 = %g, num2 = %g\n", num1, num2);
    larger_of(&num1, &num2);
    printf("num1 = %g, num2 = %g", num1, num2);
}

// void larger_of(double * num1, double * num2)
// {
//     if(*num1 >= *num2)
//         *num2 = *num1;
//     else
//         *num1 = *num2;
// }

void larger_of(double * num1, double * num2)
{
    *num1 > *num2 ? (*num2 = *num1) : (*num1 = *num2) 
}

6、编写并测试一个函数,该函数以3个double变量的地址作为参数,把最小值放入第1个变量,中间值放入第2个变量,最大值放入第3个变量。

// 9.6
#include<stdio.h>
void sort_of(double * num1, double * num2, double * num3);

int main(void)
{
    double num1, num2, num3;

    printf("Enter three numbers: ");
    scanf("%lf %lf %lf", &num1, &num2, &num3);
    printf("num1 = %g, num2 = %g, num3 = %g\n", num1, num2, num3);
    sort_of(&num1, &num2, &num3);
    printf("num1 = %g, num2 = %g, num3 = %g\n", num1, num2, num3);
}

void sort_of(double * num1, double * num2, double * num3)
{
    double max, min, sum;

    sum = *num1 + *num2 + *num3;
    //找出最大值
    *num1 > *num2 ? (max = *num1) : (max = *num2);
    if(*num3 > max)
        max = *num3;
    //找出最小值
    *num1 < *num2 ? (min = *num1) : (min = *num2);
    if(*num3 < min)
        min = *num3;
    *num1 = min;
    *num3 = max;
    *num2 = sum - max - min;
}

7、编写一个函数,从标准输入中读取字符,直到遇到文件结尾。程序要报告每个字符是否是字母。如果是,还要报告该字母在字母表中的数值位置。例如,c和C在字母表中的位置都是3。合并一个函数,以一个字符作为参数,如果该字符是一个字母则返回一个数值位置,否则返回-1。

// 9.7
#include<stdio.h>
//#include<ctype.h>
int letter_location(char ch);

int main(void)
{
    char ch;
    int res;

    printf("Enter a character: ");
    while((ch = getchar()) != EOF){ 
        // ch = getchar();
        // res = letter_location(ch);
        if(-1 == (res = letter_location(ch)))
            printf("%c is not a letter.\n", ch);
        else
            printf("%c: %d\n", ch, res + 1);
        printf("Enter a character: ");
        while(getchar() != '\n')
            continue;
    }

}

int letter_location(char ch)
{
    int ans;

    if(ch >= 'a' && ch <= 'z' )
        ans = ch - 'a';
    else if(ch >= 'A' && ch <= 'Z')
        ans = ch - 'A';
    else
        ans = -1;

    return ans;
}

//或者直接用 ctype.h 函数
// int letter_location(char ch)
// {
//     int ans;

//     if(isalpha(ch))
//         ans = tolower(ch) - 'a' + 1;
//     else 
//         ans = -1;
//     return ans;
// }

8、第6章的程序清单6.20中,power()函数返回一个double类型数的正整数次幂。改进该函数,使其能正确计算负幂。另外,函数要处理0的任何次幂都为0,任何数的0次幂都为1(函数应报告0的0次幂未定义,因此把该值处理为1)。要使用一个循环,并在程序中测试该函数。

9、使用递归函数重写编程练习8。

10、为了让程序清单9.8中的to_binary()函数更通用,编写一个to_base_n()函数接受两个在2~10范围内的参数,然后以第2个参数中指定的进制打印第1个参数的数值。例如,to_base_n(129, 8)显示的结果为201,也就是129的八进制数。在一个完整的程序中测试该函数。

11、编写并测试一个函数FIbonacci(),在该函数中使用循环代替递归完成斐波纳契数列的计算。

寻找志同道合的学习伙伴,请访问我的个人网页.
该内容同步发布在CSDN和耳壳网.

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: C
最后更新:2020-10-23

Guyue

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

关注公众号
Donation

Yahaha,you found me!

文章目录
  • 提示
    • 1、设计一个函数min(x, y),返回两个double类型值的较小值。在一个简单的驱动程序中测试该函数。
    • 2、 设计一个函数chline(ch, i, j),打印指定的字符j行i列。在一个简单的驱动程序中测试该函数
    • 3、编写一个函数,接受3个参数:一个字符和两个整数。字符参数是待打印的字符,第1个整数指定一行中打印字符的次数,第2个整数指定打印指定字符的行数。编写一个调用该函数的程序。
    • 4、两数的调和平均数这样计算:先得到两数的倒数,然后计算两个倒数的平均值,最后取计算结果的倒数。编写一个函数,接受两个double类型的参数,返回这两个参数的调和平均数。
    • 5、编写并测试一个函数larger_of(),该函数把两个double类型变量的值替换为较大的值。例如, larger_of(x, y)会把x和y中较大的值重新赋给两个变量。
    • 6、编写并测试一个函数,该函数以3个double变量的地址作为参数,把最小值放入第1个变量,中间值放入第2个变量,最大值放入第3个变量。
    • 7、编写一个函数,从标准输入中读取字符,直到遇到文件结尾。程序要报告每个字符是否是字母。如果是,还要报告该字母在字母表中的数值位置。例如,c和C在字母表中的位置都是3。合并一个函数,以一个字符作为参数,如果该字符是一个字母则返回一个数值位置,否则返回-1。
    • 8、第6章的程序清单6.20中,power()函数返回一个double类型数的正整数次幂。改进该函数,使其能正确计算负幂。另外,函数要处理0的任何次幂都为0,任何数的0次幂都为1(函数应报告0的0次幂未定义,因此把该值处理为1)。要使用一个循环,并在程序中测试该函数。
    • 9、使用递归函数重写编程练习8。
    • 10、为了让程序清单9.8中的to_binary()函数更通用,编写一个to_base_n()函数接受两个在2~10范围内的参数,然后以第2个参数中指定的进制打印第1个参数的数值。例如,to_base_n(129, 8)显示的结果为201,也就是129的八进制数。在一个完整的程序中测试该函数。
    • 11、编写并测试一个函数FIbonacci(),在该函数中使用循环代替递归完成斐波纳契数列的计算。

COPYRIGHT © 2019-2022 破壳AI. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备19036001号