3.30C语言上机实验及其他一些输出图形的题目
#include<stdio.h>
int main(){
int a=0;
scanf("%d",&a);
for(int i=0;i<a;i++){
for(int k=0;k<i;k++){
printf(" ");
}
for(int j=0;j<2*(a-i)-1;j++){
printf("*");
}
printf("\n");
}
}
#include<stdio.h>
int main(){
int a=0;
scanf("%d",&a);
for(int i=0;i<a;i++){
for(int k=0;k<i;k++){
printf(" ");
}
for(int j=0;j<2*(a-i)+3;j++){
printf("*");
}
printf("\n");
}
}
然而结果显示错误,原因是要求上底数为n,而不是简单加3即可,
#include<stdio.h>
int main(){
int a=0;
scanf("%d",&a);
for(int i=0;i<a;i++){
for(int k=0;k<i;k++){
printf(" ");
}
for(int j=0;j<2*(a-i-1)+a;j++){
printf("*");
}
printf("\n");
}
}
#include<stdio.h>
int main() {
int a = 0;
scanf("%d", &a);
for (int i = 0; i < a; i++) {
for (int k = 0; k < i; k++) {
printf(" ");
}
for (int j = 0; j < 2 * (a - i - 1) + a; j++) {
if (i == 0 || i == a - 1) {
printf("*");
} else {
if (j == 0 || j == 2 * (a - i - 1) + a - 1) {
printf("*");
} else {
printf(" ");
}
}
}
printf("\n");
}
}
#include<stdio.h>
int main() {
int a = 0,b=0;
scanf("%d%d", &a,&b);
for (int i = 0; i < a; i++,b++) {//逐行操作
for (int k = 0; k < i; k++) {
printf(" ");
}
for (int j = 0; j < 2 * (a - i - 1) + a; j++) {
if (i == 0 || i == a - 1) {
printf("%d",b>9?b-10:b);//实现了循环
} else {
if (j == 0 || j == 2 * (a - i - 1) + a - 1) {
printf("%d",b>9?b-10:b);
} else {
printf(" ");
}
}
}
printf("\n");
}
}
#include<stdio.h>
int main() {
int a = 0,b=0;
int c=0;
scanf("%d%d", &a,&b);
int d=b+1;
for (int i = 0; i < a; i++) {//逐行操作
for (int k = 0; k < i; k++) {
printf(" ");
}
for (int j = 0; j < 2 * (a - i - 1) + a; j++) {
if (i == 0 ) {//上底
printf("%d",b%10);//实现了循环
b++;
c=b-2;
}else if(i == a - 1){//下底
printf("%d",d%10);
d++;
} else {//中间
if (j == 0) {//head
printf("%d",d%10);
d++;
} else if(j == 2 * (a - i - 1) + a - 1){//tail
printf("%d",c%10);
c--;
}else{
printf(" ");
}
}
}
printf("\n");
}
}
#include<stdio.h>
int myabs(int b){
return b>0?b:-b;
}
int main() {
int a = 0, b = 0;
scanf("%d%d", &a, &b);
int d = b;
for (int i = 0; i < a; i++, d++) { //逐行操作
for (int k = 0; k < i; k++) {
printf(" ");
}
for (int j = 0; j < 2 * (a - i - 1) + a; j++) {
if (i == 0 ) {//上底
if (a % 2 == 1) {
if (j < (a - i - 1) + a / 2) {
printf("%d", b % 10);
b++;
} else {
printf("%d", b % 10);
b--;
}
} else {
if (j < a / 2 +a-1) {
printf("%d", b % 10);
b++;
} else {
b--;
printf("%d", b % 10);
}
}
} else if (i == a - 1) { //下底
if (a % 2 == 1) {
if (j < (a - i - 1) + a / 2) {
printf("%d", d % 10);
d++;
} else {
printf("%d", d % 10);
d--;
}
} else {
if (j < a / 2 ) {
printf("%d", d % 10);
d++;
} else {
d--;
printf("%d", d % 10);
}
}
} else {//中间
if (j == 0 || j == 2 * (a - i - 1) + a - 1) { //head
printf("%d", d % 10);
} else {
printf(" ");
}
}
}
printf("\n");
}
}
#include<stdio.h>
void uptan(int a) {
for (int i = 0; i < a; i++) { //上三角每行,在这里总结经验:先把一行内的变量更新
int temp = a;
for (int j = 0; j < a - 1 - i; j++) {
printf(" ");
}
for (int k = 0; k < 2 * i + 1; k++) {
if (k < i) {
printf("%-2d", temp);
temp--;
} else {
printf("%-2d", temp);
temp++;
}
}
printf("\n");
}
}
void downtan(int a) {
for (int i = 0; i < a - 1; i++) {
int temp = a;
for (int j = 0; j < i + 1; j++) {
printf(" ");
}
for (int k = 0; k < 2 * a - 3 - 2 * i ; k ++) {//继续总结经验:建议不清楚的话在纸上画一遍
if (k < a - i - 2) {
printf("%-2d", temp);
temp--;
} else {
printf("%-2d", temp);
temp++;
}
}
printf("\n");
}
}
int main() {
int a = 0;
scanf("%d", &a);
uptan(a);
downtan(a);
}
上面涉及到左对齐的小技巧,%-2d