=" />
实验4
1.编程题输入2个正整数m和n(m≥1,n≤500),统计并输出m和n之间的素数的个数以及这些素数的和。素数就是只能被1和自身整除的正整数,最小的素数是
2.。要求定义并调用函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0。
输入:1 10
输出:count=4,sum=17
int prime(int b);
scanf("%d",&m);
scanf("%d",&n);
count=0;
sum=0;
for(b=m;b>=m&&b<=n;b++){
if(prime(b)!=0){
count++;
sum=sum+b;
}
}
printf("count=%d, sum=%d",count,sum);
return 0;
}
int prime(int b)
{
int c,i;
if(b==1) return 0;
c=sqrt(b);
for(i=2;i<=c;i++)
if(b%i==0){
return 0;
}
return 1;
}
2.编程题读入一个整数,统计并输出该数中2的个数。要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0)返回值是3。
输入:21252
输出:3
#include
int countdigit(int number,int digit)
{
int count=0;
while(number)
{
if((number%10)==digit)
count++;
number/=10;
}
return count;
}
int main()
{
int n,d;
printf("请输入一个整数:");
scanf("%d",&n);
d=2;
printf("%d在%d的出现次数:%d\n",d,n,countdigit(n,d));
return 0;
}
3. 编程题输入2个正整数m和n(1≤m,n≤1000),输出m~n之间的所有水仙花数。水仙花数是指各位数字的立方和等于其自身的数。要求定义并调用函数is(number)判断number的各位数字之立方和是否等于其自身。
输入:100 400
输出:153
370
371
#include
#include
int main(void)
{
int m,n,i,sum,a;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
for(i=m;i<=n;i++){
a=i;
sum=0;
do{
sum=sum+pow(a-10*(a/10),3);
a=a/10;
}while(a!=0);
if(i==sum){
printf("%d\n",i);
}
}
return 0;
}
4.计算1!+2!+…+n!的值,要求定义并调用函数fact(n)计算n!,函数类型是double。
输入:10
输出:1!+2!+3!+…+10!=4037913.000000
#include
double fact(int k)
{
double res = 1.0;
while (k>=1)
{
res *= k;
k--;
}
return res;
}
int main()
{
double sum=0.0;
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=fact(i);
printf("sum=%.5lf\n",sum);
return 0;
}
5. 编程题在主函数中,输入两个正整数,调用函数gbsh(x,y)求两个数的最小公倍数,在主函数中输出结果。
输入:5 6
输出:最小公倍数是30
#include
#include
int fun_gb(int,int);
int main()
{
int a,b,gy,gb;
printf("输入: ");
scanf("%d%d",&a,&b);
gb=fun_gb(a,b);
printf("输出:%d\n",gb);
return 0;
}
int fun_gb(int x,int y)
{
int z,i;
z=x*y;
for(i=x;i<=z;i++)
{
if(i%x==0&&i%y==0)
break;
return i; }