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

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

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

1.编写一个程序,创建一个包含26个元素的数组,并在其中储存26个小 写字母。然后打印数组的所有内容。

#include <stdio.h>
int main(void)
{
	char ouput[26];

	for (int i = 0,input = 'a'; input <= 'z';input++,i++)
	{
		ouput[i] = input;
	}
	for (int i = 0; i <26; i++)
	{
		printf("%c ",ouput[i]);
	}
	printf("\n");

	return 0;
}

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

2.使用嵌套循环,按下面的格式打印字符:

$

$$

$$$

$$$$

$$$$$

#include <stdio.h>
int main(void)
{
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j <= i; j++)
		{
			printf("$");
		}
		printf("\n");
	}

	return 0;
}

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

 3.使用嵌套循环,按下面的格式打印字母:

F

FE

FED

FEDC

FEDCB

FEDCBA

注意:如果你的系统不使用ASCII或其他以数字顺序编码的代码,可以 把字符数组初始化为字母表中的字母:

char lets[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

然后用数组下标选择单独的字母,例如lets[0]是‘A’,等等。

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

	return 0;
}

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

4.使用嵌套循环,按下面的格式打印字母:

A

BC

DEF

GHIJ

KLMNO

PQRSTU

如果你的系统不使用以数字顺序编码的代码,请参照练习3的方案解 决。

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

	return 0;
}

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

5.编写一个程序,提示用户输入大写字母。使用嵌套循环以下面金字塔 型的格式打印字母: 

         A

       ABA  

     ABCBA

   ABCDCBA

ABCDEDCBA

打印这样的图形,要根据用户输入的字母来决定。例如,上面的图形是 在用户输入E后的打印结果。 提示:用外层循环处理行,每行使用3个内层循环,分别处理空格、以升序打印字母、以降序打印字母。如果系统不使用ASCII或其他以数字顺序 编码的代码,请参照练习3的解决方案。

#include <stdio.h>
int main(void)
{
	int i, j, num;
	char input,c = 'A';
	printf("请输入一个大写字母:");
	scanf("%c", &input);
	num = input - 'A' + 1;

	for (int i = 1; i <= num; i++)
	{
		for (j = 0; j < num  - i; j++)
		{
			printf(" ");
		}
		for (c = 'A';j < num;c++,j++)
		{
			printf("%c",c);
		}
		for (j = 1,c -= 2; j < i; j++,c--)
		{
			printf("%c",c);
		}
		printf("\n");
	}

	return 0;
}

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

6.编写一个程序打印一个表格,每一行打印一个整数、该数的平方、该 数的立方。要求用户输入表格的上下限。使用一个for循环。

#include <stdio.h>
int main(void)
{
	int input1 = 0;
	int input2 = 0;

	printf("请输入上限:");
	scanf("%d", &input1);
	printf("请输入下限:");
	scanf("%d", &input2);

	for (int i = input2; i <= input1; i++) 
	{
		printf("%d\t%d\t%d\n", i, i * i, i * i * i);
	}

	return 0;
}

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

7.编写一个程序把一个单词读入一个字符数组中,然后倒序打印这个单 词。提示:strlen()函数(第4章介绍过)可用于计算数组最后一个字符的下 标。

#include <stdio.h>
#include <string.h>
int main(void)
{
	char word[20] = "0";

	printf("请输入以一个单词:");
	scanf("%s", word);

	for(int i = strlen(word)-1;i >=0;i--)
	{
		printf("%c", word[i]);
	}
	printf("\n");

	return 0;
}

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

8.编写一个程序,要求用户输入两个浮点数,并打印两数之差除以两数 乘积的结果。在用户输入非数字之前,程序应循环处理用户输入的每对值。

#include <stdio.h>
int main(void)
{
	float f1 = 0.0, f2 = 0.0;

	printf("请输入两个浮点数:");

	while (scanf("%f%f", &f1, &f2) == 2)
	{
		printf("(%.2f-%.2f)/%.2f*%.2f = %.2f\n", f1,f2,f1,f2,(f1-f2)/f1*f2);
		printf("请输入两个浮点数:");
	}

	return 0;
}

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

