编程练习及答案
1. 编一程序求出满足不等式1+1/2+1/3+...+1/n5的最小n值。
#include "stdio.h"
void main()
{
    int n=1;
    float s=0;
    for (;s<5;n++)
      s+=(float) 1/n;
    printf("\nn=%d,s=%f",n,s);
    }
    2. 计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。
#include "stdio.h"
void main()
{
    int i=1,p=1,s=1;
    for (;i<=10;i++)
    { p=p*3;
      s+=p;
    }
    printf("\n1+3+3*3+  =%d",s);
    }
3. 求满足不等式22+42+...+n2<1000的最大n值,假定分别用is作为取偶数值和累加值的变量,并限定使用do循环编程。
#include "stdio.h"
void main()
{
    int i=2,s=0;
    do
    {
      s+=i*i;
      i+=2;
    } while(s<10);
    i-=2;
    s-=i*i;
    printf("\n2*2+4*4+6*6+……+%d*%d=%d",i,i,s);
    }
    4. 已知,求出并显示当x分别取-3.8, 6.4, 2.3, -4.2,8.9, 3.5, -5.0, 4.5时所对应的y值,要求把a定义为常量,其值设定为10.2x的每个值由键盘输入,并假定用-100作为终止标志,求平方根函数为sqrt(x)
#include "stdio.h"
#include "math.h"
#define a 10.2
void main()
{
    float x,y;
    scanf("%f",&x);
    while((int) x!=-100)
    {
      if (x>0) y=3*a*x*x+4*a*x-1;
      else y=sqrt(a*a+x*x);
      printf("x=%f,y=%f\n",x,y);
      scanf("%f",&x);
    }
}
    5. 求出从键盘上输入的10个整数中的最大值,要求输入变量用x表示,存储最大值的变量用max表示。
#include "stdio.h"
void main()
{
    int i,x,max;
    scanf("\n%d",&x);
    max=x;
    for (i=1;i<10;i++)
    {
      scanf("\n%d",&x);
      if (x>max) max=x;
    }
    printf("max=%d\n",max);
}
    6. 已知6a3015b36,求满足不定方程2a+5b=126的全部整数组解。如(13, 20)就是一个整数组解,并以所给的样式输出每个解。
#include "stdio.h"
void main()
{
    int a,b;
    for (a=6;a<31;a++)
      for (b=15;b<37;b++)
                    if (2*a+5*b==126) printf("a=%d,b=%d\n",a,b);
}
    7. 某班级学生进行百米跑测试,规定成绩在12秒以内(含12秒)为优秀,在12秒以上至15秒为达标,在15秒以上为不达标,编一程序,从键盘上输入每个人的成绩,以x作为输入变量,并以小于0的任何数作为终止标志,分别用变量c1,c2c3统计出成绩为优秀、达标和不达标的人数。
#include "stdio.h"
void main()
{
    int c1=0,c2=0,c3=0;
    int x;编程递归函数
    scanf("\n%d",&x);
    for (;x>0;)
    {
      if (x<=12) 
          c1++;
      else if (x<=15)
          c2++;
      else
          c3++;
      scanf("\n%d",&x);
    }
    printf("c1=%d,c2=%d,c3=%d\n",c1,c2,c3);
}
    8. 编写一个函数,分别求出由指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素中。
#include "stdio.h"
void total(char *a,int n,int *b)
{
    int i;
    for (i=0;i<n;i++)
      switch (a[i])
        {
            case '0':b[0]++;break;
            case '1':b[1]++;break;
            case '2':b[2]++;break;
            case '3':b[3]++;break;
            case '4':b[4]++;break;
            case '5':b[5]++;break;
            case '6':b[6]++;break;
            case '7':b[7]++;break;
            case '8':b[8]++;break;
            case '9':b[9]++;break;
        }
}
void main()
{
    char a[20];
    static int b[10];
    int i;
    scanf("\n%s",a);
    total(a,20,b);
    for (i=0;i<10;i++)
        printf("b[%d]=%d\n",i,b[i]);
}
    9. 按照下面函数原型语句编写一个函数,返回二维数组a[m][n]中所有元素的平均值,假定采用变量v存放平均值。
#include "stdio.h"
float avg(int a[][4],int m,int n)
{
    int i,j;
    float v=0.;
    for (i=0;i<m;i++)
      for (j=0;j<n;j++)
        v+=a[i][j];
    return v/(m*n);
}
void main()
{
    int a[3][4];
    int i,j;
    for (i=0;i<3;i++)
      for (j=0;j<4;j++)
        scanf("\n%d",&a[i][j]);
    printf("sum=%f\n",avg(a,3,4));

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。