C Primer Plus第九章编程练习答案

这篇具有很好参考价值的文章主要介绍了C Primer Plus第九章编程练习答案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出!

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

#include <stdio.h>
double Min(double x, double y)
{
	return x > y ? y : x;
}
int main(void)
{
	double min_num = Min(20.0, 15.0);
	printf("min_num : %lf\n", min_num);

	min_num = Min(15.0, 20.0);
	printf("min_num : %lf\n", min_num);

	return 0;
}

C Primer Plus第九章编程练习答案

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

#include <stdio.h>
void chline(char ch, int i, int j)
{
	for (int m = 0; m < i; m++)
	{
		for (int n = 0; n < j; n++)
		{
			printf("%c ", ch);
		}
		printf("\n");
	}
}
int main(void)
{
	char ch = '0';
	int i = 0, j = 0;

	printf("请输入一个字符:");
	scanf("%c",&ch);

	printf("请输入行数:");
	scanf("%d", &i);
	printf("请输入列数:");
	scanf("%d", &j);

	chline(ch, i, j);

	return 0;
}

C Primer Plus第九章编程练习答案

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

#include <stdio.h>
void chline(char ch, int i, int j)
{
	for (int m = 0; m < j; m++)
	{
		for (int n = 0; n < i; n++)
		{
			printf("%c ", ch);
		}
		printf("\n");
	}
}
int main(void)
{
	char ch = '0';
	int i = 0, j = 0;

	printf("请输入一个字符:");
	scanf("%c",&ch);

	printf("请输入一行中打印字符的个数:");
	scanf("%d", &i);
	printf("请输入指定打印字符的个数:");
	scanf("%d", &j);

	chline(ch, i, j);

	return 0;
}

C Primer Plus第九章编程练习答案

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

#include <stdio.h>
double Reconcile_the_average(double d1, double d2)
{
	return 1.0 / ((1.0 / d1 + 1.0 / d2) / 2.0);
}
int main(void)
{
	double ret = Reconcile_the_average(3.0,4.0);
	printf("ret : %lf\n", ret);

	ret = Reconcile_the_average(4.0, 5.0);
	printf("ret : %lf\n", ret);
	
	return 0;
}

C Primer Plus第九章编程练习答案

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

#include <stdio.h>
void larger_of(double* d1,double* d2)
{
	if (*d1 > *d2)
		*d2 = *d1;
	else
		*d1 = *d2;
}
int main(void)
{
	double d1 = 1.0, d2 = 2.0, d3 = 3.0,d4 = 4.0;

	printf("d1 = %lf,d2 = %lf d3 = %lf,d4 = %lf\n", d1, d2, d3, d4);
	larger_of(&d1, &d2);
	larger_of(&d3, &d4);
	printf("d1 = %lf,d2 = %lf d3 = %lf,d4 = %lf\n", d1, d2, d3, d4);

	return 0;
}

C Primer Plus第九章编程练习答案

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

#include <stdio.h>
void sort(double* d1, double* d2, double* d3)
{
	double temp = 0.0;
	if (*d1 > *d2)
	{
		temp = *d1;
		*d1 = *d2;
		*d2 = temp;
	}
	if (*d1 > *d3)
	{
		temp = *d1;
		*d1 = *d3;
		*d3 = temp;
	}
	if (*d2 > *d3)
	{
		temp = *d2;
		*d2 = *d3;
		*d3 = temp;
	}
}
int main(void)
{
	double d1 = 2.0, d2 = 3.0, d3 = 1.0;

	printf("排序前:d1 = %lf,d2 = %lf,d3 = %lf\n", d1, d2, d3);
	sort(&d1, &d2, &d3);
	printf("排序后:d1 = %lf,d2 = %lf,d3 = %lf\n", d1, d2, d3);

	return 0;
}

C Primer Plus第九章编程练习答案

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

#include <stdio.h>
#include <ctype.h>
int position(char ch)
{
	if (islower(ch))
		return ch - 'a' + 1;
	else if (isupper(ch))
		return ch - 'A' + 1;
	return -1;
}
void get_char_pos(void)
{
	char ch = '0';

	printf("请输入一些字符:");
	while ((ch = getchar()) != EOF)
	{
		if (ch == '\n')
			continue;
		if (position(ch) != -1)
			printf("该字符是一个字母,且位于字母表第%d位\n", position(ch));
		else
		{
			printf("该字符不是一个字母\n");
		}

	}
}
int main(void)
{
	get_char_pos();

	return 0;
}

