1.memset(s,c,sizeof(s));c是char型变量。
2.strncpy(s2,s1,r);把s1的前r个字符复制到s2的前r个中,但在s2的末尾不会自动添加‘\0‘.
3.strcpy(s2,s1);把s1的字符复制到s2中,但在s2的末尾会自动添加‘\0‘.
4.代码:
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; char s[10000]; int main() { int n,i,j; char c; while(scanf("%d%*c%c",&n,&c)!=EOF) { memset(s,c,sizeof(s)); int x=1; while(2*x*x-1<=n&&2*(x+1)*(x+1)-1<=n) x++; int xx=n-2*x*x+1; for(i=0;i<x;i++) { int r=2*x-1-i*2; char ss[10000]; strncpy(ss,s,r); ss[r]='\0'; for(j=i;j>0;j--) { printf(" "); } printf("%s",ss); printf("\n"); } for(i=x-2;i>=0;i--) { int r=2*x-1-i*2; char ss[10000]; strncpy(ss,s,r); ss[r]='\0'; for(j=i;j>0;j--) printf(" "); printf("%s",ss); printf("\n"); } printf("%d\n",xx); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-12-14 05:30:06