第3次作业后来加的作业
2018-10-26
以下内容仅供娱乐,欢迎随时探讨,请多指教!
后来加的作业:
利用循环嵌套完成下列各题:
1、求出100以内的素数。
#include"stdio.h"
#include"math.h"
int main()
{
int i,k,t=0;
printf("1\t");
for(i=2;i <= 100;i++)
{
for(k=2;k <= sqrt(i);k++)
{
if(i%k == 0)t=1;
}
if(0 == t)printf("%d\t",i);
t=0;
}
return 0;
}
2、打印形状为正方形和直角三角形(上三角和下三角)的乘法九九表。
正方形
#include"stdio.h"
int main()
{
int i,k;
for(i=1;i < 10;i++)
{
for(k=1;k <10;k++)
{
printf("%d*%d=%-3d",i,k,i*k);
}
printf("\n");
}
return 0;
}
上三角
#include"stdio.h"
int main()
{
int i,k;
// 控制行
for(i=1;i < 10;i++)
{//控制列
for(k=1;k <= 10-i;k++)
{
printf("%d*%d=%-3d",k,i,i*k);
}
printf("\n");
}
return 0;
}
下三角
#include"stdio.h"
int main()
{
int i,k;
// 控制行
for(i=10;i > 0;i--)
{//控制列
for(k=1;k <= 10-i;k++)
{
printf("%d*%d=%-3d",k,i,i*k);
}
printf("\n");
}
return 0;
}
3、将一笔零钱(大于8分,小于1元,精确到分)换算成1分、2分和5分的硬币组合。输入金额,输出共有多少种换法及换算的方案。
#include"stdio.h"
int main()
{
int a,b,c,money,count=0;
printf("input money(精确到分 角分)\n");
scanf("%d",&money);
if(money<8 || money>99)
printf("wrong input!\n");
else
{
for(a=0;a <= 100;a++)
for(b=0;b <= 100;b++)
for(c=0;c <= 100;c++)
{
if(a+2*b+5*c == money)
{
printf("%d分=%2d个1分+%2d个2分+%2d个5分\n"
,money,a,b,c);
count++;
}
}
printf("\n共有%d种换法\n",count);
}
return 0;
}
4、百马百担问题。有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担。编写程序求需大、中、小马各多少匹。
#include"stdio.h"
int main()
{
int a,b,c,count=0;
for(a=0;a <= 100;a++)
for(b=0;b <= 100;b++)
for(c=0;c <= 100;c++)
{
if(200 == 6*a+4*b+c)
{
printf("大马%2d中马%2d小马%2d\n"
,a,b,c);count++;
}
}
printf("有%d种\n",count);
return 0;
}
5、输入一个正整数,质因数分解。例如:输入18,输出18=233.
#include"stdio.h"
int main()
{
int n,i;
printf("请输入整数\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i <= n;i++)
{// 从小开始分解,开始都为质数
while(n%i == 0)
{
printf("%d",i);
n/=i;
if(n!=1) printf("*");
}
}
printf("\n");
return 0;
}
7、有一个数学等式:AB**CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。
#include"stdio.h"
int main()
{
int i,j,m,n;
for(i=10;i<100;i++)
{
for(j=10;j<100;j++)
{
m=(i%10)*10+i/10;n=(j%10)*10+j/10;
if(i*j == m*n)
printf("%d*%d=%d*%d\n",i,j,m,n);
}
}
return 0;
}
8、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
#include"stdio.h"
int main()
{
int i,j,k;
//以下为三重循环
for(i=1;i<5;i++)
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k) //确保i、j、k三位互不相同
printf("%d%d%d\n",i,j,k);
}
return 0;
}
9、一个数如果恰好等于它的因子(包括1,但不包括这个数本身)之和,这个数就称为完数。求100之内的所有完数。
#include"stdio.h"
int main()
{
int i,k,sum=0;
printf("1\n");
for(i=1;i < 101;i++)
{
for(k=1;k < i;k++)
{
if(i%k == 0)
{
sum+=k;
}
}
if(sum == i)printf("%d\n",i);
sum=0;
}
return 0;
}
10、打印下列图案,注意行数是任意的,可以由用户输入行数n
*
***
*****
*******
*****
***
*
代码
#include "stdio.h"
#include "math.h"
int main()
{
int n,i,j,k,t;
printf("input ")
scanf("%d",&n);
if(n%2==0) n-=1,t=2;
for(i=-n/2;i<=n/2;i++)
{
for(j=1;j<=abs(i);j++) printf(" ");
for(k=1;k<=n-abs(i)*2;k++) printf("*");
if(i==0&&2==t)
{
printf("\n");
for(k=1;k<=n-abs(i)*2;k++)
printf("*");
}
for(j=1;j<=abs(i);j++) printf(" ");
printf("\n");
}
}