实验 19 问题回顾二 参考答案

题目描述

输入10个数,求它们的平均值,并输出大于平均值的数据的个数。

输入要求

10个数

输出要求

大于平均数的个数

假如输入

1 2 3 4 5 6 7 8 9 10

应当输出

5

#include <stdio.h>

 

int main()

{

    double a[10],Ave=0;

    int i,res=0;

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

    {

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

        Ave += a[i];

    }

    Ave /= 10;

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

    {

        if(a[i] > Ave)

            res ++;

    }

    printf("%d ",res);

 

    return 0;

}

题目描述

输入两个正整数m和n(m<n),求m到n之间(包括m和n)所有素数的和,要求定义并调用函数isprime(x)来判断x是否为素数(素数是除1以外只能被自身整除的自然数)。

输入要求

m n

输出要求

素数和

假如输入

2 3

应当输出

5

#include <stdio.h>

#include <math.h>

 

int isprime(int x)

{

   int len = (int)sqrt((double)x);

   int i;

   for(i=2;i<=len;i++)

   {

      if(x%i == 0)

         return 0;

   }

   return 1;

}

 

int main()

{

   int m,n;

   int i;

   int sum = 0;

   scanf("%d%d",&m,&n);

   if(m==1)

      m = 2;

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

   {

      if(isprime(i))

         sum += i;

   }

   printf("%d ",sum);

 

   return 0;

}

题目描述

输入10个数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。

输入要求

十个数

输出要求

交换后的十个数

假如输入

10 2 30 40 50 60 70 80 90 100

应当输出

10 100 30 40 50 60 70 80 90 2

#include <stdio.h>

#include <math.h>

 

int MinIndex(int *a,int n)

{

   int i,minInd = 0;

   for(i=1;i<n;i++)

   {

      if(fabs(a[minInd]) > fabs(a[i]))

         minInd = i;

   }

  

   return minInd;

}

 

int main()

{

   int i,minInd;

   int a[10],tmp;

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

   {

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

   }

   minInd = MinIndex(a,10);

   tmp = a[minInd];

   a[minInd] = a[9];

   a[9] = tmp;

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

   {

      if(i != 0)

      {

         putchar(' ');

      }

      printf("%d",a[i]);

   }

   putchar(' ');

 

   return 0;

}

题目描述

输入一个正数x和一个正整数n,求下列算式的值。要求顶一个调用2个函数:fact(n)计算n的阶乘;mypow(x,n)计算x的n次幂(即xn),两个函数的返回值类型是double。

      x - x2/2! + x3/3! + ... + (-1)n-1xn/n!

×输出保留4位小数。

输入要求

x n

输出要求

数列和

假如输入

2.0 3

应当输出

1.3333

#include <stdio.h>

#include <math.h>

 

double fact(int n)

{

   static double res = 1.0;

   res *= n;

 

   return res;

}

 

double mypow(double x,int n)

{

   return pow(x,(double)n);

}

 

int main()

{

   double x,sum=0;

   int n;

   int i;

   scanf("%lf %d",&x,&n);

   for(i=1;i<=n;i++)

   {

      if(i%2 == 0)

         sum -= mypow(x,i)/fact(i);

      else

         sum += mypow(x,i)/fact(i);

   }

   printf("%.4lf ",sum);

 

   return 0;

}

题目描述

输入x ,计算并输出下列分段函数 f(x) 的值。可以调用数学库函数:平方根函数sqrt(),绝对值函数fabs() 和幂函数 pow()。 

 保留2位小数

输入要求

x

输出要求

f(x)

假如输入

5

应当输出

15.00

#include <stdio.h>

#include <math.h>

 

int main()

{

   double x,res;

   scanf("%lf",&x);

   if(x<0)

      res = fabs(x);

   else if(0<=x && x<2)

      res = sqrt(x+1);

   else if(2<=x && x<4)

      res = pow(x+2,5.0);

   else

      res = 2*x+5;

   printf("%.2lf ",res);

 

   return 0;

}

题目描述

输出一张摄氏一华氏温度转换表,摄氏温度的取值区间是[-1000 C,1500C ],温度间隔50C。要求定义和调用函数 ctof(c),将摄氏温度C转换成华氏温度F,计算公式:

F = 32 + C* 9/5。

例如

