【C语言】–练手项目②:“打印图形”系列题目
——————————————————————C语言练手日记2
练习心得:1.“打印”题目关键在于 相互之间的选择结构和循环结构;
2.输入输出的格式问题;
3.注意基本的语句格式。
#注意:vs2019版本中为scanf_s,其他版本可能为scanf。
①输出指定的由“*”组成的倒三角图案:(易)
/*
* * * *
* * *
* *
*
*/
#include "stdio.h"
int main()
{
printf("* * * *\n");
printf(" * * *\n");
printf(" * *\n");
printf(" *");
return 0;
}
②打印一个高度为n的、由“*”组成的正菱形图案:(繁)
①输出指定的由“*”组成的倒三角图案。
/*打印一个高度为n的、由“*”组成的正菱形图案。
如图所示(7行):
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
*/
#include <stdio.h>
int main(void)
{
int n = 0;
scanf("%d", &n);
int row = (n / 2) + 1;
for (int i = 1;i <= row;i++) {
for (int j = row - i;j > 0;j--) {
printf(" ");
}
for (int j = 0;j < (2 * i - 1);j++) {
printf("* ");
}
printf("\n");
}
for (int i = 1;i < row;i++) {
for (int j = 0;j < i;j++) {
printf(" ");
}
for (int j = (row - i) * 2 - 1;j > 0;j--) {
printf("* ");
}
printf("\n");
}
return 0;
}
③打印九九乘法表
#include "stdio.h"
int main()
{
int i,j,N;
printf("------可输出从1*1到N*N的部分口诀表。");
printf("\n请输入N的值:");
scanf_s("%d", &N);
for (i = 1;i <= N;i++)
{
for (j = 1;j <= i;j++)
printf("%d * %d =%d ", i, j, i * j);
printf("\n");
}
return 0;
}
④打印3的乘方表
/*输入一个非负整数n,生成一张3的乘方表,输出3^0~3^n的值。可调用幂函数计算3的乘方。*/
#include<stdio.h>
#include<math.h>
int main(void)
{
int i, n;
double power;
scanf("%d", &n);
for(i=0; i<=n; i++){
power=pow(3,i);
printf("pow(3,%d) = %.0f\n", i, power);
}
return 0;
}
⑤打印沙漏:
#include<stdio.h>
int main()
{
int x, sum = -1, n, i, yu, b, k; char a;
scanf_s("%d %c", &n, &a);
for (i = 1;;i++)
{
sum = sum + 2 * (2 * i - 1);
if (n - sum < 0) break;
b = sum;
}
yu = n - b;
x = i - 1;
for (i = x;i > 0;i--)
{
for (k = x - i;k > 0;k--)
printf(" ");
for (k = 1;k <= 2 * i - 1;k++)
printf("%c", a);
printf("\n");
}
for (i = 2;i <= x;i++)
{
for (k = x - i;k > 0;k--)
printf(" ");
for (k = 1;k <= 2 * i - 1;k++)
printf("%c", a);
printf("\n");
}
printf("%d", yu);
return 0;
}