1. 编写一个程序,创建一个具有26个元素的数组,并在其中存储26个小写字母。并让该程序显示该数组的内容。
2. 使用嵌套循环产生下列图案:
S
SS
SSS
SSSS
SSSSS
3. 使用嵌套循环产生下列图案:
F
FE
FED
FEDC
FEDCB
FEDCBA
请注意:如果您的系统不使用ASCII或其他以数字顺序编码的码,您可以把一个字符数组初始化为字母表中的字母:
char lets[26]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 字符串有27个元素(26字母+'\0'),数组越界
然后就可以使用数组索引来选用单个的字母,例如lets[0]是'A',等等。
4. 让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:
A
ABA
ABCBA
ABCDCDA
ABCDEDCBA
这种图案要扩展到用户输入的字符。例如,前面的图案是在输入E时需要产生的。提示:使用一个外部循环来处理行,在每一行中使用三个内部循环,一个处理空格,一个以升序打印字母,一个以降序打印字母。如果您的系统不使用ASCII或类似的以严格数字顺序表示字母的编码,请参见在编程练习3中给出的建议。
// 方法1
#include <stdio.h>
int main(void)
{
char letter[26];
char ch;
int i;
for (i = 0,ch = 'a'; i < 26; ch++,i++)
letter[i] = ch;
for (i = 0; i < 26; i++)
printf("%c",letter[i]);
printf("\n");
return 0;
}
// 方法2
#include <stdio.h>
int main(void)
{
char letter[26];
int i;
for (i = 0; i < 26;i++)
letter[i] = 'a' + i;
for (i = 0; i < 26; i++)
printf("%c",letter[i]);
printf("\n");
return 0;
}
输出:
2. 使用嵌套循环产生下列图案:
S
SS
SSS
SSSS
SSSSS
#include <stdio.h>
int main(void)
{
int row,col;
for (row = 0; row < 5; row++)
{
for (col = 0; col <= row; col++)
{
printf("%c",'$');
}
printf("\n");
}
return 0;
}
输出:
3. 使用嵌套循环产生下列图案:
F
FE
FED
FEDC
FEDCB
FEDCBA
请注意:如果您的系统不使用ASCII或其他以数字顺序编码的码,您可以把一个字符数组初始化为字母表中的字母:
char lets[26]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 字符串有27个元素(26字母+'\0'),数组越界
然后就可以使用数组索引来选用单个的字母,例如lets[0]是'A',等等。
// 方法1
#include <stdio.h>
int main(void)
{
int row,col;
for (row = 0; row < 6; row++)
{
for (col = 0; col <= row; col++)
{
printf("%c",'F' - col);
}
printf("\n");
}
return 0;
}
// 方法2
#include <stdio.h>
int main(void)
{
int row,col;
char lets[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 字符串有27个元素(26字母+'\0'),数组越界
for (row = 0; row < 6; row++)
{
for (col = 0; col <= row; col++)
{
printf("%c",lets[5] - col);
}
printf("\n");
}
return 0;
}
输出:
4. 让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:
A
ABA
ABCBA
ABCDCDA
ABCDEDCBA
这种图案要扩展到用户输入的字符。例如,前面的图案是在输入E时需要产生的。提示:使用一个外部循环来处理行,在每一行中使用三个内部循环,一个处理空格,一个以升序打印字母,一个以降序打印字母。如果您的系统不使用ASCII或类似的以严格数字顺序表示字母的编码,请参见在编程练习3中给出的建议。
#include <stdio.h>
int main(void)
{
int row,col;
char ch;
printf("请输入一个大写字母:\n");
scanf("%c",&ch); // 如何处理错误输入,非字母或小写字母?
int length;
length = ch - 'A' + 1;
for (row = 0; row < length; row++)
{
// 处理空格
for (col = 0; col < length - row; col++) // length - row - 1: ?
{
printf("%c",' ');
}
// 升序打印字母
for (col = 0; col <= row; col++)
{
printf("%c",'A' + col);
}
// 降序打印字母
for (col = row - 1; col >= 0; col--)
{
printf("%c",'A' + col);
}
printf("\n");
}
return 0;
}
输出: