C Primer Plus(第六版)第六章编程练习

6.2

编写一个嵌套循环,按下面的格式打印字符:

$

$$

$$$

$$$$

$$$$$

#include <stdio.h>

int main(void)
{
	int i = 0;

	while (i++ < 5)
	{
		int j = 0;

		while (j++ < i)
		{
			printf("$");
		}
		printf("\n");
	}
	
	return 0;
}

6.3

编写一个嵌套循环,按下面的格式打印字符

F

FE

FED

FEDC

FEDCB

FEDCBA

#include <stdio.h>

int main(void)
{
	int i = 0;

	while (i++ < 6)
	{
		int j = 0;
		char ch = 'F';

		while (j++ < i)
		{
			printf("%c", ch--);
		}
		printf("\n");
	}
	
	return 0;
}

6.5

编写一个程序,输入一个字母后打印一个金字塔

如:输入A,打印:

          A

        ABA

      ABCBA

   ABCDCBA

ABCDEDCBA

#include <stdio.h>

int main(void)
{
	int i = 0;
	char ch;

	printf("Enter a word:>");
	scanf_s("%c", &ch, 1);
	while (i++ < 5)
	{
		int j = 1, k = 5;
		int c = ch;

		while (k > i)
		{
			putchar(' ');//这个循环打印每行的空格
			k--;
		}
		while (j < i)
		{
			printf("%c", c++);//打印前半段
			j++;
		}
		while (j > 0)
		{
			printf("%c", c--);//打印后半段
			j--;
		}
		printf("\n");
	}
	
	return 0;
}

6.6

使用 for 循环打印一个表格,一行打印一个整数、该数的平方、该数的立方,用户输入表格的上下限

#include <stdio.h>
int main(void)
{
    int a, b, c;

    printf("请输入下限:>");
    scanf_s("%d",&b);
	printf("请输入上限:>");
	scanf_s("%d",&a);
    for(c = b; c < a + 1; c++)
	{
		printf("%5d %5d %5d\n", b, b * b, b * b * b);
		b++;
	}
               
    return 0;
}

6.7

把一个单词倒序排列

#include <stdio.h>
#include <string.h>

int main(void)
{
	int start, end;
	char word[10];

	printf("Enter a word:>");
	scanf_s("%s", word, 10);
	end = strlen(word) - 1;
	for (start = 0; start < end + 1; start++)
	{
		printf("%c",word[end - start]);
	}

	return 0;
}

6.8 & 6.9

输入两个浮点数,用函数输出两数相减除以两数之积

#include <stdio.h>

float compute(float a, float b)
{
	float c;
	if (a > b)
	{
		return (a - b) / (a * b);
	}
	else
	{
		return (b - a) / (a * b);
	}
}
int main(void)
{
	float a, b;

	while (1)
	{
		printf("Enter two floating-point number:>");
		scanf_s("%f %f", &a, &b);
		printf("the outcome is: %f\n", compute(a, b));
	}
	
	return 0;
}

6.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 lower, upper, time, i, sum;

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

	return 0;
}

6.11

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

#include <stdio.h>

