C语言上机实践思路分享3

本文展示了多个C语言编程实例,包括计算自然对数底数e、统计正负整数个数、求解最大最小值及平均值、查找回文素数、满足特定条件的整数搜索等。通过这些实例,读者可以加深对C语言数值计算和条件判断的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验内容(方法和步骤):

1.求自然对数的底数 e=2.718281828…,e 的计算公式如下:

e=1+1/1!+1/2!+1/3!+…要求当最后一项的值小于10

-10 时结束。

程序代码:

#include <stdio.h>

int main()

{

  float e=1.0,k=1.0;

  int i,j=1;

  printf("e=");

  for(i=1;k>1e-10;i++)

  {

    j*=i;

    k=1.0/j;//如果是k=1/j那么最后结果只能精确到个位

    e+=k;

  }

  printf("%lf",e);

  return 0;

}

运行结果:

2.输入20个有符号整数,统计正整数、零、负整数的个数。

程序代码:

#include <stdio.h>

int main()

{

  int a=0,b=0,c=0,i,j;

  int d[20];//数组不能和其他变量同符号

  for(i=0;i<20;i++)

  {

  scanf("%d",&d[i]);

    }

  for(j=0;j<20;j++)

  {

  if (d[j]<0)a+=1;

  else if (d[j]==0)

  b+=1;

  else

  c+=1;

    }

   

  printf("fushu=%d\n0=%d\nzhengshu=%d\n",a,b,c);

  return 0;

}

运行结果:

3.输入m个数,求其最大数、最小数和平均值。

程序代码:

#include<stdio.h>

int main()

{

  int m=0,a[177],i=0,aver=0,max=0,min=0,sum=0;

  printf("input a m");

  scanf("%d",&m);

  printf("input %d numbers\n",m);//

  for(i=0;i<m;i++)

  {

    scanf("%d",&a[i]);

    sum=sum+a[i];

  }

  aver=sum/m;

  max=a[0];

  min=a[0];

  for(i=0;i<m;i++)

  {

    if(a[i]>max)

    max=a[i];

  }

  for(i=0;i<m;i++)

  {

    if(a[i]<min)

    min=a[i];

  }

  printf("aver:%d,max:%d,min:%d",aver,max,min);

}

运行结果:

4. 任意的整数,当从左向右读与从右向左读是相同的,且为素数时,称为

回文素数。求 1000 以内的所有回文素数。

程序代码:

#include <stdio.h>

int isprime(int x)

{

  int j;

  if(x<=1)

      return 0;

  if(x==2)

      return 1;

  for(j=2;j<x;j++)

  {

    if(x%j==0)

        return 0;

    else if(x!=j+1)

        continue;

    else

        return 1;

  }

}

int main()

{

    int i;

    for(i=10;i<1000;i++)

        if(isprime(i)==1)

            if(i/100==0)

            {

                if(i/10==i%10)

                    printf("%5d",i);

                if(i%5==0)

                    printf("\n");

            }

            else

                if(i/100==i%10)

                    printf("%5d",i);

                if(i%5==0)

                    printf("\n");

    return 0;

}

运行结果:

5.在100和1000之间,有多少个其数字之和等于9而且该数可被5整除的整

数?

程序代码:

#include <stdio.h>

int main()

{

  int i,a,b,c,sum=0;

  for(i=100;i<=1000;i++)

  {

  a=i%10;

  b=(i%100-a)/10;

  c=(i-a-b*10)/100;

  if(a+b+c==9&&i%5==0)sum=sum+1;

    }

    printf("%d",sum);

  return 0; 

}

运行结果:

6.一位同学问老师和老师夫人的年龄是多少,老师说:“我年龄的平方加

上我夫人的年龄恰好等于1053,而我夫人年龄的平方加上我的年龄等于873。”

试计算老师和其夫人的年龄。

程序代码:

#include <stdio.h>

int main()

{

    int my,wy;

    for(my=0;my<=40;my++)

    {

    for(wy=0;wy<=40;wy++)

    {

    if ((my*my+wy==1053)&&(my+(wy*wy)==873))

    printf("%d %d",my,wy); 

    }

    }

    return 0;

}

运行结果:

7.输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立

方和等于该数本身。例如,153是一水仙花数,因为153=1^3+5^3+3^3.

程序代码:

#include <stdio.h>

int main()

{

  int i,a,b,c;

  for(i=100;i<=999;i++)

  {

  a=i%10;

  b=(i%100-a)/10;

  c=(i-a-b*10)/100;

  if(a*a*a+b*b*b+c*c*c==i)

  printf("%5d",i);

    }

    return 0;

}

运行结果:

*8.(选做题)一个球从100m高度自由落下,每次落地后反跳回原高度的

一半,再落下,再反弹。求它在第10次落地时,共经过多少米,第10次反弹多

高。

程序代码:

#include <stdio.h>

int main()

{

  int j=1;

  double sum=0.0,i=100.0;

    for(j=1;j<=10;j++)

  {

    sum+=i;

    i/=2;

    sum+=i;   

  }

  sum=sum-i;

  printf("%lf\n",sum);

  printf("%lf",i);

  return 0;

}

运行结果:

*9.(选做题)猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一

半,还不过瘾,又多吃了一个。第2天又将剩下的桃子吃了一半,又多吃了一

个。以后每天都吃了前一天剩下的一半另加一个。到第10天早上想再吃时,只

剩一个桃子了。求第一天共摘了多少桃子。

程序代码:

#include <stdio.h>

int main()

{

  int i=1,j;

  for(j=1;j<=10;j++)

  {

    i=(i+1)*2; 

  }

  printf("%d",i);

  return 0;

}

运算结果:

*10.(选做题)用二分法求下面方程在(-10,10)之间的根:2x 3 -4x 2 +3x-6=0.

(方程应该是打错了,应该第二项2次方才是正确的,否则一二项可以直接合并)

程序代码:

#include <stdio.h>

int main()

{

  double i;

  int m=-10,n=10;

  while(m<n)

  {

      i=(m+n)/2;

      if (2*i*i*i-4*i*i+3*i-6==0)

      {

        printf("%lf",i);

        break;

        }

      else if (2*i*i*i-4*i*i+3*i-6>0)n=i-1;

    else if (2*i*i*i-4*i*i+3*i-6<0)m=i+1;

    };

  return 0;

}

运行结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值