当前位置:首页 > c语言经典算法
2.10 菱形2.c
编一程序,要求输入一正整数,打印出相应的菱形.如:输入3,则应打印出
* * * * * * * * * * *
*
注:本题的解题特色是没有分开打印上下两部分. #include \ main() {int i,j,m; scanf(\,&m); m--;
printf(\ %c\\n\,'*'); for (i=0;i<=2*m;i++)
{for (j=35;j>=m-fabs(m-i);j--) printf(\,' '); printf(\,'*');
for (j=0;j<=(m-fabs(m-i))*2;j++) printf(\,' '); printf(\,'*');}
printf(\ %c\\n\,'*'); } getch(); }
2.11 杨辉三角.c
编一程序:要求输入一正整数,打印出杨辉三角,如输入5,则输出:
1 1 1 1 2 1 1 3 3 1
1 4 6 4 1 分析:可用一数组来完成,仔细观察,可将该三角看成如下图形:
37
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
仔细观察该图形,可知该数组的第一列与对角线上的元素均为1, 从第三行到第n行的aa[i][j]=aa[i-1][j-1]+aa[i-1][j]. #include\ main() {FILE *fp; int i,j,n;
static aa[21][40]; /*0行0列不用*/ clrscr();
if((fp=fopen(\,\ {printf(\打开文件错误!\ exit(0); }
printf(\请输入打印的行数:\ scanf(\,&n); aa[1][1]=1;
for (i=2;i<=n;i++) /*给第一列和对角线上的元素赋1*/ aa[i][1]=aa[i][i]=1;
for (i=1;i<=n;i++) /*按要求的格式打印输出*/ {for (j=20;j>=i;j--) {printf(\ fprintf(fp,\ }
for (j=1;j<=i;j++) {printf(\,aa[i][j]); fprintf(fp,\,aa[i][j]); } printf(\ fprintf(fp,\ } getch(); }
38
2.12 字母矩形.c
打印字母矩形.如键盘输入D,则往屏幕上输出如下矩形:
A B B B C C C C C D D D D D D D C C C C C B B B A
解法1: main()
{char ch1,ch,ch2; int i,j,k=1; clrscr();
scanf(\,&ch); if (ch>='a') ch=ch-'a'+'A'; j=(ch-'A')*2;
for(ch1='A';ch1<=ch;ch1++) {for(i=1;i<=j;i++) printf(\
for(i=1;i<=k;i++) printf(\,ch1); j-=2; k+=2; printf(\ } ch2=ch;
for(ch1=ch-1;ch1>='A';ch1--) {for(i=ch1;i for(i='A'*2;i<(ch2)*2-1;i++) printf(\,ch1); ch2-=1; printf(\ } getch(); } 解法2: #include \ 39 #include \ #define ff \ main() {FILE *fp; int i,j,k=0; char m; clrscr(); while (k==0) /*检测输入的是否是字母*/ { printf(\请输入任一字母:\ scanf(\,&m); if ((m>='a')&&(m<='z')) { m=m-32; k=1; } else if ((m>='Z')||(m<='A')) printf(\输入出错,请重输!\ else k=1; } if ((fp=fopen(ff,\ { printf (\不能打开文件!\\n\ exit(0); } m=m-'A'; for (i=0;i<=2*m;i++) { for (j=35;j>=2*(m-fabs(m-i));j--) /*使图形打印在中间*/ fprintf(fp,\ for(j=0;j<=2*(m-fabs(m-i));j++) fprintf(fp,\,'A'+(i<=m?i:2*m-i)); fprintf(fp,\ } fclose(fp); if ((fp=fopen(ff,\ { printf (\不能打开文件!\\n\ exit(0); } while (!feof(fp)) putchar(fgetc(fp)); 40
共分享92篇相关文档