C Primer Plus 第6版 编程练习——第6章(上)

发布于:2025-07-03 ⋅ 阅读:(14) ⋅ 点赞:(0)

本章题比较多,有18题,分上下两部分

1.编写一个程序,创建一个包含26个元素的数组,并在其中存储26个小写字母.然后打印数组中的所有内容.
 

int main(int argc, char** argv)
{
    char lets[26] = { 0 };
    for (int i = 0;i < 26;i++)
    {
        lets[i] = 'a' + i;
    }
    for (int i = 0;i < 26;i++)
    {
        printf("%c", lets[i]);
    }
    printf("\n");
    return 0;
}

2.使用嵌套循环,按下面的格式打印字符:
$
$$
$$$
$$$$
$$$$$

int main(int argc, char** argv)
{
    for (int i = 0;i < 5;i++)
    {
        for (int j = 0;j <= i;j++)
        {
            printf("$");
        }
        printf("\n");
    }
    return 0;
}

3.使用嵌套循环,按下面的格式打印字母:
F
FE
FED
FEDC
FEDCB
FEDCBA
注意:如果你的系统不使用ASCII或其他以数字顺序编码的代码,可以把字符数组初始化为字母表中的字母:
char lets[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
然后用下标选择单独的字母,例如lets[0]是'A',等等

int main(int argc, char** argv)
{
    const char lets[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for (int i = 5;i >= 0;i--)
    {
        for (int j = 0;j <= 5 - i;j++)
        {
            printf("%c", lets[5- j]);
        }
        printf("\n");
    }
    return 0;
}

4.使用嵌套循环,按下面的格式打印字母:
A
BC
DEF
GHIJ
KLMNO
PQRSTU
如果你的系统不使用ASCII或其他以数字顺序编码的代码,请参照练习3的方案解决

int main(int argc, char** argv)
{
    const char lets[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int idx = 0;
    for (int i = 0;i < 6;i++)
    {
        for (int j = 0;j <= i;j++)
        {
            printf("%c", lets[idx++]);
        }
        printf("\n");
    }
    return 0;
}

5.编写一个程序,提示用户输入大写字母.使用嵌套循环以下面金字塔型的格式打印字母:
    A
   ABA
  ABCBA
 ABCDCBA
ABCDEDCBA
打印这样的图形,要根据用户输入的字母来决定.例如,上面的图形是用户输入E后的打印结果.
提示:用外层循环处理行,每行使用3个内层循环,分别处理空格、以升序打印字母、以降序打印字母.
如果你的系统不使用ASCII或其他以数字顺序编码的代码,请参照练习3的方案解决

int main(int argc, char** argv)
{
    system("chcp 65001");
    const char lets[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char ch;
    printf("请输入大写字母:");
    scanf_s("%c", &ch, 1);
    for (int i = 0;i <= ch - 'A';i++)
    {
        for (int j = 0;j < ch - 'A' - i;j++)
        {
            printf(" ");
        }
        for (int j = 0;j <= i;j++)
        {
            printf("%c", lets[j]);
        }
        for (int j = i - 1;j >= 0;j--)
        {
            printf("%c", lets[j]);
        }
        printf("\n");
    }
    return 0;
}

6.编写一个程序打印一个表格,每一行打印一个整数、该数的平方、该数的立方.要求用户输入表格的上下限.使用一个for循环.

int main(int argc, char** argv)
{
    system("chcp 65001");
    int min, max;
    printf("请输入表格下限:");
    scanf_s("%d", &min);
    printf("请输入表格上限:");
    scanf_s("%d", &max);
    printf("|----------|----------|----------|\n|      整数|      平方|      立方|\n|----------|----------|----------|\n");
    for (int i = min;i <= max;i++)
    {
        printf("|%10d|%10d|%10d|\n", i, i * i, i * i * i);
        printf("|----------|----------|----------|\n");
    }
    return 0;
}

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

int main(int argc, char** argv)
{
    system("chcp 65001");
    char word[100] = { 0 };
    printf("请输入单词:");
    scanf_s("%s", word, 100);
    for (int i = strlen(word) - 1;i >= 0;i--)
    {
        printf("%c", word[i]);
    }
    return 0;
}

8.编写一个程序,要求用户输入两个浮点数,并打印两数之差除以两数乘积的结果。在用户输入非数字之前,程序应循环处理用户输入的每对值。

int main()
{
    system("chcp 65001");
    printf("请输入两个浮点数:");
    double a = 0.0, b = 0.0;
    while (scanf_s("%lf %lf", &a, &b) == 2)
    {
        printf("%f\n", (a - b) / (a * b));
    }
}

9.修改练习8,使用一个函数返回计算的结果。

double Calculate(double a, double b)
{
    return (a - b) / (a * b);
}

int main()
{
    system("chcp 65001");
    printf("请输入两个浮点数:");
    double a = 0.0, b = 0.0;
    while (scanf_s("%lf %lf", &a, &b) == 2)
    {
        printf("%f\n", Calculate(a, b));
    }
}


网站公告

今日签到

点亮在社区的每一天
去签到