2018.10.25 第3次作业
以下内容仅供娱乐,欢迎随时探讨,请多指教!
附加题:1.今有一对兔子,当他们长到第三个月时具有生育能力,从此每月必生一对小兔子,小兔子也和他的父母一样,问第20个月有多少兔子?
#include"stdio.h"
int main()
{
int month,a=1,b=1,c=2,i;
printf("input month\n");
scanf("%d",&month);
if(month < 3)
printf("%d",a);
else{
for(i=3 ; i <= month; i++)
{
a=b,b=c,c=b+a;
}
printf("%d\n",c);
}
return 0;
}
2.今有一只小牛,当他第四年时具有生育能力,从此每年必生一头小牛,他的小牛跟他一样,问第20年有多少头牛?
#include"stdio.h"
int main()
{
int year,a=1,b=1,c=1,d=2,i;
printf("input year\n");
scanf("%d",&year);
if(year < 4)
printf("%d",a);
else{
for(i=3 ; i <= year; i++)
{
a=b,b=c,c=d,d=c+a;
}
printf("%d",d);
}
return 0;
}
这是正式的题目:
1、输入一个数n,求出n!。
#include"stdio.h"
int main()
{
int n,i,s=1;
printf("输入一个数n\n");
scanf("%d",&n);
for(i=1 ; i <= n ; i++)
{
s*=i;
}
printf("%d\n",s);
return 0;
}
2、求
#include"stdio.h"
int main()
{
int i,n,s=1,sum=0;
//求5次n!总和
for(n=1 ;n <= 5;n ++)
{
//求n!
for(i=1 ; i <= n; i++)
{
s*=i;
}
sum+=s;s=1;
}
printf("%d\n",sum);
return 0;
}
3、求
#include"stdio.h"
int main()
{
int i,k,s1=0,s2=0,sum=0;
//求n的和
for(i=1;i <= 10;i++)
{
s1+=i;
}
//求n*n的和
for(k=1;k < 10+1;k++)
{
s2+=k*k;
}
sum=s1+s2;
printf("%d",sum);
return 0;
}
4、从键盘上输入一个整数,逆序输出各个位数上的数字。
#include"stdio.h"
int main()
{
int n,number;
printf("input number!\n");
scanf("%d",&number);
if(0 == number)
printf("0\n");
else{
while(number != 0)
{ //分解输出
n=number%10;
number/=10;
printf("%d ",n);
}
}
return 0;
}
5、编写程序,输出能被7整除且个位数为1的三位数,并统计其个数。(要求采用continue语句和不用continue语句的两种解法)
不用continue语句
#include"stdio.h"
int main()
{
int i,count=0;
for(i=1000;i < 10000;i++)
{
if(i%7 == 0 && i%10 == 1)
{
count++;
printf("%d\n",i);
}
}
printf("\n个数是%d\n",count);
return 0;
}
用continue语句
#include"stdio.h"
int main()
{
int i,count=0;
for(i=1000;i < 10000;i++)
{
if(i%7 == 0 && i%10 == 1);
else continue;
printf("%d\n",i);
count++;
}
printf("\n个数是%d\n",count);
return 0;
}
6、从500开始,求被3、5、7除余数均为2的前50个数。
#include"stdio.h"
int main()
{
int i,count=0;
for(i=500; ;i++)
{
if(i%7 == 2 && i%3 == 2 && i%5 == 2)
{
count++;
printf("%d\n",i);
if(count == 50)break;
}
}
return 0;
}
7、输入一个数,判断是否为素数。(只能被1和自身整除的数)
#include"math.h"
#include"stdio.h"
int main()
{
int n,i,t=0;
printf("input n\n");
scanf("%d",&n);
if(n < 4) printf("no\n");
else
{
for(i=2;i <= sqrt(n);i++)
{
if(n%i == 0) t=1;
}
if(1 == t) printf("no\n");
else printf("yes\n");
}
return 0;
}
8、编写程序,输入两个正整数,求出他们的最大公约数和最小公倍数(辗转相除法和穷举法两种)。
穷举法
#include"stdio.h"
int main()
{
int i,n1,n2;
printf("input two numbers\n");
scanf("%d%d",&n1,&n2);
for(i=n1;i > 1;i--)
{
if(n1%i == 0 && n2%i == 0)
{
printf("最大公约数是%d\n",i);
break;
}
}
printf("最小公倍数是%d\n",n1*n2/i);
return 0;
}
辗转相除法
#include"stdio.h"
int main()
{
int n1,n2,a,b,c;
printf("input two numbers\n");
scanf("%d%d",&n1,&n2);
a=n1,b=n2;
if(a < b)c=a,a=b,b=c;
//辗转相除法
while(b != 0)
{
a=a%b,b=b%a;
}
printf("最大公约数是%d\n",a);
printf("最小公倍数是%d\n",n1*n2/a);
return 0;
}
9、输入一批正整数,求出其最大值,输入以0结束。
#include"stdio.h"
int main()
{
int n,t;
printf("input numbers\n");
scanf("%d",&n);
if(0 == n)printf("0\n");
else
{
t=n;
while(n != 0)
{
scanf("%d",&n);
t=(n>t?n:t);
}
}
printf("max=%d\n",t);
return 0;
}
10、有一数列:2/1,3/2,5/3,8/5,…求出这个数列的前10项之和。
#include"stdio.h"
int main()
{
int i;
double a1=1,a2=2,a3,b1=2,b2=3,b3,sum=0;
sum=b1/a1+b2/a2;
for(i=3;i<=10;i++)
{
a3=a1+a2,a1=a2,a2=a3;
b3=b1+b2,b1=b2,b2=b3;
sum+=b3/a3;
}
printf("sum=%.2lf\n",sum);
return 0;
}
11、打印500以内的“水仙花数”。“水仙花数”是一个三位数,其各位数立方和等于该数本身。
#include"stdio.h"
#include"math.h"
int main()
{
int i,s=0,t;
for(i=100;i <= 500 ;i++)
{
t=i;
while(t>0)
{
s+=pow(t%10,3);t/=10;
}
if(s == i)
printf("%d\n",i);
s=0;
}
return 0;
}