C primer plus 第六版第六章答案

现附上第六章答案,由于嵌套引用较繁琐,故瑕疵较多,欢迎指正交流

//6.16.1

//6.16.1储存26个小写字母 
# include <stdio.h>
int main(void)
{
	int i;
	int k;
	char ch[26];
	
	for (i = 0,k = 1; i < 26;)
	{
		printf("enter the %d character\n", k++);
		scanf("%c", &ch[i++]);
		getchar();   //清楚缓冲区的回车符 
	}	
	for (i = 0, k = 1; i < 26;)
		printf("%c", ch[i++]);
		
	return 0;
}

//6.16.2

//6.16.2按格式打印字符$ 
# include <stdio.h>
int main(void)
{
	char c = '$';
	int i,j;
	
	for (i = 1; i <= 5; i++)
	{
		for (j = 1; j <= i; j++)
			printf("%c", c);
		printf("\n");
	}		
	return 0;
}

//6.16.3

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

//6.16.4

//6.16.4嵌套循环 
# include <stdio.h>
int main(void)
{
	char ch = 'A';
	int i;
	int j;
	
	for (i = 1; i <= 6; i++)
	{
		for (j = 1; j <= i; j++)
			printf("%c", ch++);
		printf("\n");	
	}
		
	return 0;
}

//6.16.5

//6.16.5金字塔型 输入的字母不局限于A 
# include <stdio.h>
int main(void)
{
	char bh;//确定输入的字符和打印行数 
	char ch = 'A';//利用A依次打印其他字符 
	int   i;//规范行数 
	int   j;//规范空格数 
	int   k;//规范升序打印字母 
	int   l;//规范降序打印字母 
	int   rows;//确定行数 
	printf("Please enter a character\n");
	scanf("%c", &bh);
	
	rows = (int)(bh - 'A' + 1);//行数计算 
	ch = ch - 1; //去除自增符号带来的影响 
 	
	for(i = 1; i <= rows ; i++ )
	{
		for (j = 1; j <= rows - i; j++)
			printf(" ");
		for (k = 1; k <= i; k++)	
			printf("%c", ++ch);
		ch = ch - 1;//去除自增符号带来的影响 
		for (l = 1; l <= i - 1; l++)
			printf("%c", ch--);	
		printf("\n");
	}	
	return 0;
}

//6.16.6

//6.16.6输入上下限 
# include <stdio.h>
int main(void)
{
	int lower, higher;

	printf("Please enter a lower number\n");
	scanf("%d", &lower);
	printf("Please enter a higher number\n");
	scanf("%d", &higher);
	printf("n        square   cube     \n");
	
	for (; lower <= higher; lower++)
		{
		printf("%-9d%-9d%-9d\n", lower, lower * lower, lower * lower * lower);					
		}
	return 0;
}

//6.16.7

//倒序打印单词 
# include <stdio.h>
int main(void)
{
	char mit[20];
	int i,j;
	i = 0;
	
	printf("请输入一个单词:\n");
    scanf("%s", &mit);
	printf("%s\n", mit);
	
	
	for (j = strlen(mit) - 1; j>=0; j-- )
		printf("%c", mit[j]);
	return 0;
}

//6.16.8

//6.16.8输入浮点数 
# include <stdio.h>
int main(void)
{
	float a1;
	float a2;
	
	printf("Please enter two float numbers\n");
	while(scanf("%f %f", &a1, &a2) == 2)
	
	printf("result: %f\n", (a1 - a2)/(a1 * a2));	
	printf("q to quit\n");			
	} 	
	return 0;
}

//6.18.9

//6.16.9修改练习八 
# include <stdio.h>
float a3(float a1, float a2);
int main(void)
{
	float a1,a2;
	float a4;
	printf("Please enter two float numbers\n");
		
	while(scanf("%f %f", &a1, &a2) == 2)
	{
		a4 = a3(a1, a2);//返回值即是函数a3return回来的数 
		printf("result: %f\n", a4);
		printf("q to quit\n");
	}
	return 0; 
}
	float a3(float a1, float a2)
	{
		float b;
		b = (a1 - a2)/(a1 * a2);
		return b;
	}

//6.18.10

