l++;
printf("\n");
i++;
i=1;
while(i<=2*n-1)
printf("*");
i++;
printf("\n");
return 0;
选做 5.9 画个空心的梯形吧
编程,输入 n ,输出如下例( n=5 )所示的 高和上底均
为 n 的等腰空心梯形。
#include <stdio.h>
#include <stdlib.h>
int main()
int n,i=1,j,k;
scanf("%d",&n);
while(i<=n)
j=1;
while(j<=n-i)
printf(" ");
j++;
printf("*");
if(i==1)
for(k=1; k<=n-2; k++)
printf("*");
else if(i==n)
for(k=1; k<=3*n-4; k++)
printf("*");
else
for(k=1; k<=n+2*i-4; k++)
printf(" ");
printf("*");
j=1;
while(j<=n-i)
printf(" ");
j++;
printf("\n");
i++;
return 0;
选做 5.10 输出菱形图案
输入 n ,输出如下例( n=3 )所示的菱形:
#include <stdio.h>
#include <stdlib.h>
int main()
int n,i,j,k;
scanf("%d",&n);
for(i=1; i<=n; i++)
for(j=1; j<=n-i; j++)
printf(" ");
for(k=1; k<=2*i-1; k++)
printf("*");
printf("\n");
for(i=1; i<=n-1; i++)
for(j=1; j<=i; j++)
printf(" ");
for(k=1; k<=2*n-2*i-1; k++)
printf("*");
printf("\n");
return 0;
5.11 最大公约数
输入两个正整数 m 和 n,求它们的最大公约数和最小公倍数
比如,输入 m 和 n 的值分别为 14 和 21,则最大公约数为
7,最小公倍数为 42。
#include<stdio.h>
void main()
int m,n,i,j;
scanf("%d%d",&m,&n);
for(i=m;i>=1;i--)
if (n%i==0&&m%i==0)
{printf("the greatest common divisor is
%d\n",i); break;
for (j=m;;j++)
if (j%m==0&&j%n==0)
{printf("the least common multiple is
%d\n",j); break;
5.12 水仙花数
输出全部的水仙花数。所谓的水仙花数是指一个 3 位数,
其各位数字立方和等于该数本身。例如 153 是一水仙花
数,因为 153=13+53+33
输出语句:printf("%d\n",n);
#include <stdio.h>
void main()
int n, i, j, k;
for(n=100; n<=999; n=n+1)
i = n/100; // 取出 n 的百位数
j = (n/10)%10; // 取数 n 的十位数
k = n%10; // 取出 n 的个位数
if(n==i*i*i+j*j*j+k*k*k)
printf("%d\n",n);
5.13 完数
一个数假如恰好等于它的因子之和,这个数就称为完数。
例如,6 的因子为 1,2,3,且 6=1+2+3,因此 6 是完数,从
键盘上输入一个正整数,推断其是否为完数。假如是,则
依 据 如下格 式 输 出 。 比 如,输 入 6 , 则输出 Yes , its
factors are 1 2 3;假如输入 8,则输出 No
#include<stdio.h>
#include<math.h>
int main()
int n,i,c,sum=0;
scanf("%d",&n);
for(i=1;i<n;i++)
if(n%i==0)
sum=sum+i;
if(n==sum)
printf("Yes,its factors are ");
for(c=1; c<n; c++)
if(n%c==0)
printf(" %d",c);
printf("\n");
else
printf("No\n");
5.14 素数
输入两个正整数 m 和 n,求出[m,n]区间的全部素数
#include <stdio.h>
#include <math.h>
void main()
{int m,n,i,j,k;