第七次作业
第六次作业:
1、利用函数计算素数个数并求和:输入两个正整数m 和 n(1<=m, n<=500),统计并输出 m 和 n 之间的素数的个数以及这些素数的和。要求定义并调用函数 prime(m)判断 m 是否为素数。试编写相应程序。 2、写心得 3、评价前一个同学的作业
#include<stdio.h>
#include<math.h>
int prime(int m);
int main(void)
{
int count,m,n,i,sum;
printf("Enter m,n(1<=m,n<=500):\n");
scanf("%d%d",&m,&n);
for(count=0,sum=0;m<=n;m++){
if(prime(m)!=0){
count++;
sum=sum+m;}
}
printf("count=%d,sum=%d\n",count,sum);
return 0;
}
int prime(int m)
{
int i,s;
if(m==1)
return 0;
s=sqrt(m);
for(i=2;i<=s;i++)
if(m%i==0){
return 0;
}
return 1;
}
第七次作业:
3.使用函数输出指定范围内的完数:输入两个正整数m和n(1<=m,n<=1000),输出m~n之间的所有完数,完数就是因子和与他本身相等的数。要求定义并调用函数factorsum(number),它的功能是返回number的因子和。例如,factorsum(12)的返回值是16(1+2+3+4+6)。试编写相应程序。
#include<stdio.h>
int factorsum(int a);
int main(void)
{
int a,b,m,n;
printf("Enter m,n(1<=m,n<=1000):\n");
scanf("%d%d",&m,&n);
if(m<=n){
b=m;
m=n;
n=b;
}
if(n<=m){
b=n;
n=m;
m=b;
}
for(a=m;a<=n;a++){
if(factorsum(a)!=0)
printf("%d\n",a);}
return 0;
}
int factorsum(int a)
{
int i,sum;
sum=0;
for(i=1;i<=a/2;i++)
if(a%i==0){
sum=sum+i;
}.
if(sum!=a){
return 0;
}
return 1;
}
6.使用函数输出一个整数的逆序数:输入一个整数,将它逆序输出。要求定义并调用函数reverse(number),它的功能是返回number的逆序数。例如,reverse(12345)的返回值是54321。试编写相应程序。
#include<stdio.h>
int reverse (int x);
int main(void)
{
int x,y;
printf("Enter x:\n");
scanf("%d",&x);
y=reverse(x);
printf("%d\n",y);
return 0;
}
int reverse(int x)
{
int z;
z=0;
do{
z=z*10+x%10;
x/=10;
}
while(x!=0);
return z;
}
这次的程序编写比前面的都有难度,主要是加入了一个调用函数,调用函数就是把主函数中的一个变量用另一个函数来调用,以此来达到调用函数目的,我学习到了调用函数的作用,虽然不是很熟练,但我一定会努力练习,很好的掌握它。