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

int main()
{
 //输入一个数,要求输出其绝对值;
    float x;
    printf("请输入一个数字:");
    scanf_s("%f", &x);
    printf("%2.2f的绝对值是 ", x);
    if (x >= 0)
        printf("%2.2f", x);
    else
        printf("%2.2f", -x);

//// 【例4.1】在例3.5的基础上对程序进行改进。要求解得一元二次方程的根,分两种情况,b^2-4ac>=0和b^2-4ac<0;
//    double a, b, c, disc, x1, x2, p, q;
//    scanf_s("%lf%lf%lf", &a, &b, &c);
//    disc = b * b - 4 * a * c;
//    if (disc < 0) {
//        printf("这个方程没有根");
//    }
//    else {
//        //p = -b / 2 * a;
//        //q = sqrt(disc) / 2 * a;
//        p = -b / (2 * a);
//        q = sqrt(disc) / (2 * a);
//        x1 = p - q;
//        x2 = p + q;
//        printf("方程的根是:x1=%1.2lf,x2=%1.2lf\n", x1,x2);
//    }
//    printf("\n");


// 【】输入3个数a,b,c,要求按由大到小的顺序输出。
    //int a, b, c;
    ////scanf_s("%d,%d,%d", &a, &b, &c);
    //scanf_s("%d %d %d", &a, &b, &c); //用逗号,或者空格 隔开,都可以
    //--一种方法--
    //if (a > b) {
    //    if (b > c)
    //        printf("%d,%d,%d", a,b,c);
    //    else
    //        printf("%d,%d,%d", a, c, b);
    //}
    //if (a < b) {
    //    if (b < c)
    //        printf("%d,%d,%d", c, b, a);
    //    else
    //        printf("%d,%d,%d", b, c, a);
    //}
    ////--另一种--
    //int t=8;
    //if (a > b) {
    //    if (b < c) {
    //        t = c;c = b;b = t;
    //    }
    //}
    //if (a < b) {    // a,b
    //    t = a; a = b; b = t;
    //    if (b < c)  // c,b
    //        t = b; b = c; c = t;
    //}
    //printf("after ordering: %d,%d,%d",a,b,c);
    ////--另另一种--
    //int t;
    //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("after ordering: %d,%d,%d",a,b,c);

// 逻辑运算符和关系运算符
    //int a, b, c;
    //b = 12, c = 45;
    //a =!( b > c); // 关系表达式的值是逻辑值,即真或假;
    //printf("%d", a);

// 判断闰年:用一个逻辑表达式
    //int n,i;
    //scanf_s("%d", &n);
    ////n = 2000;
    //i = 2;
    //// 1).
    //if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0) {
    //    printf("是闰年1\n");
    //}
    //else{
    //    printf("不是闰年1\n");
    //}
    //// 2).
    //if ((n % 4 == 0) || n % 400 == 0) { 
    //    /* 这些条件不够,如果输入900,就会得出900是闰年的反馈,
    //    但是对于整百的年份来说,只有能被400整除的才能算闰年,
    //    900、1000、1100都不算闰年,因此要加上n%100!=0的条件*/
    //    printf("是闰年2\n");
    //}
    //else{
    //    printf("不是闰年2\n");
    //}

    // 条件运算符
    // 【4.4】输入一个字符,判别他是否为大写字母,如果是,
    //⭐ --将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符
    //char c;
    //scanf_s("%c",&c,20);
    //if (c >= 60 && c <= 90)
    //    printf("%c的小写是:%c\n",c,c + 32);
    //else
    //{
    //    printf("这不是大写字母,是%c\n", c);
    //}
    ////⭐ --给他写成条件表达式,如下,确实比if语句简洁
    ////(i >= 60 && i <= 90) ? printf("%c的小写是:%c\n", c, i + 32) : printf("这不是大写字母,是%c\n", i);
    ////⭐ --书上的答案:
    //char ch;
    //scanf_s("%c", &ch,20);
    //ch = (ch >= 65 && ch <= 90) ? (ch + 32) : (ch);
    //printf("%c", ch);

    //【例4.5】sgn函数
    //float x, y;
    //scanf_s("%f", &x);
    // --三个独立的if语句
    //if (x < 0)
    //    printf("y=-1");
    //if (x ==0)
    //    printf("y=0");
    //if (x >0)
    //    printf("y=1");
     //--一个嵌套的if语句
    //if (x <= 0) 
    //    if(x<0) y=-1;
    //    else y=0;
    //else y=1;
    //printf("y=%1.0f\n", y);

    // 【例4.6】switch语句。要求按照考试成绩的等级输出百分制分数段,
     //A等为85分以上,B等为70~84分,C等为60~69分,D等为60分以下。成绩的等级由键盘输入;
    //char grade;
    //scanf_s("%c",&grade,2);
    //printf("您的成绩是:");
    //switch (grade)
    //{
    //case'A':printf("85~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");
    //}
    
    // 【例4.7】switch语句处理菜单命令。 (这个写崩了
    //void action1(int,int),action2(int, int);
    //char ch;
    //int a = 3, b = 5;
    //ch = getchar();
    //switch (ch)
    //{
    //case 'a':
    //case 'A': action1(a, b); break;//调用action1函数,执行A操作
    //case 'b':
    //case 'B': action2(a, b);  break;//调用action2函数,执行B操作
    //default:  putchar('\a');//如果输入其他字符,发出警告\a是 转义字符 007,响铃符 BEL。
    //}
    //int x = 3, y = 4;
    //void action1(int x, int y);
    //{
    //    printf("x + y = % d\n",x+y); //执行加法的函数
    //}
    //void action2(int x, int y);
    //{
    //    printf("xy=%d\n",x*y); //执行乘法的函数
    //}


return 0; }

 

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


