一。输出菱形
如何输出一个实心菱形?利用for循环嵌套的模式
以生成一个由*形成的菱形为例,需要输出特定的空格数和*号数
如输出2n-1行由*构成的菱形,n=5时
主要是先输出空格,然后是字符,注意空格和字符的变化规律;
这是一个编程题模板。
本题要求编写程序,输出2n-1行由大写字母A开始构成的菱形字符阵列。#include <stdio.h>
int main() {
int n,i,j,k;
scanf("%d", &n);
for(i=1;i<=n;i++){
for(j=1;j<=n-i;j++){
printf(" ");
}
for(k=1;k<=2*i-1;k++){
printf("%c",'A'+i-1);
}
printf("\n");
}
for(i=n-1;i>=1;i--){
for(j=1;j<=n-i;j++){
printf(" ");
}
for(k=1;k<=2*i-1;k++){
printf("%c",'A'+i-1);
}
printf("\n");
}
return 0;
}
这段代码中使用了 'A' + i - 1
的表达式来输出字符。这种写法是正确的,因为字符在内存中是以整数形式存储的。
当使用 'A' + i - 1
时,实际上是将字符 'A'
的 ASCII 码值(65)加上 i - 1
的值,得到一个新的 ASCII 码值。由于 ASCII 码表中相邻的字符之间的值是连续的,所以这个新的 ASCII 码值对应的字符正好是 'A'
加上 i - 1
的结果。
例如,当 i = 2
时,'A' + i - 1
的值为 'A' + 2 - 1
,即 'A' + 1
,对应的 ASCII 码值为 66,也就是字符 'B'
。因此,这段代码使用 'A' + i - 1
来输出从 'A'
到 'A' + n - 1
的所有大写字母。
这种写法是合法的,并且可以方便地输出所需的字符。
二。输出三角形(带空格)
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
for(int j=n-1-i;j>0;j--)
{
printf(" ");
}
for(int k=i+1;k>0;k--)
{
printf("*");
if(k>1)//关键,
{
printf(" ");
}
}
printf("\n");
}
return 0;
}
输出效果:
*
* *
* * *
* * * *
* * * * *