zoukankan      html  css  js  c++  java
  • c语言小程序集锦

    程序1:已知y=2*x^2 - 3*x^4 + 6*x^5 - 4*x + 50,求x=0 到 x=2 以步长为0.2递增时y的最小值和最大值。

    知识点:

    pow(计算次方值)   
    相关函数   exp,log,log10 
    表头文件   #include<math.h> 
    定义函数   double pow(double x,double y); 
    函数说明   pow()用来计算以x为底的y次方值,即xy值,然后将结果返回。 
    返回值   返回x的y次方计算结果。 
    错误代码   EDOM 参数x为负数且参数y不是整数。 
    附加说明   使用GCC编译时请加入-lm。 
    代码:

    //程序1;

    #include
    <stdio.h>
    #include
    <stdlib.h>
    #include
    <math.h>

    float y(float x);

    float y(float x)
    {
    return 2*x*x - 3*pow(x,4.) + 6*pow(x,5.) - 4*x + 50;
    }

    int main()
    {
    float x;
    float miny;
    float maxy;
    x
    =0;
    miny
    = y(x);
    maxy
    = y(x);
    while (x<=2)
    {
    x
    += 0.2;
    if (miny > y(x))
    {
    miny
    = y(x);
    }
    if (maxy < y(x))
    {
    maxy
    = y(x);
    }
    }
    printf(
    "y的最小值为:%f\ny的最大值为:%f\n", miny, maxy);
    return 1;
    }

    运行结果:

    [hanxi@hanxi-workstation Documents]$ gcc -lm code1.c
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    y的最小值为:
    48.397758
    y的最大值为:
    194.000092

    程序2:画y=sin(x)和y=x/3在[-pi/2,pi/2]的图像

    没有画出坐标,直接画图像的形状,采用坐标描点。分y>0和y<0两种情况,y>0时,y=x/3在y=sin(x)后面。y<0时相反

    代码:

    //程序2;
    #include<stdio.h>
    #include
    <math.h>
    int main()
    {
    double y;
    int x,m,k;
    for(y=1;y>=-1;y-=0.1) //y为列方向,值从1到-1,步长为0.1
    {
    m
    =asin(y)*10; //计算出y对应的弧度m,乘以10为图形放大倍数
    k=3*y*10; //计算y=x/3对应的x,同样将图形放大10倍
    if (y>0)//[0,PI/2]
    {
    for(x=1;x<31+m;x++) printf(" ");
    printf(
    "*");
    for(;x<31+k; x++) printf(" ");
    printf(
    "*\n");
    }
    else//[-PI/2,0]
    {
    for (x=1; x < 31+k;x++) printf(" ");
    printf(
    "*");
    for(;x<31+m;x++) printf(" ");
    printf(
    "*\n");
    }
    }
    return 0;
    }

    运行结果:

    [hanxi@hanxi-workstation Documents]$ gcc -lm code2.c
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    * *
    * *
    * *
    * *
    * *
    * *
    * *
    * *
    * *
    * *
    **
    * *
    * *
    * *
    * *
    * *
    * *
    * *
    * *
    * *
    * *

    程序3:求一个方阵对角线上最小值

    思想:将矩阵存在二维数组a[m][n]中,比较对角线上的元素就是在下标i=j时比较,从而选出最小值

    代码:

    //程序3:求一个方阵对角线上最小值
    #include <stdio.h>

    int main()
    {
    int a[5][5];
    int i,j,min;
    for (i = 0; i<5; i++)
    {
    for (j=0; j<5; j++)
    {
    printf(
    "a[%d][%d]=",i,j);
    scanf(
    "%d",&a[i][j]);
    }
    }
    min
    =a[0][0];
    for (i = 0; i<5; i++)
    {
    if (min>a[i][i])
    {
    min
    =a[i][i];
    }
    }
    printf(
    "对角线最小值为:%d\n", min);
    return 1;
    }

    测试结果:

    [hanxi@hanxi-workstation Documents]$ gcc -lm code3.c
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    a[
    0][0]=2
    a[
    0][1]=3
    a[
    0][2]=6
    a[
    0][3]=5
    a[
    0][4]=9
    a[
    1][0]=6
    a[
    1][1]=3
    a[
    1][2]=5
    a[
    1][3]=2
    a[
    1][4]=1
    a[
    2][0]=4
    a[
    2][1]=5
    a[
    2][2]=9
    a[
    2][3]=8
    a[
    2][4]=5
    a[
    3][0]=7
    a[
    3][1]=0
    a[
    3][2]=2
    a[
    3][3]=1
    a[
    3][4]=3
    a[
    4][0]=6
    a[
    4][1]=8
    a[
    4][2]=5
    a[
    4][3]=4
    a[
    4][4]=9
    对角线最小值为:
    1

    程序4:设计一个函数,使用递归法求x^n,并在住函数中调用

    代码:

    //程序4:设计一个函数,使用递归法求x^n,并在住函数中调用
    #include <stdio.h>

    float fun(float x, int n)
    {
    if (n!=1)
    {
    return x*fun(x,n-1);
    }
    else
    {
    return x;
    }
    }

    int main()
    {
    float x;
    int n;
    printf(
    "请输入数据\nx=");
    scanf(
    "%f",&x);
    printf(
    "n=");
    scanf(
    "%d", &n);
    printf(
    "x^n=%f\n",fun(x,n));
    return 1;
    }

    测试结果:

    [hanxi@hanxi-workstation Documents]$ ./a.out
    请输入数据
    x
    =5
    n
    =2
    x
    ^n=25.000000
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    请输入数据
    x
    =6.2
    n
    =6
    x
    ^n=56800.225100

    程序5:设计一个函数void sear(int a[], int n);n为数组a的长度。 通过使用全局变量的方法求:tave(数组a中正数的平均值),nave(数组a中负数的平均值)

    代码:

    //程序5:设计一个函数void sear(int a[], int n);n为数组a的长度。 通过使用全局变量的方法求:tave(数组a中正数的平均值),nave(数组a中负数的平均值)

    #include
    <stdio.h>

    int tave=0,nave=0;

    void sear(int a[], int n)
    {
    int i;
    int tsum=0,t_n=0,nsum=0,n_n=0;
    for (i=0; i<n;i++)
    {
    if (a[i]>0)
    {
    tsum
    += a[i];
    t_n
    ++;
    }
    else
    {
    nsum
    += a[i];
    n_n
    ++;
    }
    }
    if (t_n!=0) tave=tsum/t_n;
    if (n_n!=0) nave=nsum/n_n;
    }

    int main()
    {
    int a[10];
    int i;
    printf(
    "输入数据\n");
    for (i=0; i<10; i++)
    {
    printf(
    "a[%d]=",i);
    scanf(
    "%d", &a[i]);
    }
    sear(a,
    10);
    printf(
    "结果: \n tave=%d \n nave=%d \n",tave,nave);
    return 1;
    }

    测试结果:

    [hanxi@hanxi-workstation Documents]$ ./a.out
    输入数据
    a[
    0]=5
    a[
    1]=2
    a[
    2]=2
    a[
    3]=25
    a[
    4]=5
    a[
    5]=2
    a[
    6]=-6
    a[
    7]=5
    a[
    8]=2
    a[
    9]=1
    结果:
    tave
    =5
    nave
    =-6

    程序6:求a*x^2+b*x+c=0的根

    代码:

    //求a*x^2+b*x+c=0的根

    #include
    <stdio.h>
    #include
    <math.h>

    int main()
    {
    float a,b,c;
    float tmp;

    printf(
    "输入数据\na=");
    scanf(
    "%f",&a);
    printf(
    "b=");
    scanf(
    "%f", &b);
    printf(
    "c=");
    scanf(
    "%f", &c);

    tmp
    =b*b-4*a*c;

    if (tmp>0)
    {
    printf(
    "方程的根为:%f和%f\n", (-b+sqrt(tmp))/2,(-b-sqrt(tmp))/2);
    }
    if (tmp==0)
    {
    printf(
    "方程的根为:%f\n", -b/2);
    }
    if (tmp<0)
    {
    printf(
    "方程无解\n");
    }
    return 1;
    }

    测试结果:

    [hanxi@hanxi-workstation Documents]$ gcc -lm code6.c
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    输入数据
    a
    =2
    b
    =2
    c
    =2
    方程无解
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    输入数据
    a
    =1
    b
    =0
    c
    =0
    方程的根为:
    -0.000000
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    输入数据
    a
    =58
    b
    =5
    c
    =4
    方程无解
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    输入数据
    a
    =2
    b
    =56
    c
    =169
    方程的根为:
    -6.881288和-49.118712

    程序7:设计函数output()和函数input();使功能和puts()和gets()相同

    代码:

    //程序7:设计函数output()和函数input();使功能和puts()和gets()相同

    #include
    <stdio.h>
    #include
    <stdlib.h>
    #include
    <string.h>

    void output(char a[])
    {
    int i;
    for (i=0; i<strlen(a); i++)
    {
    putchar(a[i]);
    }
    printf(
    "\n");
    }

    int main()
    {
    int i;
    char a[256]="als;ajasdlkfweiondvlj阿斯疯狂疯狂sdfdjf";
    output(a);
    }

    测试结果:

    [hanxi@hanxi-workstation Documents]$ gcc -lm code7.c
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    als;ajasdlkfweiondvlj阿斯疯狂疯狂sdfdjf

    程序8:求二维数组中每行元素的平均值

    代码:

    //程序8:求二维数组中每行元素的平均值

    #include
    <stdio.h>

    int main()
    {
    float a[10][10],sum;
    int i,j;
    for (i=0; i<10; i++)//传入数据
    {
    for (j=0; j<10; j++)
    {
    a[i][j]
    = (i+2)*(j+rand())*rand();//随便赋值
    }
    }
    for (i=0; i<10; i++)//求平均值
    {
    for (j=0; j<10; j++)
    {
    sum
    += a[i][j];
    }
    printf(
    "第%d行的平均值:%f\n", i, sum/10);
    }
    return 1;
    }

    测试结果:

    [hanxi@hanxi-workstation Documents]$ gcc -lm code8.c
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    第0行的平均值:
    733531699.200000
    第1行的平均值:
    455155609.600000
    第2行的平均值:
    625712537.600000
    第3行的平均值:
    36360051.200000
    第4行的平均值:
    -482607616.000000
    第5行的平均值:
    -487296256.000000
    第6行的平均值:
    -608275507.200000
    第7行的平均值:
    -720682086.400000
    第8行的平均值:
    -1062218342.400000
    第9行的平均值:
    -780733542.400000

    程序9:已知 char a[10],设计函数使下标从6开始的元素全部设为‘#’,并保持前6个元素的内容不变。

    代码:

    //程序9:已知 char a[10],设计函数使下标从6开始的元素全部设为‘#’,并保持前6个元素的内容不变。

    int main()
    {
    char a[10]="123456789a";
    int i;
    for (i=6; i<10;i++)
    {
    a[i]
    = '#';
    }
    puts(a);
    }

    结果:

    [hanxi@hanxi-workstation Documents]$ gcc -lm code9.c
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    123456####

    程序10:设计一个函数,功能为:删除字符串中所有个空格。

    代码:

    //程序10:设计一个函数,功能为:删除字符串中所有个空格。

    #include
    <stdio.h>
    #include
    <string.h>

    void fun(char *a)
    {
    int i=0,j=0;
    int len=strlen(a);
    for (i=0; i<len; i++)
    {
    while (a[i] == ' ')
    {
    for (j=i; j<len; j++)
    {
    a[j]
    = a[j+1];
    }
    }
    }
    }

    int main()
    {
    char a[256]="as;ldfj s a s kdl jfl;k sadjf";
    puts(a);
    fun(a);
    puts(a);
    return 1;
    }

    测试结果:

    [hanxi@hanxi-workstation Documents]$ gcc -lm code10.c
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    as;ldfj s a s kdl jfl;k sadjf
    as;ldfjsaskdljfl;ksadjf

    程序11:输入三条线段的长度,判定它能否组成一个三角形。如果可以构成三角形,打印它所构成的三角形所构成的类型:等边/等腰/直角/任意三角形。

    代码:

    //程序11:输入三条线段的长度,判定它能否组成一个三角形。如果可以构成三角形,打印它所构成的三角形所构成的类型:等边/等腰/直角/任意三角形。

    #include
    <stdio.h>

    int fun(float a, float b, float c)
    {
    int n=0;
    //n=0代表任意三角形
    //n=1代表等边三角形
    //n=2代表等腰三角形
    //n=3代表直角三角形
    //n=4代表不能构成三角形
    //n=5代表等要直角三角形

    if (a+b>c && abs(a-b)<c)
    {
    if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
    {
    n
    =3;
    }
    if (a==b || a==c || b==c)
    {
    n
    =2;
    if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
    {
    n
    =5;
    }
    }
    if (a==b && a==c)
    {
    n
    =1;
    }
    }
    else
    {
    n
    =4;
    }
    return n;
    }

    int main()
    {
    float a,b,c;
    printf(
    "输入数据\na=");
    scanf(
    "%f",&a);
    printf(
    "b=");
    scanf(
    "%f", &b);
    printf(
    "c=");
    scanf(
    "%f", &c);
    switch (fun(a,b,c))
    {
    case 0:
    printf(
    "三角形为任意三角形\n");
    break;
    case 1:
    printf(
    "三角形为等边三角形\n");
    break;
    case 2:
    printf(
    "三角形为等腰三角形\n");
    break;
    case 3:
    printf(
    "三角形为直角三角形\n");
    break;
    case 4:
    printf(
    "不能构成三角形\n");
    break;
    case 5:
    printf(
    "三角形为等腰直角三角形\n");
    break;
    }
    return 1;
    }

    测试结果:

    [hanxi@hanxi-workstation Documents]$ ./a.out
    输入数据
    a
    =12
    b
    =12
    c
    =25
    不能构成三角形
    [hanxi@hanxi
    -workstation Documents]$ ./a.out
    输入数据
    a
    =12
    b
    =12
    c
    =23
    三角形为等腰三角形

    作者:涵曦www.hanxi.cc
    出处:hanxi.cnblogs.com
    GitHub:github.com/hanxi
    Email:im.hanxi@gmail.com
    文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    《 Skynet 游戏服务器开发实战》

  • 相关阅读:
    httpd添加新模块
    编译httpd细节
    apache配置文件说明及一些指令
    xen原理
    EXSI的使用
    VMWare ESX server安装
    虚拟化技术
    Kvm命令集管理虚拟机
    RAID几种方式
    BZOJ1011 [HNOI2008]遥远的行星 【奇技淫巧】
  • 原文地址:https://www.cnblogs.com/hanxi/p/2096171.html
Copyright © 2011-2022 走看看