C Primer Plus第九章编程练习答案

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

#include <stdio.h>
double power(double n, int p)
{
    int i;
    double pow = 1.0;

    if ((0 == p) && (0 == n))
    {
        printf("0 to the 0 undefined, using 1 as the value.\n");
        return pow;
    }
    if (0 == n)
    {
        pow = 0.0;
        return pow;
    }
    if (0 == p)
    {
        return pow;
    }
    if (p > 0)
    {
        for (i = 1; i <= p; i++)
        {
            pow *= n;
        }
        return pow;
    }
    else
    {
        for (i = 1; i <= -p; i++)
        {
            pow *= 1 / n;
        }
        return pow;
    }
}
int main(void)
{
    double x, xpow;
    int exp;

    printf("Enter a number and the integer power");
    printf(" to which\nthe number will be raised. Enter q");
    printf(" to quit.\n");
    while (scanf("%lf%d", &x, &exp) == 2)
    {
        xpow = power(x, exp);
        printf("%.3g to the power %d is %.5g.\n", x, exp, xpow);
        printf("Enter next pair of numbers or q to quit.\n");
    }
    printf("Hope you enjoyed this power trip -- bye!\n");

    return 0;
}

C Primer Plus第九章编程练习答案

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

#include <stdio.h>
double power(double n, int p)
{
    double pow = 1.0;

    if ((0 == p) && (0 == n))
    {
        printf("0 to the 0 undefined, using 1 as the value.\n");
        return pow;
    }
    if (0 == n)
    {
        pow = 0.0;
        return pow;
    }
    if (0 == p)
    {
        return pow;
    }
    if (p > 0)
    {
        return n * power(n, p - 1);
    }
    else
    {
        return power(n, p + 1) / n;
    }
}
int main(void)
{
    double x, xpow;
    int exp;

    printf("Enter a number and the integer power");
    printf(" to which\nthe number will be raised. Enter q");
    printf(" to quit.\n");
    while (scanf("%lf %d", &x, &exp) == 2)
    {
        xpow = power(x, exp);
        printf("%.3g to the power %d is %.5g.\n", x, exp, xpow);
        printf("Enter next pair of numbers or q to quit.\n");
    }
    printf("Hope you enjoyed this power trip -- bye!\n");

    return 0;
}

C Primer Plus第九章编程练习答案

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

#include <stdio.h>
void to_base_n(int x, int base)
{
    int r;

    r = x % base;
    if (x >= base)
    {
        to_base_n(x / base, base);
    }
    printf("%d", r);
    return;
}
int main(void)
{
    int b;
    long int n;

    printf("Please enter a number (q to quit): ");
    while (scanf("%ld", &n) == 1)
    {
        if (n <= 0)
        {
            printf("Illegal data! Please enter again: ");
            continue;
        }
        printf("Please enter a base system number (2 - 10): ");
        while (scanf("%d", &b) != 1 || (b < 2 || b > 10))
        {
            while (getchar() != '\n')
                continue;
            printf("Please enteragain (2 - 10): ");
        }
        printf("%d in %d base system is: ", n, b);
        to_base_n(n, b);
        printf("\nYou can enter a number again (q to quit): ");
    }
    printf("Done.\n");

    return 0;
}

C Primer Plus第九章编程练习答案

11.编写并测试Fibonacci()函数,该函数用循环代替递归计算斐波那契 数。

#include <stdio.h>
void Fibonacci(int len)
{
    int i;
    unsigned long t, x, y;
    x = y = 1;

    for (i = 0; i < len; i++)
    {
        printf("%lu\n", x);
        t = x + y;
        x = y;
        y = t;
    }
    return;
}
int main(void)
{
    int n;
    printf("Please enter a integer (<= 0 or q to quit): ");
    while (scanf("%d", &n) == 1)
    {
        printf("Top %d items of Fibonacci sequence:\n", n);
        Fibonacci(n);
        printf("You can enter again (<= 0 or q to quit): ");
    }
    printf("Done.\n");

    return 0;
}

