c primer plus习题答案[1~11]

第六章习题

/*第六章 练习题1
题目:1.编写一个程序,创建一个包含26个元素的数组,并在其中储存
      26个小写字母。然后打印数组的所有内容。
分析:定义一个26元素的字符型数组,所以占用26个字节,然后还有把
      他们全部打印出来,所以循环的次数要与元素的长度相等。

*/

#include <stdio.h>

#define length 26//声明循环长度。

unsigned char letter = 'A';//letter字母 声明起始字母‘A’。
char ch[26] ;//创建26个元素数组
unsigned char i;  //声明循环变量‘i’。

int main ()
{
    /*初始化数组元素*/
    for(i = 0;i < length;i++)
        ch[i] = i + 'a';
    /*打印数组元素*/
    for(i = 0;i < length;i++)//循环26次
      //  printf("%c ",letter++);//每次输出完毕之后letter加1。
        printf("%c ", ch[i]);


    return 0;
}

/*第六章 练习题2
题目:2.使用嵌套循环,按下面的格式打印字符:
                                            $
                                            $$
                                            $$$
                                            $$$$
                                            $$$$$
分析:关键要点是嵌套循环,然后这个规律是五行,每行递增一个。

*/

#include <stdio.h>

#define line 5//声明行数。
unsigned char i,j;  //声明循环变量‘i’'j'。

int main ()
{
    /*设定循环次数即行数*/
    for(i = 0;i < line;i++)
    {
        /*设定每行循环几次即每行的个数*/
        for(j = 0;j <= i;j++)//j <= i是重点
        {
            printf("$");

        }
        printf("\n");
    }
    return 0;
}

/*第六章 练习题3
题目:3.使用嵌套循环,按下面的格式打印字母:
                                            F
                                            FE
                                            FED
                                            FEDC
                                            FEDCB
                                            FEDCBA
分析:关键要点是嵌套循环,然后这个规律是六行,起始字母是'F'每行倒序递增一个。

*/

#include <stdio.h>

#define line 6//声明行数。
unsigned char i,j,ch = 'A';  //声明循环变量‘i’'j'。


int main ()
{
    /*设定循环次数即行数*/
    for(i = 0;i < line;i++)
    {
        /*设定没行输出几个字符*/
        for(j = 0;j <= i;j++)
        {
            printf("%C",ch--);//倒序递增
        }
        printf("\n");
        ch = 'F';//重置ch初值
    }
    return 0;
}

/*第六章 练习题4
题目:4.使用嵌套循环,按下面的格式打印字母:
                                            A
                                            BC
                                            DEF
                                            GHIJ
                                            KLMNO
                                            PQRSTU
分析:关键要点是嵌套循环,然后这个规律起始A到U截止是六行,每行字符正序递增数量=行数

*/

#include <stdio.h>

#define line 6//声明行数。
unsigned char i,j,ch = 'A';  //声明循环变量‘i’'j'和字符变量'A'。


int main ()
{
    /*设定循环次数即行数*/
    for(i = 0;i < line;i++)
    {
        /*设定每行循环的次数*/
       for(j = 0;j <= i;j++)

       {
            printf("%c",ch++);//打印ch后且加1.
       }
       printf("\n");
    }
    return 0;
}

/*第六章 练习题5
题目:5.编写一个程序,提示用户输入大写字母。使用嵌套循环以下面
金字塔型的格式打印字母:
                               A
                              ABA
                             ABCBA
                            ABCDCBA
                           ABCDEDCBA
分析:关键要点是嵌套循环,然后这个规律起始字符A截止字符=行数,
      每一行打印的字符数量是相同的,只是字符类型数量不同,
      其规律是空格递减字符由正序和倒序递增

*/
#include <stdio.h>

int main()
{
    int i, j;
    char ch;

    printf("Please enter a upper letter: ");
    scanf("%c", &ch);
    printf("The pyramid of %c is:\n", ch);
    char length = ch - 'A';//计算字母长度。
    /*循环行数*/
    for (i = 0; i <= length; i++)
    {
        char letter = 'A' - 1;//计算起始字母。
        /*空格递减*/
        for (j = 0; j < length - i; j++)
            printf(" ");//打印递减空格;
        /*递增字母*/
        for (j = 0; j <= i; j++)
            printf("%c", ++letter);//打印递增字母;
        /*递减字母*/
        for (j = 0; j < i; j++)
            printf("%c", --letter);//打印递减字母
        printf("\n");
    }

    return 0;
}


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

分析:strlen()函数在string.h函数库中

