C语言第三次作业练习

以下程序教材基于 谭浩强C程序设计(第四版)

第1题 在Visual C++ 6.0环境中输入并运行例4.1。

/*此程序编写于,2017314日,目的练习*/

# include
# include

int main(void)
{
    double a,b,c,disc,x1,x2,p,q;

    printf("请输入a,b,c的值,中间以逗号隔开:\n");
    scanf("%lf,%lf,%lf",&a,&b,&c);
    disc=b*b-4*a*c;
    if(disc<0)
        printf("此方程无实根\n");
    else
    {
        p=-b/(2.0*a);
        q=sqrt(disc)/(2.0*a);
        x1=p+q;
        x2=p-q;
        printf("实根为:\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
    }

    return 0;
}

第2题 在Visual C++ 6.0环境中输入并运行例4.2。

/*此程序编写于2017年3月15日,目的:输入两个实数,按代数值
  有小到大的顺序输出这两个数。*/

# include

int main(void)
{
    float a,b,t;

    scanf("%f,%f",&a,&b);
    if(a>b)
    {
        t=a;
        a=b;
        b=t;
    }
    printf("%5.2f,%5.2f\n",a,b);

    return 0;
}

第3题 在Visual C++ 6.0环境中输入并运行例4.3。

/*此程序编写于,2017315日,目的:输入三个数要求有小到大的顺序输出*/

# include

int main(void)
{
    float a,b,c,t;

    scanf("%f,%f,%f",&a,&b,&c);
    if(a>b)
    {
        t=a;
        a=b;
        b=t;
    }
    if(a>c)
    {
        t=a;
        a=c;
        c=t;
    }
    if(b>c)
    {
        t=b;
        b=c;
        c=t;
    }
    printf("%5.2f,%5.2f,%5.2f\n",a,b,c);

    return 0;
}

第4题 在Visual C++ 6.0环境中输入并运行例4.4。

/*此程序编写与2017年3月15日,目的:输入一个字符,判断它是否为大写字母
  如果是,将他转换成小写字母;如果不是,不转换,然后输出最后的得到的
  字符*/

# include

int main(void)
{
    char ch;

    scanf("%c",&ch);
    ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
    printf("%c\n",ch);

    return 0;
}

第5题 在Visual C++ 6.0环境中输入并运行例4.5。

/*此程序编写于2017年3月15日,目的:输出函数*/

# include

int main(void)
{
    int x,y;

    scanf("%d",&x);
    if(x>=0)
        if(x>0)
            y=1;
        else
            y=0;
    else
        y=-1;
    printf("x=%d,y=%d\n",x,y);

    return 0;
}

第6题 在Visual C++ 6.0环境中输入并运行例4.6。

/*此程序编写于2017年3月15日,目的:要求按照成绩的等级输出分数段*/

# include

int main(void)
{
    char grade;

    scanf("%c",&grade);
    printf("Your score:");
    switch(grade)
    {
                case'A':printf("86~100\n");break;
        case'B':printf("70~84\n");break;
        case'C':printf("60~69\n");break;
        case'D':printf("<60\n");break;
        default:printf("enter data error!\n");
    }

    return 0;
}

第7题 在Visual C++ 6.0环境中输入并运行例4.8的程序3。

/*此程序编写与2017315日,目的:判断某一年是否为闰年*/

/*
# include
# include

int main(void)
{
    int year;
    bool leap;

    scanf("%d",&year);
    if(year%4==0)
    {
        if(year%100==0)
        {
            if(year%400==0)
                leap=true;
            else
                leap=false;
        }
        else
            leap=true;
    }
    else
        leap=false;
    if(leap==true)
        printf("%d is",year);
    else
        printf(%d is not",year);
    printf("a leap year.\n");

    return 0;
}
*/
# include

int main(void)
{
    int year,leap;
    printf("enter year:");
    scanf("%d",&year);
    if((year%4==0&&year%100!=0)||(year%400==0))
        leap=1;
    else
        leap=0;
    if(leap)
        printf("%d is",year);
    else
        printf("%d is not",year);
    printf("a leap year.\n");

    return 0;
}

第8题 教材P.112习题4。

/*此程序编写于2017年3月14日,目的:求三个整数中的最大值*/

# include

int main(void)
{
    int a,b,c,d,max;

    printf("请输入三个整数,中间以逗号隔开:\n");
    scanf("%d,%d,%d",&a,&b,&c);
    d = (a>b)?a:b;  //条件表达式(三目运算符),目的:将a,b中的大者存入d//
        max = (d>c)?d:c;
    printf("三个整数中最大的是%d\n",max);

    return 0;
}

第9题 教材P.112习题6。

/*此程序编写于2017314日,目的:输入x的值,输出y相对应的值*/

# include

int main(void)
{
    int x,y;

    printf("请输入x的值:");
    scanf("%d",&x);
    if(x<1)
    {
        y=x;
        printf("x=%d,  y=x=%d\n",x,y);
    }
    else if(x<10)
    {
        y=2*x-1;
        printf("x=%d,  y=2*x-1=%d\n",x,y);
    }
    else
    {
        y=3*x-11;
        printf("x=%d,  y=3*x-11=%d\n",x,y);
    }

    return 0;
}

第10题 教材P.112习题7。分析所列两个程序是否正确。

/*此程序编写于2017314日,目的分析程序*/

/*程序(1),错误,原因:else子句与第9行内嵌的if语句配对,而不是和第8行
  的if语句配对*/
# include

int main(void)
{
    int x,y;

    printf("enter x:");
    scanf("%d",&x);
    y=-1;
    if(x!=0)
        if(x>0)
            y=1;
        else
            y=0;
        printf("x=%d,y=%d\n,x,y);

    return 0;
}

/*程序(2),错误,错误原因:else子句与第9行内嵌的if语句配对,而不是和第8行
  的if语句配对*/
# include

int main(void)
{
    int x,y;

    printf("enter x:");
    scanf("%d",&x);
    y=0;
    if(x>=0)
        if(x>0)
            y=1;
        else
            y=-1;
        printf("x=%d,y=%d\n",x,y);

    return 0;
}

/*正确的程序应为如下:*/

# include

int main(void)
{
    int x,y;

    printf("enter x:");
        scanf("%d",&x);
    if(x<0)
        y=-1;
    else
        if(x==0)
            y=0;
        else
            y=1;
    printf("x=%d,y=%d\n",x,y);

    return 0;
}

你可能感兴趣的:(作业练习)