3.30C语言上机实验及其他一些输出图形的题目

image

#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");
	}
}

image

#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");
	}
}

image

#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");
	}
}

image

#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");
	}
}

image

#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");
	}
}

image

#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");
	}
}

image

#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

posted @ 2022-03-30 16:45  Link_kingdom  阅读(58)  评论(0编辑  收藏  举报