终于搞定的说
思路就是将printf格式输出中的%mc,时实以字符串数组表示
我觉得还不如重写stdio.h文件,让格式输出可以接受变量定义的数据宽度 -_-b
#include <stdio.h>
main(){
int n=-1,max=5,num=(max+1)/2;
char k='*';
char str[]={'%',' ','c'};
for(int i=0;i<max;i++){
if(i<(max+1)/2){
n+=2;
num--;
}else{
n-=2;
num++;
};
str[1]=num+48;
for(int j=0;j<n;j++){
if(j==0){
printf(str,k);
}else{
printf("%c",k);
};
};
if(i<max-1){
//这个判断完全是因为我看着最后多出的空行不爽
printf("\n");
};
};
};
这么一折腾到是可以总结一下:
1.C里面没有字符串连接,字符串连接在C++里面才出现,使用了运算符重载和自动类型转换,开销极大。
2.ANSI C提供printf函数中的数据宽度,只能用十进制整型常量来表示。
3.数组的数据类型确定后,数组内的所有元素都应为该类型,如果类型有异,则C自动进行强制类型转换(这个经验告诉我们ASCII码表是很重要地)。
4.这个C真是基础的可以!
5.最后就是——这个图形其实应该叫“菱形”才对(表打脸~~~)。
大功告成,回去睡觉 *_*