C Primer Plus第九章编程练习答案文章来源地址https://www.toymoban.com/news/detail-461833.html

到了这里,关于C Primer Plus第九章编程练习答案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C Primer Plus第十四章编程练习答案

    学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 由于使用的是命令行参数常用于linux系统或者vscode,但此代码是运行于vs2022的,测试截图就不弄了。

    2024年02月07日
    浏览(61)
  • C Primer Plus第十六章编程练习答案

    学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 由于使用的是命令行参数常用于linux系统或者vscode,但此代码是运行于vs2022的,测试截图就不弄了。

    2024年02月07日
    浏览(40)
  • C++ Primer第五版_第九章习题答案(51~52)

    练习9.51 设计一个类,它有三个unsigned成员,分别表示年、月和日。为其编写构造函数,接受一个表示日期的string参数。你的构造函数应该能处理不同的数据格式,如January 1,1900、1/1/1990、Jan 1 1900 等。

    2023年04月11日
    浏览(52)
  • C Primer Plus (中文版)第10章编程练习 参考答案(仅供参考~)

    🌴 C Primer Plus第10章编程练习~ 加油加油!🍭 ☘️欢迎大家讨论 批评指正~ 🍎1.修改程序清单10.7的rain.c程序,用指针进行计算(仍然要声明并初始化数组)。计算每年的总降水量、年平均降水量和5年中每月的平均降水量 🍐编写一个程序,初始化一个double类型的数组,然后把

    2024年02月04日
    浏览(52)
  • C Primer Plus 第6版 编程练习 chapter 16

    开发一个包含你需要的预处理定义的头文件。 test.c diceroll.h 两个数的调和平均数这样计算:先得到两数的倒数,然后计算两个倒数的平均值,最后取计算结果的倒数。使用#define指令定义一个宏函数,,执行该运算。编写一个简单的程序测试该宏。 极坐标向量的模(即向量的

    2024年01月19日
    浏览(41)
  • C Primer Plus(第六版)12.9 编程练习 第5题

    #include stdlib.h   #include stdio.h   #include time.h   #define TIMES 100 void bubble_sort(int arr[], int len); int main (void) {     int i;     int roll[TIMES];     srand((unsigned int)time (NULL));     for(i=0;iTIMES;i++)     {         roll[i] = rand()%10+1 ;         printf(\\\"roll[%d]=%dn\\\",i,roll[i]);     }     bubble_s

    2024年01月20日
    浏览(47)
  • C++ Primer (第五版)-第九章 顺序容器

    如何选择合适的容器 迭代器 容器类型成员 列表初始化 赋值和Swap 容器的大小 关系运算符 9.3.1向顺序容器添加元素 访问元素 删除元素 改变容器大小 ### 容器操作可能使迭代器失效 9.5.2、改变string其他的方法 9.5.3 string搜索操作

    2023年04月17日
    浏览(48)
  • C Primer Plus(第六版)13.11 编程练习 第11题

    /* 编写一个程序,接受两个命令行参数。第1个参数是一个字符串,第2个参数是一个文件名。然 后该程序查找该文件,打印文件中包含该字符串的所有行。因为该任务是面向行而不是面向字符 的,所以要使用fgets()而不是getc()。使用标准C库函数strstr() (11.5.7节简要介绍过) 在每

    2024年01月24日
    浏览(41)
  • C Primer Plus(第六版)11.13 编程练习 第6题

    #includestdio.h #define SIZE 40 int is_within(char ch,char str[]); int main(void) {         int i = 0;       char *p;     char ch;     char store[SIZE] = \\\"abcd\\\";          while(ch!=\\\'q\\\')     {         printf(\\\"q to quitn\\\");         scanf(\\\"%c\\\",ch);          while (getchar() != \\\'n\\\')                continue;

    2024年01月17日
    浏览(42)
  • C Primer Plus(第六版)11.13 编程练习 第16题

    #include stdio.h #include string.h int main(int argc, char *argv[])  {     printf(\\\"打印字符串,请输入参数:n文件名 字符串 打印参数n-pt按原样打印n-ut把输入全部转换成大写n-l把输入全部转换成小写n\\\");     int i;     int len = strlen(argv[1]);          if(argc != 3)      {         printf(\\\"Usag

    2024年01月19日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包