9.修改练习8,使用一个函数返回计算的结果。

#include <stdio.h>
float cal(float f1, float f2)
{
	return (f1 - f2) / f1 * f2;
}
int main(void)
{
	float f1 = 0.0, f2 = 0.0;

	printf("请输入两个浮点数:");

	while (scanf("%f%f", &f1, &f2) == 2)
	{
		printf("(%.2f-%.2f)/%.2f*%.2f = %.2f\n", f1, f2, f1, f2, cal(f1,f2));
		printf("请输入两个浮点数:");
	}

	return 0;
}

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

10.编写一个程序,要求用户输入一个上限整数和一个下限整数,计算 从上限到下限范围内所有整数的平方和,并显示计算结果。然后程序继续提 示用户输入上限和下限整数,并显示结果,直到用户输入的上限整数小于下 限整数为止。程序的运行示例如下:

Enter lower and upper integer limits: 5 9

The sums of the squares from 25 to 81 is 255

Enter next set of limits: 3 25

The sums of the squares from 9 to 625 is 5520

Enter next set of limits: 5 5

Done

#include <stdio.h>
int main(void)
{
	int input1 = 0;
	int input2 = 0;
	int sum = 0;

	printf("Enter lower and upper integer limits:");
	scanf("%d%d", &input1, &input2);
	while (input1 < input2)
	{
		sum = 0;
		for (int i = input1; i <= input2; i++)
		{
			sum = sum + i * i;
		}
		printf("The sums of the squares from %d to %d is %d\n", input1 * input1, input2 * input2, sum);
		printf("Enter next set of limits:");
		scanf("%d%d", &input1, &input2);
	}
	printf("Done\n");

	return 0;
}

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

11.编写一个程序,在数组中读入8个整数,然后按倒序打印这8个整 数。

#include <stdio.h>
int main(void)
{
	int arr[8] = { 0 };

	for (int i = 0; i < 8; i++)
	{
		scanf("%d", &arr[i]);
	}
	for (int i = 7; i >= 0; i--)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");

	return 0;
}

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

12.考虑下面两个无限序列: 1.0 + 1.0/2.0 + 1.0/3.0 + 1.0/4.0 + ... 1.0 - 1.0/2.0 + 1.0/3.0 - 1.0/4.0 + ... 编写一个程序计算这两个无限序列的总和,直到到达某次数。提示:奇 数个-1 相乘得-1,偶数个-1相乘得1。让用户交互地输入指定的次数,当用 户输入0或负值时结束输入。查看运行100项、1000项、10000项后的总和, 是否发现每个序列都收敛于某值?

#include <stdio.h>
int main(void)
{
	int length = 0;
	double sum = 0.0;

	printf("请输入一个整型数据:");
	scanf("%d", &length);

	while (length > 0)
	{
		sum = 0.0;
		for (int i = 1; i < length; i++)
		{
			sum = sum + 1.0 / i;
		}
		printf("1.0 + ... + 1.0 / %d = %lf\n", length, sum);

		sum = 0.0;
		for (int i = 1; i <= length; i++)
		{
			if (i % 2 == 0)
				sum = sum - 1.0 / i;
			else
				sum = sum + 1.0 / i;
		}
		printf("1.0 - ... + 1.0 / %d = %lf\n", length, sum);

		sum = 0.0;
		for (int i = 1; i <= length; i++)
		{
			if (i % 2 != 0)
				sum = sum + 2 * 1.0 / i;
		}
		printf("1.0 + 1.0 + 2.0/3.0... + 1.0 / %d = %lf\n", length, sum);

		printf("请输入一个整型数据:");
		scanf("%d", &length);
	}

	return 0;
}

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

13.编写一个程序,创建一个包含8个元素的int类型数组,分别把数组元 素设置为2的前8次幂。使用for循环设置数组元素的值,使用do while循环显 示数组元素的值。

#include <stdio.h>
int main(void)
{
	int arr[8] = { 2 };

	for (int i = 1; i < 8; i++)
	{
		arr[i] = arr[i - 1] * 2;
	}

	int i = 7;
	do
	{
		printf("%d ", arr[i]);
	}while(i--);

	return 0;
}

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