c=0->f=32
c=5->f=41
c=10->f=50
c=15->f=59
c=20->f=68
c=25->f=77
c=30->f=86
c=35->f=95
c=40->f=104
c=45->f=113
c=50->f=122
c=55->f=131
c=60->f=140
c=65->f=149

输入要求

输出要求

假如输入

#include<stdio.h>

 

double ctof(double c)

{

   return 32+c*9.0/5.0;

}

 

int main()

{

   double c;

   for(c=-100;c<=150;c+=5)

   {

      printf("c=%.0lf->f=%.0lf ",c,ctof(c));

   }

 

   return 0;

}

题目描述

输入一个正整数n (1≤ n ≤6),再输入一个n 行n列的矩阵,找出该矩阵中绝对值最大的元素以及它的行下标和列下标。

输入要求

n

nxn

输出要求

数 行 列

假如输入

2

1 2

3 4

应当输出

4 2 2

#include<stdio.h>

 

int main()

{

   int n,r,c,x;

   int max = 0;

   int maxR=0,maxC=0;

   scanf("%d",&n);

   for(r=0;r<n;r++)

   {

      for(c=0;c<n;c++)

      {

         scanf("%d",&x);

         if(max < x)

         {

            max = x;

            maxR = r;

            maxC = c;

         }

      }

   }

   printf("%d %d %d ",max,maxR+1,maxC+1);

 

   return 0;

}

题目描述

编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。

输入要求

输出要求

假如输入

88 71 68 70 59 81 91 42 66 77 83 0

应当输出

>=85:2

60-84:7

<60:2

#include<stdio.h>

 

int main()

{

   int high=0,mid=0,low=0;

   int x;

   while(scanf("%d",&x), x>0)

   {

      if(x >= 85)

         high++;

      else if(x >= 60)

         mid++;

      else

         low++;

   }

   printf(">=85:%d 60-84:%d <60:%d ",high,mid,low);

 

   return 0;

}

题目描述

解一元二次方程是初中数学必须掌握的一个重点。在不考虑虚数的情况下,一个一元二次方程的解有三种情况:有两个不同的解、有两个相同的解以及无解。

本题需要你通过编程来解一元二次方程ax2+bx+c=0的根。

输入要求

输入数据有若干行,每行包含一元二次方程的三个系数,依次为二次项系数、一次项系数以及常数。系数a为0输出出错信息(Error!),三个系数同时为0时输入结束,该组数据不做处理。

输出要求

当一元二次方程有两个不同的解时,先输出较大的解,再输出较小的解,如:

x1=2.000000

x2=1.000000

当一元二次方程有两个相同的解时,两个解一起输出,如:

x1=x2=1.000000

当一元二次方程无解时,输出”No solution!”(忽略双引号)。

结果保留6位小数。

假如输入

1 -2 1

3 2 1

2 3 1

0 2 1

0 0 0

应当输出

x1=x2=1.000000

No solution!

x1=-0.500000

x2=-1.000000

Error!

#include <stdio.h>

#include <math.h>             

int main( )

{

   float  a,b,c,x1,x2,t;

   scanf("%f%f%f",&a,&b,&c);

   while (!(a==0 && b==0 && c==0))

   {

      if (a!=0)

      {

         if (b*b-4*a*c>=0)

         {

            t=sqrt(b*b-4*a*c);

            if (t>0)

            {

                x1=(-b+t)/(2*a);

                x2=(-b-t)/(2*a);

                printf("x1=%f ",x1);

                printf("x2=%f ",x2);

            }

            else

                printf("x1=x2=%f ",-b/2/a);

         }

         else

            printf("No solution! ");

      }

      else

         printf("Error! ");

      scanf("%f%f%f",&a,&b,&c);

   }

   return 0;

}

题目描述

编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。

1+1/2+ .... +1/n! 

输出保留5位小数。

输入要求

输出要求

假如输入

5

应当输出

sum=1.71667

#include <stdio.h>

 

double fact(int n)

{

   static double res = 1.0;

   res *= n;

   return res;

}

 

int main()

{

   int n,i;

   double sum = 0;

   scanf("%d",&n);

   for(i=1;i<=n;i++)

   {

      sum += 1.0/fact(i);

   }

   printf("sum=%.5lf ",sum);

 

   return 0;

}

原文地址:https://www.cnblogs.com/jlxuqiang/p/3475821.html