*/
#include <stdio.h>
#include <string.h>//提供strlen()函数
#define LEN 20//声明数组长度

int main()
{
    int i;
    char str[LEN];//字符串数组.

    printf("Please enter a word: ");//请输入一个单词
    scanf("%19s", str);//输入最大19个字节的单词
    printf("The word is:\n");
    printf("%s\n", str);//打印出来刚才输入的单词

    printf("Reversing the word is:\n");
   // printf("%d",strlen(str));
   // printf("\0\n");
   // printf("\0\n");
    for (i = strlen(str) - 1; i >= 0; i--)//-1是因为单词属于字符串,字符串储存在数值中的最后一位是\0
    {
        printf("%c", str[i]);
    }
    return 0;
}

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

分析:

*/
#include <stdio.h>
#include <string.h>
#define LEN 20//声明数组长度

int main()
{
    int i;
    char str[LEN];//字符串数组.

    printf("Please enter a word: ");//请输入一个单词
    scanf("%19s", str);//输入最大19个字节的单词数组不用加&
    printf("The word is:\n");
    printf("%s\n", str);//打印出来刚才输入的单词

    printf("Reversing the word is:\n");
   // printf("%d",strlen(str));
   // printf("\0\n");
   // printf("\0\n");
    for (i = strlen(str) - 1; i >= 0; i--)//-1是因为单词属于字符串,字符串储存在数值中的最后一位是\0
    {
        printf("%c", str[i]);
    }
    return 0;
}

/*第六章 练习题8
题目:8.编写一个程序,要求用户输入两个浮点数,并打印两数之差
        除以两数乘积的结果。在用户输入非数字之前,程序应循环
        处理用户输入的每对值。
分析:浮点数用 flaot,double

*/
#include <stdio.h>

int main()
{
    double i, j;

    printf("Please enter two numbers (q to quit): ");//请输入两个数字q退出
    while (scanf("%lf %lf", &i, &j) == 2) //成功输入两个变量scanf返回2
    {
        printf("(%g - %g) / (%g * %g)", i, j, i, j);
        printf(" = %g\n", (i - j) / (i * j));
        printf("You can enter again (q to quit): ");
    }
    printf("Done.\n");

    return 0;
}

/*第六章 练习题9
题目:9.修改练习8,使用一个函数返回计算的结果。

分析:

*/
#include <stdio.h>

double ret (double a,double b)
{
    return (a-b) / (a*b);
}
int main()
{
    double i, j;

    printf("Please enter two numbers (q to quit): ");//请输入两个数字q退出
    while (scanf("%lf %lf", &i, &j) == 2) //成功输入两个变量scanf返回2
    {
        printf("(%g - %g) / (%g * %g)", i, j, i, j);
        printf(" = %g\n",ret(i,j));//调用ret函数将ij的值发送到ab中经过(a-b) / (a*b)后返回double类型的数
        printf("You can enter again (q to quit): ");
    }

    printf("Done.\n");

    return 0;
}

/*第六章 练习题10
题目:10.编写一个程序,要求用户输入一个上限整数和一个下限整数, 计算从上限到下限范围内所有整数的平方和,并显示计算结果。然后 程序继续提示用户输入上限和下限整数,并显示结果,直到用户输入
的上限整数小于下限整数为止。

分析:

*/
#include <stdio.h>

int main()
{
    /*声明上限和下限*/
    int upp, low, i;

    printf("Enter lower and upper integer limits: ");
    while ((scanf("%d %d", &upp, &low) == 2) && (upp > low))//如果上限 > 下限而且scanf返回2,条件成立进入循环,否则跳过,
    {
            /*声明一个变量保存平方和*/
        int sum = 0;
    /*范围*/
        for (i = low; i <= upp; i++)
        {
            sum += i * i;//等价于sun = sun + i * i
        }
        /*打印*/
        printf("The sums of the squares ");
        printf("from %d to %d is %d\n", low * low, upp * upp, sum);
        /*继续输入*/
        printf("Enter next set of limits: ");
    }
    printf("Done\n");//完成

    return 0;
}

/*第六章 练习题11
题目:11.编写一个程序,在数组中读入8个整数,然后按倒序打印这8个
整数。

分析:

*/
#include <stdio.h>
#define length 8

int numer[length];
int main()
{
    int i;
    printf("Please enter 8 numbers:\n", length);
    for (i = 0; i < length; i++)
    {
        scanf("%8d", &numer[i]);//因为是八个独立的整数所以要加&取地址
    }

    for(i = length - 1; i >= 0;i--)
        printf("%-2d",numer[i]);//左对齐整数占两位
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值