//// 【例4.7】switch语句处理菜单命令。 (这个写崩了
//void action1(int, int), action2(int, int);
//char ch;
//int a = 3, b = 5;
//ch = getchar();
//switch(ch)
//{
//case 'a':
//case 'A': action1(a, b); break;//调用action1函数,执行A操作
//case 'b':
//case 'B': action2(a, b);  break;//调用action2函数,执行B操作
//default:  putchar('\a');//如果输入其他字符,发出警告\a是 转义字符 007,响铃符 BEL。
//}
//int x = 3, y = 4;
//void action1(int x, int y)
//{
//    printf("x + y = % d\n",x+y); //执行加法的函数
//}
//void action2(int x, int y)
//{
//    printf("xy=%d\n",x*y); //执行乘法的函数
//}



int main()
{
// 判断某一年是否为闰年
        int lead = 0;
        int year ;
        printf("请输入一个年份:");
        scanf_s("%d", &year);
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
        // 意思是,当year整除4且不能整除100时;或者year能被400整除时;
        // 运算符优先级关系:算术>关系>逻辑 
        {
            lead = 1;
        }
        if (lead ==1) {
            printf("%d是闰年", year);
        }
        else {
            printf("%d不是闰年", year);
        }

    //// 求一元二次方程解:分四种情况
    //    double a, b, c, delta,p,q,x1,x2;
    //    //a = 1; b = 2; c = 1;
    //    a = 1; b = 2; c = 2;
    //    //a = 2; b = 6; c = 1;
    //
    //    delta = b * b - 4 * a * c;
    //    p = -b / (2 * a);
    //    q = sqrt(delta) / (2 * a); //问题:忘记括号,/和*的地位一样, 没有括号会先运算/
    //    x1 = p + q;
    //    x2 = p - q;
    //    if (a == 0) {
    //        printf("it is not a quadratic\n");
    //    }
    //    if (delta == 0) {
    //        printf("x1=x2=%8.4f",x1);
    //    }
    //    else {
    //        if (delta > 0) {
    //            printf("x1=%8.4f,x2=%8.4f", x1, x2);
    //        }
    //        else {
    //            printf("x1=%8.4f,x2=%8.4f", x1, x2);  // 没懂这玩意
    //            printf("i");
    //        }
    //    }

    ////// 求运输费用 (这题也他妈写崩了)
    //    int c, s;
    //    double p=1, w,d,f;
    //    scanf_s("请输入重量w、距离s:%lf,%d",  &w, &s); //  ! !这里怎么老有格式问题!!他妈的 !! 这玩意真他妈难搞
    //    if (s >= 3000) { c = 15; }
    //    else { c = s / 250; } //意思是,一旦路程除250的商的整数部分是某个数字,就执行case后面的赋值表达式;
    //    switch (c) {
    //    case 0:d = 0; break;
    //    case 1:d = 2; break;
    //    case 2:d = 5; break;
    //    case 3:
    //    case 4:d = 8; break;
    //    case 5:
    //    case 6:
    //    case 7:
    //    case 8:d = 10; break;
    //    case 9:
    //    case 10:
    //    case 11:
    //    case 12:d = 15; break;
    //    }
    //    //printf("discount=%f", d); // 妈的,d怎么就未初始化了 !!1
    //    f = p * w * s * (1 - 5 / 100);
    //    printf("freight =%15.4f\n", f);


    //// 书上的标准答案:
    //int c, s;
    //float p, w, d, f;
    //scanf_s("%f %f %d", &p, &w, &s);
    //if (s >= 3000) c = 12;
    //else c = s / 250;
    //switch (c)
    //{
    //case 0:d = 0; break;
    //case 1:d = 2; break;
    //case 2:
    //case 3:d = 5; break;
    //case 4:
    //case 5:
    //case 6:
    //case 7:d = 8; break;
    //case 8:
    //case 9:
    //case 10:
    //case 11:d = 10; break;
    //case 12:d = 15; break;
    //}
    //f = p * w * s * (1 - d / 100); // 有问题
    //printf("freight =%15.4f\n", f);

    //// 我的修稿版
    //int c, s;
    //float p , w, d, f;
    ////scanf_s("%f,%f,%d",&p, &w, &s); //  ! !这里怎么老有格式问题!! ————答案是,scanf_s()函数只能填格式符,不仅如此,格式符之间是什么,输入的时候也要保证是一样的符号
    //scanf_s("%f %f %d", &p, &w, &s);
    //if (s >= 3000) c = 12; 
    //else  c = s / 250;  //意思是,一旦路程除250的商的整数部分是某个数字,就执行case后面的赋值表达式;
    //switch (c)
    //{
    //case 0:d = 0; break;
    //case 1:d = 2; break;
    //case 2:
    //case 3:d = 5; break;
    //case 4:
    //case 5:
    //case 6:
    //case 7:d = 8; break;
    //case 8:
    //case 9:
    //case 10:
    //case 11:d = 10; break;
    //case 12:d = 15; break;
    //}
    //f = p * w * s * (1 - d / 100);
    //printf("freight =%15.4f\n", f);

    //// 判断逻辑表达式的值
    //int a = 3, b = 4, c = 5;
    //int x, y;
    //bool  i1,i2,i3,i4,i5;
    //i1 = a + b > c && b == c;
    //i2 = a || b + c && b - c;
    //i3 = !(a > b) && !c || 1;
    //i4 = !(x = a) && (y = b) && 0;
    //i5 = !(a + b) + c - 1 && b + c / 2;
    //printf("%d,%d,%d,%d,%d", i1, i2, i3, i4, i5);

    //// 有三个整数abc,由键盘输入,输出其最大值;
    //int a, b, c;
    //printf("please input 3 numbers:");
    //scanf_s("%d %d %d", &a, &b, &c);
    //printf("max=");
    //if (a > b) {
    //    if (b > c) {
    //        printf("%d", a);
    //    }
    //    else {
    //        if (a > c) {
    //            printf("%d", a);
    //        }
    //        else {
    //            printf("%d", c);
    //        }
    //    }
    //}
    //else {
    //    if (a > c) {
    //        printf("%d", b);
    //    }
    //    else {
    //        if (c > b) {
    //            printf("%d", c);
    //        }
    //        else {
    //            printf("%d", b);
    //        }
    //    }
    //}
    //putchar('\n');

    //// 从键盘输入一个小于1000 的整数,输出其平方根;要求先检查输入值是否符合条件;
    //int n;
    //float sqrtx;
    ////printf("请输入一个小于1000的整数:");
    ////scanf_s("%d", &n);
    ////if (n > 1000) {
    ////    printf("该数字大于1000!!");
    ////}
    ////else {
    ////    sqrtx = sqrt(n);
    ////    printf("平方根是%5.2f",sqrtx);
    ////}
    //
    //// 魔改版:可循环连续计算五次,限额改成一万
    //for (int i = 0; i < 5; i++) {
    //    printf("请输入一个小于10000的整数:");
    //    scanf_s("%d", &n);
    //    if (n > 10000) {
    //        printf("该数字大于10000!!\n");
    //    }
    //    else {
    //        sqrtx = sqrt(n);
    //        printf("平方根是%5.2f\n", sqrtx);
    //    }
    //}

    //// 对一个函数,写程序,输入x的值,输出y相应的值
    //double x;
    //x = 4;
    //printf("y=");
    //if (x < 1) { printf("%7.2f", x); }
    //if (x >= 1 && x < 10) { printf("%7.2f", 2 * x - 1); }
    //if (x >= 10) { printf("%7.2f", 3 * x - 11); }

    //// 给出一百分制成绩,要求输出成绩等级'A'、'B'、'C'、'D'、'E'.90分以上,80-89分,70-79分,60-69分,60分以下
    //int score;
    //char grade;
    ////score = 90;
    //printf("请输入分数:");
    //scanf_s("%d", &score);
    //switch (score/10)    
    //{
    //case 10:
    //case 9: grade = 'A'; break;
    //case 8: grade = 'B'; break;
    //case 7: grade = 'C'; break;
    //case 6: grade = 'D'; break;
    //case 5: 
    //case 4: 
    //case 3: 
    //case 2: 
    //case 1: 
    //case 0:grade = 'E'; break;
    //}
    //printf("score=%d;grade=%c", score,grade);

// 给一个不多于5位的正整数,要求
    //①求出它是几位数;
    //②分别输出每一位数字;
    //③按逆序输出各位数字,例如原数位321,应输出123;

    //const int Zhengzs = 34;
    // 求位数:用数字除以1、10、100、1000 ,一旦出现商在0-10这个范围内,就输出
    // the paragraphy写崩了,妈的
    //int i = 1;
    //int z = Zhengzs;
    //for (i; i < 10000; i = i * 10) {
    //    for (int j = 0; j < 5; j++) {
    //        if (z > 0) { z = Zhengzs / i; }
    //        if (z > 1 && z < 10) {
    //            printf("%d是%d位数字\n", Zhengzs, j);
    //        }
    //    }
    //}

    //int zhs = 32544;
    //int border;
    //printf("      位数=");
    ////if (zhs > 999999) { printf("7"); }
    ////else if (zhs > 99999) { printf("6"); }  //有了else if,这些和第一个if是一体的,只会满足其中一个条件,然后执行表达式
    //if (zhs > 9999) { border=5; }   //一旦执行完,就结束这个if选择语句;
    //else if (zhs > 999) { border = 4; }    //而倘使用if 替代所有的else if,那么这就是个if判断语句,后果是一旦if条件满足,将执行每一个if后面的表达式,如果是选择语句,就只执行符合条件的第一个;
    //else if (zhs > 99) { border = 3; }
    //else if (zhs > 9) { border=2; }
    //else { border=1; }
    //printf("%d\n", border);
    //printf("每位数字为:");
    //int ten_thou, thou, hund, ten, indiv;
    //ten_thou = zhs / 10000;
    //thou = (zhs - ten_thou * 10000)/1000;
    //hund = (zhs-thou * 1000 - ten_thou * 10000)/100;
    //ten = (zhs - hund * 100 - thou * 1000 - ten_thou * 10000) / 10;
    //indiv = zhs - ten * 10 - hund * 100 - thou * 1000 - ten_thou * 10000;
    //printf("%d,%d,%d,%d,%d\n", ten_thou, thou, hund, ten, indiv);
    //printf("反序数字为:");
    //switch (border) {
    //case 5:printf("%d,%d,%d,%d,%d", indiv, ten, hund, thou, ten_thou); break;
    //case 4:printf("%d,%d,%d,%d", indiv, ten, hund, thou); break;
    //case 3:printf("%d,%d,%d", indiv, ten, hund); break;
    //case 2:printf("%d,%d", indiv, ten); break;
    //case 1:printf("%d", indiv); break;
    //}
    //putchar('\n');

//// 企业发放的奖金根据利润提成
//double I = 156890;
//int bo;
//if (I < 100000) { bo = 1; }
//if (I > 100000&&I<200000) { bo = 2; }
//if (I > 200000&&I<400000) { bo = 3; }
//if (I > 400000&&I < 600000) { bo = 4; }
//if (I > 600000&&I< 1000000) { bo = 5; }
//if (I > 1000000) { bo = 6; }
//double JJ;
//switch (bo) {
//case 1:JJ = I * 0.010; break;
//case 2:JJ = 100000 * 0.1 + (I - 100000) * 0.075; break;
//case 3:JJ = 100000 * 0.1 + (200000-100000)* 0.075+(I-200000)*0.05; break;
//case 4:JJ = 100000 * 0.1 + (200000-100000)* 0.075+(400000-200000)*0.05+ (I - 400000) * 0.03; break;
//case 5:JJ = 100000 * 0.10 + (200000 - 100000) * 0.075 + (400000 - 200000) * 0.05 + (I - 400000) * 0.015; break;
//case 6:JJ = 100000 * 0.10 + (200000 - 100000) * 0.075 + (400000 - 200000) * 0.05 + (600000 - 400000) * 0.015+(I-600000)*0.01; break;
//}
//printf("当月奖金:%5.2lf", JJ);

//// 输入4个数,要求按由小到大顺序输出
//int a[4];
////= { 8,5,2,1 };
//for (int k = 0; k < 4; k++) {
//    scanf_s("%d", &a[k]);
//}
//int j;
//for (int i = 0; i < 4; i++) { // 需要对四个数字进行排序;没有这一步,排序只进行一次
//    for (j = 0; j < 3; j++) { // 只要进行三次比较;这里的j是三,因为当j=2时,j<3
//        if (a[j] > a[j + 1]) {
//            int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;
//        }
//    }
//}
//printf("after ordering:");
//for (int k = 0; k < 4; k++) {
//    printf("%d,", a[k]);
//}

// 12.有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),
   //圆半径为1,见图4.17.这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度。
//float x, y;
//scanf_s("%f,%f", &x, &y);
//if (x >= 1 && x <= 3 || x >= -3 && x <= -1) {
//    if (y >= 1 && y <= 3 || y >= -3 && y <= -1) {
//        printf("h=10m");
//    }
//    else {
//        printf("h=0m");
//    }
//}
//else {
//    printf("h=0m");
//}

    return 0;
}