//输入一个上限整数和一个下限整数,计算中间所有整数平方和 
# include <stdio.h>
int main(void)
{
	int i, j, k;//k作为中间媒介 
	int sum;
	
	printf("Please enter lower and integer limits:");
	scanf("%d %d", &i, &j);
	while(i < j)
	{
		k = j - i + 1;
		for(sum = 0; i <= j; i++)
		{
			sum = sum + i * i;
		}
		printf("The sums of the squares from %d to %d is %d\n",(j - k +1)*(j - k + 1) , j * j, sum);
		printf("Enter next set of limits: ");
		scanf("%d %d", &i, &j);
	} 
	printf("Done");
	return 0;
}

//6.18.11

//读入8个整数,倒序打印 
# include <stdio.h>
int main(void)
{
	int num[8];
	int i, j, k;//k帮助用户识别输入到第几个数 
	
	for (i = 0, j = 8, k = 1; i < j; i++)
		{
		printf("Please enter the %d number\n", k++);	
		scanf("%d", &num[i]);
		getchar();	
		}
	i -= 1;	  //去除上一个for循环时多加的1 
	for (; 0 <= i; i--)
		printf("%d ", num[i]);
	
	return 0;
}

//6.18.12

//6.18.2
# include <stdio.h>
# include <math.h>
int main(void)
{
	int i,j;
	float sum1 = 0;
	float sum2 = 0; 
	printf("Please enter the higher number\n");
	scanf("%d", &j);
	for (i = 1;i <= j;i++)
	{
		sum1 += 1.0/i;
		sum2 += -(1.0/ i * pow(-1,i));
	}
	printf("The sum1 is %f\n", sum1);
	printf("The sum2 is %f\n", sum2);	

	return 0;
}
//sum1不收敛,sum2收敛于0.7左右 

//6.18.13

//6.18.13
# include <stdio.h>
# include <math.h>
int main(void)
{
	int num[8];
	int i;
	for (i = 0; i < 8; i++)
	{
		num[i] = pow(2,i);
	}
	i =0;
	do
	{
		printf("num[%d] = %d\n", i, num[i]);
		i++;
	}while(i < 8);
	
	return 0;
}

//6.18.14

//6.18.14
# include <stdio.h>
int main(void)
{
	double num1[8];
	double num2[8];
	double sum = 0;
	int i, k;
	
	for(i = 0, k = 1; i < 8; i++)
	{
		printf("Please enter the %d number\n", k++);
		scanf("%lf", &num1[i]);
		getchar();
	}
	for(i = 0; i < 8; i++)
	{
		sum = sum + num1[i];
		num2[i] = sum;
	}
	for(i = 0; i < 8; i++)
	{
		printf("num1[%d] = %lf", i, num1[i]);		
	}
	printf("\n"); 
	for(i = 0; i < 8; i++)
	{
		printf("num2[%d] = %lf", i, num2[i]);	 
	}
	return 0;
}

//6.18.15

//6.16.15倒序排列 
# include <stdio.h>
# include <string.h>//提供strlen()函数 
int main(void)
{
	char ch[255];
	int i;
	int k;
	
	printf("Please enter the line character\n");
	scanf("%s", ch);
	
	k = strlen(ch) - 1;//数组后有个占位符/0 
	for (i = 0; i <= k; k--)
		printf("%c", ch[k]);
	return 0;
}

//6.18.16

//6.18.16
# include <stdio.h>
# define ORIGIN 100
int main(void)
{
	float interest1 = 0.1;
	float interest2 = 0.05;
	float daphne = 100;
	float deirdre = 100;
	int i;
		
	for (i = 1; deirdre <= daphne; i++)
	{
		daphne = ORIGIN + ORIGIN * interest1 * i;	
		deirdre= deirdre + deirdre * interest2;
	}
	i = i - 1;//for循环后i会多自增1 
	printf("the %d year Deirdre(%f) more than Daphne(%f)", i, deirdre, daphne);
	
	return 0;
}

//6.18.17

//6.18.17
# include <stdio.h>
# define LUCK 100
# define interest 0.08
int main(void)
{
	int years;
	float balance;
	
	balance = LUCK;
	for (years = 1; balance > 0; years++)
	{
		balance = balance + balance * interest;
		balance = balance - 10;
	}
	years = years - 1; 
	printf("the %d year", years);
	
	return 0;
}

//6.18.18

//6.18.18
# include <stdio.h>
# define begin 5
int main(void)
{
	int i = begin;
	int j;
	
	for (j = 1; i < 150; j++)
		{
		i = i - j;
		i = i * 2;	
		}	
	j = j - 1; 
	printf("the %d week", j);
	
	return 0;
}

如有意见,欢迎交流

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值