C Primer Plus 第6版 编程练习——第6章(上)
本章题比较多,有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));}
}