14.编写一个程序,创建两个包含8个元素的double类型数组,使用循环 提示用户为第一个数组输入8 个值。第二个数组元素的值设置为第一个数组 对应元素的累积之和。例如,第二个数组的第 4个元素的值是第一个数组前 4个元素之和,第二个数组的第5个元素的值是第一个数组前5个元素之和 (用嵌套循环可以完成,但是利用第二个数组的第5个元素是第二个数组的 第4个元素与第一个数组的第5个元素之和,只用一个循环就能完成任务,不 需要使用嵌套循环)。最后,使用循环显示两个数组的内容,第一个数组显 示成一行,第二个数组显示在第一个数组的下一行,而且每个元素都与第一 个数组各元素相对应。

#include <stdio.h>
int main(void)
{
	double d1[8] = { 0.0 };
	double d2[8] = { 0.0 };
	double sum = 0.0;

	printf("请输入第一个数组的8个值:");
	for (int i = 0; i < 8; i++)
	{
		scanf("%lf", &d1[i]);
	}

	for (int i = 0; i < 8; i++)
	{
		sum += d1[i];
		d2[i] = sum;
	}

	for (int i = 0; i < 8; i++)
	{
		printf("%10lf ", d1[i]);
	}
	printf("\n");
	for (int i = 0; i < 8; i++)
	{
		printf("%10lf ", d2[i]);
	}
	printf("\n");

	return 0;
}

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

 15.编写一个程序,读取一行输入,然后把输入的内容倒序打印出来。 可以把输入储存在char类型的数组中,假设每行字符不超过255。回忆一 下,根据%c转换说明,scanf()函数一次只能从输入中读取一个字符,而且 在用户按下Enter键时scanf()函数会生成一个换行字符(\n)。

#include <stdio.h>
int main(void)
{
	char ch = '0';
	char ouput[255] = "0";
	int i = 0;

	printf("请输入一行字符:");
	while ((ch = getchar()) != '\n')
	{
		ouput[i++] = ch;
	}

	for (int j = i -1; j >= 0; j--)
	{
		printf("%c", ouput[j]);
	}
	printf("\n");

	return 0;
}

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

16.Daphne以10%的单利息投资了100美元(也就是说,每年投资获利相 当于原始投资的10%)。Deirdre以 5%的复合利息投资了 100 美元(也就是 说,利息是当前余额的 5%,包含之前的利息)。编写一个程序,计算需要多少年Deirdre的投资额才会超过Daphne,并显示那时两人的投资额。

#include <stdio.h>
int main(void)
{
	float Daphne_money = 100.0;
	float Deirdre_money = 100.0;
	int count = 0;

	do
	{
		Daphne_money = Daphne_money  + 0.1 * 100.0;
		Deirdre_money = Deirdre_money * 0.05 + Deirdre_money;
		count++;
	} while ((Deirdre_money - Daphne_money) < 0);

	printf("Daphne_money : %f\tDeirdre_money : %f\n", Daphne_money, Deirdre_money);
	printf("所需的年数为:%d\n", count);

	return 0;
}

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

17.Chuckie Lucky赢得了100万美元(税后),他把奖金存入年利率8%的 账户。在每年的最后一天, Chuckie取出10万美元。编写一个程序,计算多 少年后Chuckie会取完账户的钱?

#include <stdio.h>
int main(void) 
{
	float money = 1000000;
	int year = 0;

	while (money >= 0)
	{
		money = 1.08 * money - 100000;
		year++;
    }
	printf("%d年后Chuckie取完账户的钱\n", year);

	return 0;
}

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

18.Rabnud博士加入了一个社交圈。起初他有5个朋友。他注意到他的朋 友数量以下面的方式增长。第1周少了1个朋友,剩下的朋友数量翻倍;第2 周少了2个朋友,剩下的朋友数量翻倍。一般而言,第N周少了N个朋友,剩 下的朋友数量翻倍。编写一个程序,计算并显示Rabnud博士每周的朋友数 量。该程序一直运行,直到超过邓巴数(Dunbar’s number)。邓巴数是粗略 估算一个人在社交圈中有稳定关系的成员的最大值,该值大约是150。

