首先呢,我这是在学习c语言题目中遇到的两个题目。接下来我们来看第一题目。
C语言基础训练
输出字符菱形
小蒜蒜最近学习了菱形(四边都相等的四边
形)
现在她给了你一个字符,希望你能用它构造
一个对角线长5个字符,倾斜放置的萎形。
输入格式
输入只有一行,包含一个字符。
输出格式
该字符构成的菱形。详细题目见图
我分享一下我做这类题目的方法哈。
1.根据题目要求,输入想要构成菱形的字符,首先菱形占行为五行,先描述前三行,用多个for循环,第一个for(i=0;i<3;i++)表示占三行,然后在里面套循环,for(j=0;j<2-i;j++)输出空格,这样可以表示第一行两个空格,第二行一个空格,第三行没有空格,在这个for循环下面再写一个循环,输出要表示的字符,用for(k=0;k<2*i+1;k++)可以表示第一行一个,第二行三个,第三行五个,输出换行符进行换行,第四行第五行方法相同,也是用循环套循环。这也就是循环的思想。大家可以仔细看下。
2.当然大家也可以根据示例找规律。很快第二种解法也随之而来。不难看出,接下来,主要要思路先写一个可以循环n次的循环,然后在里面写一个循环用来输出字符输出多少字符观察例子可以发现是一个对称图像所以,以第三行为基准点在观察和最近的上面或者下面一行差的字符数可以得出一个关系式子:5-|2*(3-i)|个为了符合这个式子所以我们循环变量j=1开始。我们就得到了雏形。然后我们就考虑输出空格了同理会得到一个输出个|(3-i)|个空格的式子。
代码如下:
#include <stdio.h>
int main()
{
char chr;
scanf("%c",&chr);
int i=1,j;
for(i;i<=5;i++)
{
for(j=1;j<=abs(3-i);j++)
{
printf(" ");
}
for(j=1;j<=5-2*abs(3-i);j++)
{
printf("%c",chr);
}
printf("\n");
}
return 0;
}
3.显然如果大家想快速解决这个问题,还有这个暴力一点解法:
直接将菱形输入出来。
代码如下:
#include<stdio.h>
int main ()
{
char a;
scanf("%c",&a);
printf(" %c\n",a);
printf("%c%c%c\n",a,a,a);
printf("%c%c%c%c%c\n",a,a,a,a,a);
printf(" %c%c%c\n",a,a,a);
printf(" %c\n",a);
return 0;
}
好了,以上就是这个菱形的三种常见的解决方式,如果还有很好的方式。我也是一名刚入门的小白,希望能够一起进步。