int main(void)
{
    int arr[8] = { 0 };
    int i = 0;

    printf("Enter eight numbers:>");
    scanf_s("%d %d %d %d %d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4], &arr[5], &arr[6], &arr[7]);
    printf("The numbers:");
    for (i = 8; i > 0; i--)
    {
        printf("%d ", arr[i - 1]);
    }

    return 0;
}

6.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+……

求计算到100项、1000项、10000项的结果

#include <stdio.h>

int main(void)
{
	float n, sum;

	sum = 0;
	for (n = 0; n < 100; n++)
	{
		sum += 1 / (n + 1);
	}
	printf("The first is(100): %f\n", sum);
	sum = 0;
	for (n = 0; n < 100; n++)
	{
		if ((int)n % 2 == 0)
		{
			sum += 1 / (n + 1);
		}
		else
		{
			sum -= 1 / (n + 1);
		}
	}
	printf("The second is(100): %f\n", sum);
	sum = 0;
	for (n = 0; n < 1000; n++)
	{
		sum += 1 / (n + 1);
	}
	printf("The first is(1000): %f\n", sum);
	sum = 0;
	for (n = 0; n < 1000; n++)
	{
		if ((int)n % 2 == 0)
		{
			sum += 1 / (n + 1);
		}
		else
		{
			sum -= 1 / (n + 1);
		}
	}
	printf("The second is(1000): %f\n", sum);
	sum = 0;
	for (n = 0; n < 10000; n++)
	{
		sum += 1 / (n + 1);
	}
	printf("The first is(10000): %f\n", sum);
	sum = 0;
	for (n = 0; n < 10000; n++)
	{
		if ((int)n % 2 == 0)
		{
			sum += 1 / (n + 1);
		}
		else
		{
			sum -= 1 / (n + 1);
		}
	}
	printf("The second is(10000): %f\n", sum);

	return 0;
}

6.13

创建一个有8个元素的数组,用for为元素赋值为2的前8次幂,用do while显示出来

#include <stdio.h>

int main(void)
{
	int n;
	int arr[8] = { 0 };

	arr[0] = 2;
	for (n = 1; n < 8; n++)
	{
		arr[n] = 2 * arr[n - 1];
	}
	n = 0;
	do
	{
		printf("%d ", arr[n]);
		n++;
	} while (n < 8);

	return 0;
}

6.14

编写一个程序,创建两个有8个元素的double类型数组,第一个数组元素值由用户输入,第二个数组的值由第一个数组的值相加得来,如:第二个数组第3个元素的值=第一个数组前3个元素的和,第二个数组第4个元素的值=第一个数组前4个元素的和……

#include <stdio.h>

int main(void)
{
	double arr1[8] = { 0 };
	double arr2[8] = { 0 };
	int i,j, k;

	printf("Enter eight numbers:>");
	scanf_s("%lf %lf %lf %lf %lf %lf %lf %lf", &arr1[0], &arr1[1], &arr1[2], &arr1[3], &arr1[4], &arr1[5], &arr1[6], &arr1[7]);
	for (i = 0; i < 8; i++)
	{
		for (j = 0; j < i + 1; j++)
		{
			arr2[i] += arr1[j];
		}
	}
	for (k = 0; k < 8; k++)
	{
		printf("%lf ", arr1[k]);
	}
	printf("\n");
	for (k = 0; k < 8; k++)
	{
		printf("%lf ", arr2[k]);
	}
	printf("\n");

	return 0;
}

6.15

输入一个字符串(char),倒序打印出来

#include<stdio.h>

int main(void)
{
	char str[256];
	int i = 0;

	printf("Enter the string:>");
	do
	{
		scanf_s("%c", &str[i], 1);
		i++;
	} while (str[i - 1] != '\n');
	while (i > 0)
	{
		printf("%c", str[i - 1]);
		i--;
	}

	return 0;
}

6.16

A以10%的单利息投资了100刀(每年利息=原始投资*10%),B以5%的复合利息投资了100刀(每年利息=当前余额*5%),多少年后B的投资额会超过A

#include <stdio.h>

int main(void)
{
	float A = 100, As = 100, B = 100;
	int y = 0;

	while (B <= As)
	{
		y++;
		As += A * 0.1;
		B += B * 0.05;
	}
    printf("%d\n", y);

	return 0;
}

6.17

CL得到了100万美刀,存入年利率8%的银行,每年末取出10万刀,多少年后取出

#include <stdio.h>

int main(void)
{
	float CL = 1000000;
	int y = 0;

	while (CL > 0)
	{
		y++;
		CL += CL * 0.08;
		CL -= 100000;
	}
	printf("%d\n", y);

	return 0;
}

6.18

Dr.R一开始有5个朋友,第一周他少了1个朋友,剩下的朋友数量翻倍;第二周少了2个朋友,剩下的朋友数量翻倍;第N周少了N个朋友,剩下的朋友数量翻倍。计算第几周他的朋友超过了150位

#include <stdio.h>

int main(void)
{
	int R = 5;
	int w = 0;

	while (R < 150)
	{
		w++;
		R = (R - 1) * 2;
	}
	printf("%d\n", w);

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《C Primer Plus第六版》是一本面向初学者的C语言教材,由Stephen Prata撰写。这本书深入浅出地介绍了C语言的基本概念、语法和应用,给读者提供了扎实的编程基础。 该书共分为27章,每章都有清晰的目标、易于理解的示例和练习题。从第一章的入门介绍开始,到最后一章的高级主题讨论,书中的内容依次递进,系统完整地覆盖了C语言的方方面面。本书有助于读者逐步掌握C语言的基础知识,从简单的输出语句到复杂的函数调用和指针使用。 《C Primer Plus第六版》的特点是其清晰的讲解风格和丰富的实例。作者通过通俗易懂的语言和生动形象的例子,帮助读者理解和掌握C语言的各种概念和语法。此外,书中还提供了许多练习题和编程项目,供读者巩固所学知识和提高编程能力。 作为一本经典的C语言教材,《C Primer Plus第六版》被广泛用于学校和个人学习。它不仅适用于初学者,也对有一定编程基础的读者有所帮助。读者通过学习本书,可以建立起对C语言编程的扎实基础,为深入学习其他编程语言打下坚实的基础。 综上所述,《C Primer Plus第六版》是一本权威、经典的C语言教材,通过清晰的讲解和丰富多样的示例帮助读者深入理解C语言的基本概念和应用。无论是初学者还是有一定编程基础的读者,都可以从中获益,打下良好的编程基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值