#include <stdio.h>
int main(void)
{
	int num = 5;
	int weeks = 0;

	while (num <= 150)
	{
		num = (num - 1) * 2;
		weeks++;
		printf("第%d周,Rabnud博士有%d的朋友\n", weeks, num);
	}

	return 0;
}

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

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

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

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

相关文章

  • C++ Primer Plus第五章编程练习答案

    答案仅供参考,实际运行效果取决于运行平台和运行软件 1.编写一个要求用户输入两个整数的程序。该程序将计算并输出这两个整数之间包括这两个整数)所有整数的和。这里假设先输入较小的整数。例如,如果用户输入的是2和则程序将出29之间所有整数的和为44 2.使用array对

    2024年02月09日
    浏览(39)
  • C++ primer plus第七章编程练习答案

    1.编写一个程序,不断要求用户输入两个数,直到其中的一个为 0。对于每两个数,程序将使用一个南数来计算它们的调和平均数,并将结果返回给 main(),而后者将报告结果。调和平均数指的是倒数平均值的倒数,计算公式如下: 调和平均数=2.0*xy/(x + y) 2.编写一个程序,要求用

    2024年02月10日
    浏览(32)
  • C Primer Plus(第六版)16.18 编程练习 第3题

    #include stdio.h #include math.h   #define PI 3.14159265358979 struct j{     double len;     double jd; }; struct z{     double x;     double y; }; struct z jtoz(struct j pj); int main(void) {     double hd;     struct j pj = {         sqrt(2.0),//根号2,45度的边长是1          45.0,     };     struct z zj;     z

    2024年02月21日
    浏览(34)
  • 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日
    浏览(29)
  • C Primer Plus(第六版)13.11 编程练习 第10题

    /* 编写一个程序打开一个文本文件,通过交互方式获得文件名。通过一个循环,提示用户输入一个 文件位置。然后该程序打印从该位置开始到下一个换行符之前的内容。用户输入负数或非数值字 符可以结束输入循环。 */ //13.11-10.txt #include stdio.h #include stdlib.h #define MAX 41 int

    2024年01月24日
    浏览(31)
  • C Primer Plus(第六版)13.11 编程练习 第11题

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

    2024年01月24日
    浏览(27)
  • 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日
    浏览(30)
  • C Primer Plus(第六版)16.18 编程练习 第7题

    #include stdio.h #include stdlib.h #include stdarg.h void show_array(const double ar[] ,int n) ; double * new_d_array(int n, ...) ; int main () {     double * p1;     double * p2;     p1 = new_d_array(5, 1.2,2.3, 3.4, 4.5, 5.6);     p2 = new_d_array(4, 100.0, 20.00, 8.08, -1890.0);     show_array(p1,5);     show_array(p2,4);     free(p1)

    2024年02月21日
    浏览(25)
  • C Primer Plus(第六版)13.11 编程练习 第7题

    #include stdio.h #include stdlib.h   #include string.h  #define LEN 40 //abc-1.txt abc-2.txt int main() {     FILE  *in, *in1;        int ch1,ch2,i;     char name[LEN];     char name1[LEN];          fprintf(stdout, \\\"input your filename,name1 name2:\\\");     scanf(\\\"%s %s\\\",name,name1) ;     if ((in = fopen(name, \\\"r\\\")) == NULL)     {    

    2024年01月23日
    浏览(34)
  • C Primer Plus(第六版)11.13 编程练习 第12题

    /* 编写一个程序,读取输入,直至读到EOF,报告读入的单词数、大写字母数、小写字母数、标点 符号数和数字字符数。使用ctype.h头文件中的函数。 */ //测试字符串  //ajskm,dl kdAj,.lfj sjkdl  sdk12lfj !.,fkdj.,.lssd.1a //(ajskm),(dl) (kdAj),.(lfj) (sjkdl)  (sdk)12(lfj) !.,(fkdj).,.(lssd).1(a) #includestdi

    2024年02月02日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包