第六章答案 c primer plus

 6.1 编写一个程序,创建一个具有26个元素的数组,并在其中存储26个小写字母,并让该程序显示该数组的内容.

#include <stdio.h>

int main(void)
{
 char a[26] = {'a', 'b', 'c', 'd', 'e', 'f',
     'g', 'h', 'i', 'j', 'k', 'l',
     'm', 'n', 'o', 'p', 'q', 'r',
     's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
 int i;

 for(i = 0; i < 26; i++)
  printf("%c", a[i]);

 return 0;
}

==============================================================

6.2 使用嵌套循环产生下列图案:

$

$$

$$$

$$$$

$$$$$

#include <stdio.h>

int main(void)
{
 int i , j, k;

 for(i = 0; i < 5; i++)
 {
  k = i + 1;
  for(j = 0; j< k; j++)
   printf("$");
  printf("/n");
 }

 return 0;
}

==============================================================

6.3 使用嵌套循环产生下列图案:

F

FE

FED

FEDC

FEDCB

FEDCBA

#include <stdio.h>

int main(void)
{
 char fedcba[6] = {"FEDCBA"};
 int i, j, k;

 for(i = 0; i < 6; i++)
 {
  k = i + 1;
  for(j = 0; j < k; j++)
   printf("%c", fedcba[j]);
  printf("/n");
 }

 return 0;
}
==============================================================

 6.4 让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:

                    A

               ABA

          ABCBA  

     ABCDCBA

ABCDEDCBA

#include <stdio.h>

int main(void)
{
 int len;
 char flag;
 int i,n,p,q;

 printf("Please input trigger character:");
 scanf("%c", &flag);
 printf("Please input length:");
 scanf("%d", &len);

 for(i = 0; i < len; i++)
 {
  for(n=2*(len-i-1); n > 0; n--)
   printf(" ");
 
  for(p=0; p<=i;p++)
   printf("%c", flag+p);

  for(q=0;q<i;q++)
   printf("%c", flag+i-q-1);

  printf("/n");
 }

 return 0;
}

==============================================================

 6-5 编写一个程序打印一个表,表的每一行都给出一个整数,它的平方以及它的立方。要求用户输入表的上限与下限,使用一个for循环。

#include <stdio.h>

int main(void)
{
 int min,max,len;
 int i;
 int square, cube;
 
 printf("Please input a max integar:");
 scanf("%d", &max);

 printf("Please input a min integar:");
 scanf("%d", &min);

 if((len = max - min) < 0)
  printf("input max min error. /n");

 printf("integar  square  cube/n");
 for(i=0; i < len; i++)
 {
  square = min * min;
  cube = square * min;
  printf("%d  %d  %d/n",min,square,cube);
  min++;
 }

 return 0;
}

==============================================================

6-6 编写一个 程序把一个单词读入一个字符数组,然后反向打印出这个词.

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

int main(void)
{
 char word[256];
 int len;
 int i;

 printf("Please input a word(length max is 256):");
 scanf("%s",word);

 if((len = strlen(word)) > 256)
 {
  printf("word is too long.../n");
  return 0;
 }

 printf("The word is %s/n",word);
 printf("End to start:");
 for(i=len; i>=0;i--)
  printf("%c",word[i]);
 printf("/n");

 return 0;
}

==============================================================

 6-9 编写一个程序把8个整数读入一个数组中,然后以相反的顺序打印它们.

#include <stdio.h>

#define DATA_NUM 8

int main(void)
{
 int a[DATA_NUM];
 int i=0;

 printf("Please input %d integars:", DATA_NUM);
 
 while(i<8)
 {
  scanf("%d", &a[i]);
  i++;
 }

 for(i=DATA_NUM-1; i>=0;i--)
  printf("%d ",a[i]);

 return 0;
}

 ==============================================================

6-10 考虑这两个无限数列:

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

编写一个程序来计算这2个序列不断变化的总和,直到达到某个次数。让用户交互地输入这个次数。看看在20次,100次和500次之后的总和。是否每个序列看上去都收敛于某个值。

/*
A: 1.0+1.0/2.0+1.0/3.0+1.0/4.0+...
B: 1.0-1.0/2.0+1.0/3.0-1.0/4.0+...
*/
#include <stdio.h>

#define N 1.0


double count_a(int denom)
{
 double sa=0;
 int i;

 for(i=1;i<denom+1;i++)
  sa += (N/i);

 return sa;
}

double count_b(int denom)
{
 double sb=0;
 int i,flag=1;

 for(i=1;i<denom+1;i++)
 {
  sb += (N/i * flag);
  flag *= -1;
 }

 return sb;
}

int main(void)
{
 int m;
 double sum_a,sum_b;

 while(1)
 {
  printf("Please input times:");
  scanf("%d", &m);

  sum_a = count_a(m);
  sum_b = count_b(m);

  printf("Sum of Line A is %.4f, line B is %.4f/n", sum_a, sum_b);
 }

 return 0;
}

==============================================================

 6-11 编写一个程序,创建一个8个元素的int数组,并且把元素分别设置为2的前8次幂,然后打印出他们的值。使用for循环来设置值;为了变化,使用do while循环来显示这些值。

#include <stdio.h>

int main(void)
{
 int a[8];
 int i,temp;

 temp = 2;
 a[0] = 2;

 for(i=1; i<8; i++)
 {
  a[i] = 2 * temp;
  temp = a[i];
 }

 i = 1;
 do
 {
  printf("the %d is %d/n", i, a[i-1]);
 }while(i++ < 8);

 return 0;
}

==============================================================

6-12 编写一个程序,创建2个8元素的double数组,使用一个循环来让用户键入第一个数组的8个元素值。程序把第二个数组的元素设置为第一个数组元素的累计和。

#include <stdio.h>

double count(int num, double a[8])
{
 double sum;
 int m;

 sum = a[0];
 for(m=1; m<num; m++)
  sum += a[m];

 return sum;
}

int main(void)
{
 int i;
 double a[8];

 printf("Please input 8 digits:");
 for(i=0; i<8; i++)
  scanf("%lf",&a[i]);

 for(i=0; i<8; i++)
  printf("a[%d] is %lf, the first %d sum is %lf./n", i, a[i], i+1, count(i+1, a));

 return 0;
}

==============================================================

6-13 编写一个程序读入一行输入,然后反向打印该行。

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

int main(void)
{
 char a[255];
 int i,len;

 printf("Please input a string:");
 scanf("%s", a);
 
 len = strlen(a);

 for(i=len-1; i>=0;i--)
  printf("%c", a[i]);

 return 0;
}

==============================================================
6-14 Daphne以10%的单利投资了100美元,Deirdre则以每年5%的复合利息投资了100美元,编写一个程序,计算需要多少年Deirdre的投资才会超过Daphne,并且显示出到那时两个人的投资额。

#include <stdio.h>

int main(void)
{
 float Daphne=100;
 double Deirdre=100;
 int n=0;

 do
 {
  Daphne += 100 * 0.1;
  Deirdre *= 1.05;
  n++;
 }while(Daphne >= Deirdre);

 printf("%d years, Daphne is %f, Deirdre is %lf./n", n,Daphne,Deirdre);

 return 0;
}

==============================================================

6-15 Chuckie Lucky赢了100万美元,他把它存入一个每个赢得8%的账户,在每年的最后一天,Chuckie取出10万美元,编写一个程序,计算需要多少年Chuckie就会清空他的账户。

#include <stdio.h>

int main(void)
{
 double total=100;
 int y=0;

 while(total>0)
 {
  total = total*1.08 -10;
  y++;
 }

 printf("%d years./n", y);

 return 0;
}

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/louis82/archive/2007/04/10/1559794.aspx

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值