上机题解1.docx
《上机题解1.docx》由会员分享,可在线阅读,更多相关《上机题解1.docx(23页珍藏版)》请在冰豆网上搜索。
上机题解1
1-1.编程,输入n,输出如下例(n=5)所示的图形:
*****
*****
*****
*****
*****
分析:
图形第i行由n-i个空格和n个’*’号组成(i=1,2,……,n):
main()/*sj1-1-1*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)printf(””);
for(j=1;j<=n;j++)printf(”*”);
printf(“\n”);
}
}
1-2.编程,输入n,输出如下例(n=5)所示的图形:
*****
*****
*****
*****
*****
分析:
图形第i行由i-1个空格和n个’*’号组成(i=1,2,……,n):
main()/*sj1-1-2*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i-1;j++)printf(””);
for(j=1;j<=n;j++)printf(”*”);
printf(“\n”);
}
}
1-3.编程,输入n值,输出如下例(n=4)所示的图形:
*
***
*****
*******
分析:
图形第i行由n-i个空格和2i-1个’*’号组成(i=1,2,……,n):
main()/*sj1-1-3*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)printf(””);
for(j=1;j<=2*i-1;j++)printf(”*”);
printf(“\n”);
}
}
1-4.编程,输入n值,输出如下例(n=4)所示的图形:
*******
*****
***
*
分析:
此题图形是上题图形的垂直反转,图形第i行由n-i个空格和2i-1个’*’号组成。
(i=n,n-1,n-2,……,2,1)
main()/*sj1-1-4*/
{inti,j,n;
scanf(“%d”,&n);
for(i=n;i>=1;i--)
{for(j=1;j<=n-i;j++)printf(””);
for(j=1;j<=2*i-1;j++)printf(”*”);
printf(“\n”);
}
}
1-5.编程,输入n值,输出如下例(n=4)所示的高和上底均为n的等腰梯形:
****
******
********
**********
分析:
图形第i行由n-i个空格和(2i-1)+(n-1)个’*’号组成(i=1,2,……,n)。
main()/*sj1-1-5*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)printf(””);
for(j=1;j<=2*i-1+(n-1);j++)printf(”*”);
printf(“\n”);
}
}
1-6.编程,输入n值,输出如下例(n=4)所示的高和下底均为n的等腰梯形:
**********
********
******
****
分析:
此题图形是上题图形的垂直反转,图形第i行由n-i个空格和(2i-1)+(n-1)个’*’号组成(i=n,n-1,……2,1,):
。
main()/*sj1-1-6*/
{inti,j,n;
scanf(“%d”,&n);
for(i=n;i>=1;i--)
{for(j=1;j<=n-i;j++)printf(””);
for(j=1;j<=2*i-1+(n-1);j++)printf(”*”);
printf(“\n”);
}
}
1-7.编程,输入n,输出如下例(n=3)所示的边长为n的菱形:
*
***
*****
***
*
分析:
图形上半部分第i行由n-i个空格和2*i-1个*组成。
图形下半部分与上半部分对称,n+i行与n-i行一样。
main()/*sj1-1-7*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)/*输出图形的上半部分(含中心行)*/
{for(j=1;j<=n-i+2*i-1;j++)
if(j>n-i)printf(”*”);
elseprintf(””);
printf(“\n”);
}
for(i=n-1;i>=1;i--)/*输出图形的下半部分(不含中心行)*/
{for(j=1;j<=n-i+2*i-1;j++)
if(j>n-i)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-8.编程,输入n值,输出如下例(n=4)所示的边长均为n的正六边形:
****
******
********
**********
********
******
****
分析:
图形上半部分第i行由n-i个空格和(2i-1)+(n-1)个’*’号组成(i=1,2,……,n)。
图形下半部分与上半部分对称,n+i行与n-i行一样。
main()/*sj1-1-8*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)/*输出图形的上半部分(含中心行)*/
{for(j=1;j<=n-i;j++)printf(””);
for(j=1;j<=2*i-1+(n-1);j++)printf(”*”);
printf(“\n”);
}
for(i=n-1;i>=1;i--)/*输出图形的下半部分(不含中心行)*/
{for(j=1;j<=n-i;j++)printf(””);
for(j=1;j<=2*i-1+(n-1);j++)printf(”*”);
printf(“\n”);
}
}
1-9.编程,输入n值,输出如下例(n=4)所示的图形:
****
*
*
****
分析:
图形第1、n行上有n个‘*’。
其它第i行(i=2,3,..,n-1)由n-i个空格和一个*组成。
即n-i+1列为*,其余为空格。
main()/*sj1-1-9*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
if(j==n-i+1||i==1||i==n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-10.编程,输入n值,输出如下例(n=4)所示的图形:
****
*
*
****
分析:
图形第1、n行上有n个‘*’。
其它第i行(i=2,3,..,n-1)由i-1个空格和一个*组成。
即i列为*,其余为空格。
main()/*sj1-1-10*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
if(j==i||i==1||i==n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-11.编程,输入n值,输出如下例(n=5)所示的图形:
*****
**
**
**
*****
分析:
图形第i行由n-i个空格和n个符号组成,n个符号中第1行和第n行为n个’*’号,其他行的n个符号除了第n-i+1列和第n-i+n列为’*’号(i=2,……,n-1)外,其余为空格。
main()/*sj1-1-11*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)printf(””);
for(j=n-i+1;j<=n-i+n;j++)
if(j==n-i+1||j==n-i+n||i==1||i==n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-12.编程,输入n值,输出如下例(n=5)所示的图形:
*****
**
**
**
*****
分析:
图形第i行由i-1个空格和n个符号组成,n个符号中第1行和第n行为n个’*’号,其他行的n个符号除了第i列和第i+n-1列为’*’号外,其余为空格(i=2,……,n-1)。
:
main()/*sj1-1-12*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i-1;j++)printf(””);
for(j=i;j<=i+n-1;j++)
if(j==i||j==i+n-1||i==1||i==n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-13.编程,输入n值,输出如下例(n=4)所示的图形:
*
**
**
*******
分析:
图形第i行由n-i个空格和2i-1个符号组成,2i-1个符号第n行全为’*’号,其他行的2i-1个符号除了第n-i+1列和第n-i+2i-1列为’*’号(i=2,……,n-1)外,其余为空格。
main()/*sj1-1-13*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)printf(””);
for(j=n-i+1;j<=n-i+2*i-1;j++)
if(j==n-i+1||j==n-i+2*i-1||i==n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-14.编程,输入n值,输出如下例(n=4)所示的图形:
*******
**
**
*
分析:
此题图形是上题图形的垂直反转,图形第i行由n-i个空格和(2i-1)个符号组成(i=n,n-1,……2,1,)。
2i-1个符号中第n行全为’*’号,其他行的2i-1个符号除了第n-i+1列和第n-i+2i-1列为’*’号(i=2,……,n-1)外,其余为空格。
main()/*sj1-1-14*/
{inti,j,n;
scanf(“%d”,&n);
for(i=n;i>=1;i--)
{for(j=1;j<=n-i;j++)printf(””);
for(j=n-i+1;j<=n-i+2*i-1;j++)
if(j==n-i+1||j==n-i+2*i-1||i==n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-15.编程,输入n值,输出如下例(n=4)所示的高和上底均为n的等腰梯形:
****
**
**
**********
分析:
图形第i行由n-i个空格和2i-1+n-1个符号组成(i=1,……,n),2i-1+n-1个符号中第1行和第n行全为’*’号,其他行的2i-1+n-1个符号除了第n-i+1列和第n-i+2i-1+n-1列为’*’号(i=2,……,n-1)外,其余为空格。
main()/*sj1-1-15*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)printf(””);
for(j=n-i+1;j<=n-i+2*i-1+n-1;j++)
if(j==n-i+1||j==n-i+2*i-1+n-1||i==1||i==n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-16.编程,输入n值,输出如下例(n=4)所示的高和下底均为n的等腰梯形:
**********
**
**
****
分析:
此题图形是上题图形的垂直反转,图形第i行由n-i个空格和2i-1+n-1个符号组成(i=n,……2,1),2i-1+n-1个符号中第1行和第n行全为’*’号,其他行的2i-1+n-1个符号除了第n-i+1列和第n-i+2i-1+n-1列为’*’号(i=n-1,……,2)外,其余为空格。
main()/*sj1-1-16*/
{inti,j,n;
scanf(“%d”,&n);
for(i=n;i>=1;i--)
{for(j=1;j<=n-i;j++)printf(””);
for(j=n-i+1;j<=n-i+2*i-1+n-1;j++)
if(j==n-i+1||j==n-i+2*i-1+n-1||i==1||i==n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-17.编程,输入n值,输出下例(n=3)所示的边长为n的菱形:
*
**
**
**
*
分析:
图形上半部分第i行由n-i个空格和2i-1个符号组成(i=1,……,n),2i-1个符号中,除了第n-i+1列和第n-i+2i-1列为’*’号(i=2,……,n-1)外,其余为空格。
图形下半部分第n+i行与上半部分第n-i行相同(i=1,……,n-1).
main()/*sj1-1-17*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)/*图形上半部分*/
{for(j=1;j<=n-i+2*i-1;j++)
if(j==n-i+1||j==n-i+2*i-1)printf(”*”);
elseprintf(””);
printf(“\n”);
}
for(i=n-1;i>=1;i--)/*图形下半部分*/
{for(j=1;j<=n-i+2*i-1;j++)
if(j==n-i+1||j==n-i+2*i-1)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-18.编程,输入n值,输出下例(n=4)所示的边长为n的正六边形:
****
**
**
**
**
**
****
分析:
图形上半部分第i行由n-i个空格和2i-1+n-1个符号组成(i=1,……,n),2i-1+n-1个符号中第1行全为’*’号,其他行的2i-1+n-1个符号除了第n-i+1列和第n-i+2i-1+n-1列为’*’号(i=2,……,n-1)外,其余为空格。
图形下半部分第n+i行与图形上半部分第n-i行相同(i=1,……,n-1)。
main()/*sj1-1-18*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)printf(””);
for(j=n-i+1;j<=n-i+2*i-1+n-1;j++)
if(j==n-i+1||j==n-i+2*i-1+n-1||i==1)printf(”*”);
elseprintf(””);
printf(“\n”);
}
for(i=n-1;i>=1;i--)
{for(j=1;j<=n-i;j++)printf(””);
for(j=n-i+1;j<=n-i+2*i-1+n-1;j++)
if(j==n-i+1||j==n-i+2*i-1+n-1||i==1)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-19.编程,输入n值,输出下例(n=5)所示的高为n的图形:
**
****
******
********
*********
分析:
图形第i行由2n-1个符号组成,其中第i+1列至第2n-1-i列为空格其余为‘*’(i=1,2,…,n)。
main()/*sj1-1-19*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=2*n-1;j++)
if(j>=i+1&&j<=2*n-1-i)printf(””);
elseprintf(”*”);
printf(“\n”);
}
}
1-20.编程,输入n值,输出下例(n=5)所示的高为n的图形:
*********
********
******
****
**
分析:
图形第i(i=n,n-1,…,1)行由2n-1个符号组成,其中第i+1列至第2n-1-i列为空格其余为‘*’。
main()/*sj1-1-20*/
{inti,j,n;
scanf(“%d”,&n);
for(i=n;i>=1;i--)
{for(j=1;j<=2*n-1;j++)
if(j>=i+1&&j<=2*n-1-i)printf(””);
elseprintf(”*”);
printf(“\n”);
}
}
1-21.编程,输入n值,输出下例(n=3)所示的图形:
**
**
*
**
**
分析:
图形第i(i=1,2,…,2n-1)行对角线(i=j和i+j=2n)上为‘*’,其余为空格。
main()/*sj1-1-21*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=2*n-1;i++)
{for(j=1;j<=2*n-1;j++)
if(j==i||i+j==2*n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-22.编程,输入n值,输出下例(n=3)所示的图形:
**
**
*
*
*
分析:
图形第i(i=1,2,…,n)行对角线(i=j和i+j=2n)上为‘*’,其余为空格。
第n+1,n+2,…,2n-1行的第n列为‘*’,其余为空格。
main()/*sj1-1-22*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=2*n-1;i++)
{for(j=1;j<=2*n-1;j++)
{if(i<=n)
if(j==i||i+j==2*n)printf("*");
elseprintf("");
elseif(j==n)printf("*");
elseprintf("");
}
printf(“\n”);
}
}
1-23.编程,输入n值,输出下例(n=4)所示的图形:
**
**
**
*
**
**
**
分析:
图形上半部分第1列和第n-i+1列为‘*’,其余为空格。
图形下半部分与上半部分对称,n+i行与n-i行相同。
main()/*sj1-1-23*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)/*输出图形的上半部分(含中心行)*/
{for(j=1;j<=n-i+1;j++)
if(j==1||j==n-i+1)printf(”*”);
elseprintf(””);
printf(“\n”);
}
for(i=n-1;i>=1;i--)/*输出图形的下半部分(不含中心行)*/
{for(j=1;j<=n-i+1;j++)
if(j==1||j==n-i+1)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-24.编程,输入n值,输出下例(n=5)所示的图形:
**
***
***
***
**
分析:
图形第i行的第1、n列和i列为*,其余为空格。
main()/*sj1-1-24*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
if(j==1||j==i||j==n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-25.编程,输入n值,输出下例(n=5)所示的图形:
**
**
**
**
*
分析:
图形第i(i=1,2,…,n)行对角线(i=j和i+j=2n)上为‘*’,其余为空格。
main()/*sj1-1-25*/
{inti,j,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=2*n-1;j++)
if(j==i||i+j==2*n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-26.编程,输入n值,输出下例(n=5)所示的图形:
*
**
**
**
**
分析:
此题图形是上题图形的垂直反转,图形第i(i=n,n-1,…,1)行对角线(i=j和i+j=2n)上为‘*’,其余为空格。
main()/*sj1-1-26*/
{inti,j,n;
scanf(“%d”,&n);
for(i=n;i>=1;i--)
{for(j=1;j<=2*n-1;j++)
if(j==i||i+j==2*n)printf(”*”);
elseprintf(””);
printf(“\n”);
}
}
1-27.编程,打印下列上三角形式的乘法九九表。
123456789
----------------------------
123456789
4681012141618
9141518212427
162024283236
25303