c语言例题

433 阅读3分钟

1.【分段函数】

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

保留2位小数

#include<stdio.h>
#include<math.h>
int main()
{
float x,f;
scanf("%f",&x);
if(x>=0 && x<2)
    f=sqrt(x+1);
else if(x>=2 && x<4)
    f=pow(x+2,5);
else if(x>=4)
    f=2*x+5;
else
   f=fabs(x);
 printf("%.2f\n",f);
    return 0;
}

2.【温度转换】

输出一张摄氏一华氏温度转换表,摄氏温度的取值区间是[-100℃,150℃ ],温度间隔5℃,要求定义和调用函数 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>
int main()
{
   int ctof(int c);
   int c;
   for(c=-100;c<=150;c=c+5) //循环量每次+5的写法
  {
       printf("c=%d->f=%d\n",c,ctof(c));  //注意函数的调用
  }
  return 0;
}
int ctof(int c)
{
   int f;
   f=32+c*9/5;  //注意公式
   return f;
}

3.【寻找矩阵最值】

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

#include<stdio.h>
int main()
{
    int n,max,b,c;  //max为矩阵中最大的元素,b为矩阵中最大元素的行下标,c为矩阵中最大元素的列下标
    int i,j;//i为矩阵行数,j为矩阵列数
    int a[6][6]; //定义一个6行6列的数组(存放矩阵)
    scanf("%d",&n);
    for(i=0;i<n;i++) //i范围为[0,5],不包括n
    {
        for(j=0;j<n;j++)  //j范围为[0,5]
        {
            scanf("%d",&a[i][j]);  //输入一个矩阵
        }
    }
    max=a[0][0];    //注意给max赋初值
    for(i=0;i<n;i++)  //i为行,i范围为[0,5]
    {
        for(j=0;j<n;j++)  //j为列,j范围为[0,5]
        {
            
            if(max<a[i][j])  //判断矩阵中最大的元素
            {
                max=a[i][j];  //矩阵中最大的元素
                b=i;  //矩阵中最大元素的行值
                c=j;  //矩阵中最大元素的列值
            }
        }
    }
    printf("%d %d %d\n",max,b+1,c+1);  //行下标和列下标需要+1
    return 0;
}

4.【成绩归类】

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

运行示例:

#include<stdio.h>
int main()
{
   int n; //n为学生的成绩
   int a=0,b=0,c=0; //a为优秀人数,b为通过人数,c为不及格人数
   while(1)  //无上限的死循环用while(1)
   {
       scanf("%d",&n); //输入一个数判断一下
        if(n<0 || n==0) break;
        else if(n>=85)
            a++;
        else if(n>=60 && n<85)
            b++;
        else
            c++;
        
   }
   printf(">=85:%d\n60-84:%d\n<60:%d\n",a,b,c);
    return 0;
}

5.【阶乘公式求值】

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

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

输出保留5位小数。

#include<stdio.h>
int main()
{
    double fact(int n);
    int n;
    double sum=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        sum=sum+1.0/fact(i);  //浮点数/浮点数=sum浮点数
    }
    printf("sum=%.5lf\n",sum);
    return 0;
}
double fact(int n)
{
    double j=1;  //注意此处的j,为double类型
    for(int i=1;i<=n;i++)
    {
        j=i*j;
    }
    return j;
}