C Primer Plus(第六版)第六章 编程练习答案
Posted 水番正文
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C Primer Plus(第六版)第六章 编程练习答案相关的知识,希望对你有一定的参考价值。
前言:由于不是太复杂,第六章的程序我就全部集成在一个程序了,仅供参考,新手勿喷。
(绷不住了
从这章开始没有全部打在同一个里面了,第一次上传没有优化内容(后续优化,毕竟我都懒得上传wp~~~
CH06 Code answer 1-6:
#include<stdio.h>
int main(void)
{
int i,j,x,y,z;
printf("6.16.1\\n");
char arr1[26];
for(i=0;i<26;i++)
{
arr1[i] = 97+i;
}
printf("%s\\n",arr1); //打印整个数组,传参只用名
printf("\\n");
printf("6.16.2\\n");
for(i=0;i<5;i++)
{
for(j=0;j<=i;j++)
{
printf("$");
}
printf("\\n");
}
printf("\\n");
printf("6.16.3\\n");
for(i=1;i<=6;i++)
{
for(j=0;j<i;j++)
{
printf("%c",70-j);
}
printf("\\n");
}
printf("\\n");
printf("6.16.4\\n");
int n3=65;
for(i=1;i<=6;i++)
{
for(j=1;j<=i;j++)
{
printf("%c",n3++);
}
printf("\\n");
}
printf("\\n");
printf("6.16.5\\n");
int n5;
scanf("%c",&n5);
int count = (n5-64)*2-1;
for(i=1;i<=n5-64;i++)
{
for(x=0;x<n5-65+(i-1)*-1;x++) //通项公式a1+(n-1)*d a1=n5-64,d=-1
{
printf(" ");
}
for(y=65;y<=64+i;y++)
{
printf("%c",y);
}
for(z=64+i-1;z>=65;z--)
{
printf("%c",z);
}
for(x=0;x<n5-65+(i-1)*-1;x++)
{
printf(" ");
}
printf("\\n");
}
printf("\\n");
printf("6.16.6\\n");
int n1,n2;
scanf("%d",&n1);
scanf("%d",&n2);
printf("整数: 平方: 立方: \\n");
for(i=n1;i<=n2;i++)
{
printf("%-15d%-15d%-15d\\n",i,i*i,i*i*i);
}
printf("\\n");
}
CH06 Code answer 7-12:
#include<stdio.h>
#include<string.h>
float Calculation(float a,float b);
double Power(double n, double p);
int main(void)
{
int i,j;
double x,y,z;
printf("6.16.7\\n"); //是否可以让用户输入一个字符数组,现在的问题是不确定个数
char str7[] = "BAROQUE"; //B A R O Q U E \\0
int str7_len = strlen(str7)-1; //返回的是\\0的下标
for(i=str7_len;i>=0;i--)
{
printf("%c",str7[i]);
}
printf("\\n\\n");
printf("6.16.8\\n");
float a8,b8;
printf("1.0请输入两值");
while(scanf("%f%f",&a8,&b8) == 2)
{
printf("%f",(a8-b8)/a8*b8);
printf("请输入两值(输入q退出):");
}
printf("\\n");
printf("6.16.9\\n");
char test9;
printf("2.0请输入两值");
scanf("%c",&test9); //于是这边scanf用于接收缓冲区的q,下面的scanf就可以用
while(scanf("%f%f",&a8,&b8) == 2) //上面的程序输入q退出后,后导致缓冲区是等待输入的q
{ //于是这边的scanf直接不成立跳过
printf("%f",Calculation(a8,b8));
printf("请输入两值(输入q退出):");
}
printf("\\n");
printf("6.16.10\\n");
char test10;
scanf("%c",&test10);
int a10,b10;
int sum10 = 0;
printf("Enter lower and upper integer limits:");
while(scanf("%d%d",&a10,&b10) == 2,b10 > a10)
{
for(i=a10;i<=b10;i++)
{
sum10 += i*i;
}
printf("The sums of the squares from %d to %d is %d\\n",a10*a10,b10*b10,sum10);
printf("Enter next set of limits:");
}
printf("\\n");
printf("6.16.11\\n");
int arr11[8];
printf("输入8个数:");
for(i=0;i<=7;i++)
{
scanf("%d",&arr11[i]); //注意int类型数组要用&取地址
}
for(j=7;j>=0;j--)
{
printf("%d",arr11[j]);
}
printf("\\n\\n");
printf("6.16.12\\n");
double sum;
int n;
while(scanf("%d",&n) == 1)
{
for(x = 1;x <= n;x++)
{
sum += 1/x; //注意!!!原来用的i是Int型1/i怎么都出不来
//把变量换成浮点型float就可以取1/x的值
}
printf("1.0 + 1.0/2.0 + 1.0/3.0 +... = %lf\\n",sum);
sum = 0;
for(y = 1;y <= n;y++)
{
sum += Power(-1,y+1) * 1/y; //不让用指数!!!所以要自写幂指函数
}
printf("1.0 - 1.0/2.0 + 1.0/3.0 -... = %lf\\n",sum);
sum = 0;
}
printf("\\n");
}
float Calculation(float a,float b)
{
float c;
c = (a-b)/a*b;
return c;
}
double Power(double n,double p)
{
double pow = 1; //承载的数
int i;
for(i=1 ; i<= p;i++)
pow *= n;
return pow;
}
CH06 Code answer 13-18:
#include<stdio.h>
#include<string.h>
double Power(double n,double p);
int main(void)
{
int i,j,x,y,z;
printf("6.16.13\\n");
int arr1[8];
for(i=0;i<8;i++)
{
arr1[i] = Power(2,i);
}
i = 0;
do
{
printf("%d ",arr1[i++]); //每次输出完,i进行判断,就行for循环一样
}while(i<8);
printf("\\n\\n");
printf("6.16.14\\n");
double arr2[8],arr3[8];
printf("请输入8个值");
for(i=0;i<8;i++)
{
scanf("%lf",&arr2[i]);
}
arr3[0]=arr2[0];
for(j=1;j<8;j++)
{
arr3[j] = arr3[j-1] + arr2[j];
}
for(x=0;x<8;x++)
{
printf("%-10lf",arr2[x]);
}
printf("\\n");
for(x=0;x<8;x++)
{
printf("%-10lf",arr3[x]);
}
printf("\\n\\n");
printf("6.16.15\\n");
char arr4[255];
scanf("%s",arr4);
for(i=strlen(arr4)-1;i>=0;i--)
{
printf("%c",arr4[i]);
}
printf("\\n\\n");
printf("6.16.16\\n");
int DEmoney=0,DAmoney=0;
for(i=1;DEmoney<=DAmoney;i++)
{
DEmoney += (DEmoney+100)/20;
DAmoney += 10;
}
printf("%d年,DAmoney is %d,DEmoney is %d;",i-1,DAmoney,DEmoney);
printf("\\n\\n");
printf("6.16.17\\n");
int count=100;
for(i=1;count>=0;i++)
{
count += count*0.08 -10;
}
printf("%d年,Count is no money.",i-1);
printf("\\n\\n");
printf("6.16.18\\n");
int friends=5;
for(i=1;friends<=150;i++)
{
friends = (friends-i)+(friends-i);
}
printf("Rabnud博士在第%d周超过了邓巴数。",i-1);
printf("\\n");
return 0;
}
double Power(double n,double p)
{
int pow = 1;
int i;
for(i=1,pow=1;i<=p;i++)
{
pow *= n;
}
return pow;
}
以上是关于C Primer Plus(第六版)第六章 编程练习答案的主要内容,如果未能解决你的问题,请参考以下文章