4th day

4th day,第1张

//

//  main.c

//  Day4

//

 P60-61.算术运算和算术表达式。


     1.算术运算符,是来做算术运算的。


         + 求数学和

         - 求数学差

         * 求数学积

         / 求数学商

         % 求模运算符(求余数)

     2.算术表达式

         由算术运算符链接起来的式子,就叫算术表达式。


         int num = 10 + 10;

         先声明int类型的变量num,然后再计算10+10这个表达式的结果,然后将这个表达式的结果赋值给num变量。


     3.分解每一种算术运算符:

        3.1 + 加法运算符  作用:求左右两边的数据的数学和。


            参与算术表达式的数据叫做 *** 作数, *** 作数可以是变量。


        3.2 - 减法运算符

        3.3 * 乘法运算符

        3.4 / 除法运算符

            int res  = 10 / 4 记住:这个算术表达式的 *** 作数都是int类型的,所以这个表达式的结果是2,不是2.5 所以正确的方式l应该是使用int变量来保存结果

            double res = 10 / 4 先声明double类型的变量res也不对,因为int的10除以int的4 结果还是整数型的2 他讲结果赋值给res 会自动转换成2.0 不是2.5

            如果要得到正确结果。


            a.将任1 *** 作数的类型声明成double。


                 double num1 = 10;

                 int num2 = 4;

                 double res = num1 / num2;

            b.将左侧 *** 作数乘以1.0变为double

                 int num1 = 10;

                 int num2 = 4;

                 double res = num1 * 1.0 / num2;

        3.5 % 求模运算符(求余数)

                10 % 3 的结果就是10除以3的余数

                int num1 = 10;

                int num2 = 3;

                printf("%d\n",num1 % num2);

            应用场景比较多,能做的事情也很多

            a. 可以判断1个数是不是另外1个数的倍数。


            b. 可以判断1个数是不是能被另外1个数整除。


            注意:

                a.求模运算.实型数据无法参与求模运算,因为没有意义


                b.m % n 的结果一定是在 0 至(n-1)之间的.

    4.算术表达式的结果的类型。


        1.算术表达式都有一个结果,一般处理方式是声明1个变量将这个表达式的结果储存起来。


          用来存储表达式的结果的变量应该声明对应类型的变量。


        2.如果参与算术表达式的 *** 作数的类型都是一致的,那么这个算术表达式的结果的类型就是这个类型。


        3.如果参与算术表达式的 *** 作数的类型不一致,z那么这个算数表达式的结果的类型就是范围最大的那个数。


            int < float < double

    小练习:

         某超市衣服120.88一件,裤子89.9一条。


让顾客输入自己买的衣服数量和裤子数量,

         1). 显示他应该付款多少钱。


         2). 如果商家打88折 再显示打折以后应该付款多少钱

        做题目做项目都要遵循:

            1.先搞清楚需求。


            2.分析。


                a.先把自己当做普通人,遇到这样的问题该如何解决。


                b.写注释,思路和步骤使用中文写出来。


                c.再根据思路注释写代码。


#include 

int main(int argc, const char * argv[])
{
    double yiFuPrice = 120.88;
    double kuZiPrice = 89.9;
    int yiFuCount = 0 ,kuZiCount = 0;
    printf("请输入要购买的衣服 裤子的数量:");
    scanf("%d%d",&yiFuCount,&kuZiCount);
    double money = yiFuPrice * yiFuCount + kuZiPrice * kuZiCount;
    double youHuiMoney= money * .88;
    printf("【总     价】:%.2lf\n",money);
    printf("【优惠后总价】:%.2lf\n",youHuiMoney);
}
        

    5.算术运算符的优先级.

         先乘除模,再加减,如果同级别,就从左到右依次计算。


         使用小括号可以改变运算的优先级。


如果有小括号,就先算括号里的。


    6.char数据.

        char类型的数据可以参与算术运算。


        当算术表达式中的 *** 作数是一个char类型的数据的时候,会先将这个char数据的ASCII码取出来代替。


然后再参与运算。


        所以,如果 *** 作数是一个char类型的,实际它是一个int类型的数据在参与运算。


        例:

         char ch = 'a';   //a的ascii码=97
         int num = 10 ;
         int sum = ch + num;
         printf("sum = %d\n", sum);

               输出结果: sum = 107

        要将一个小写char字母转为大写字母,就 - 32 ,如果大写转小写 就 +32 :

         int main(int argc, const char * argv[])
        {
             char ch = 'x';
             char ch2 = ch - 32 ; //小写转大写. 大写转小写就是ch+32
             printf("ch = %c\n", ch2);
             return 0;
         }

 P64-复合赋值运算符


    1.要将一个变量的值再自身的基础上增加指定的数。


         int num = 10;

         num = num + 2; //num=12

    2.让一个变量的值再自身的基础上增加指定的数的简写方式。


           使用复合运算符 : +=

         int num =10;

         num += 2; //完全等价于 num = num + 2

    3.其他复合运算符

     -= num        例: -= 2 //完全等价于 num = num - 2

     *= num        例:*= 2 //完全等价于 num = num * 2

     /= num         例:/= 2 //完全等价于 num = num / 2

     %= num       例:%= 2 //完全等价于 num = num % 2

    4.如果以后你要改变1个变量的值,是在资深的基础之上做改变 那么久可以使用复合赋值运算符

 P65-自增自减运算符。


    1.自增运算符。


      ++

    2.自增表达式。


        2.1 前自增表达式

            int num = 1;

            ++num;

        2.2 后自增表达式

             int num = 1;

             num++;

        3.3.无论是前自增表达式,还是后自增表达式,都是将自身的值+1.

    3.自增表达式是1个表达式,既然是表达式,那么必然就有一个结果,那么我们就用一个变量吧这个表达式的结果存储起来。


        3.1 后自增表达式的结果的计算方式:

            先将自身的值取出来,作为后自增表达式的结果,然后再讲自身的值+1

            int i = 1;

            int j = i++; //j = 1  先赋值1,然后再将i的值+1

        3.2 前自增表达式的结果的计算方式:

            先将自身的值+1,然后在将自身的值取出来作为表达式的结果。


            int i = 1;

            int j = ++i; //j = 2 先将i的值+1 然后再赋值。


    4.自增运算符的优先级比算术运算符的优先级要高。


         int i = 1;
         int j = 2;
         int k =i++ + ++j + i++;
//              1/2 + 3/3 + 2/3
//               1   + 3   + 2

         printf("i = %d\n", i); //3
         printf("j = %d\n", j); //3
         printf("k = %d\n", k); //6
         return 0;


         int i = 1;
         int j = i++ + ++i + i++ + ++i + i++;
         //      1/2  + 3/3 + 3/4 +5/5 + 5/6
         printf("i = %d\n", i); //i=6
         printf("j = %d\n", j); //j=17

    5.自减如是。


 P66 - 逗号表达式:

    1.逗号在C语言中也是1个运算符。


    2.逗号表达式:

     就是有逗号连接起来的1个式子。


     用逗号将其他的表达式连起来,就叫逗号表达式。


    语法格式:

        表达式1,表达式2,表达式3,表达式4,......表达式n;

    3.逗号表达式的执行步骤和结果。


        从头到尾去执行每个表达式,最后1个子表达式的结果就是整个逗号表达式的结果,

         int i = 0,j = 1,k = 2;
         int num =( i + 3 , j + 3, k + 3, i + k );


         printf("i = %d\n", i);//i = 0
         printf("j = %d\n", j);//j = 1
         printf("k = %d\n", k);//K = 2
         printf("num = %d\n",num);//num = 2

    4.逗号表达式的目的,并不是想要前面表达式的结果,只是让前面表达式去执行,要最后一个表达式的结果。


      前面的表达式只是想要其执行,不关心结果,因为前面的表达式一旦执行就会影响最后一个表达式的结果。


      而我们关心的时候,前面的表达式执行完后,最后一个表达式的结果是多少。


         int i = 0,j = 1,k = 2;
         int num =( i++ , j++ , k++ , i + j + k );
              //    0->1  1->2  2->3
         printf("i = %d\n", i);//i = 1
         printf("j = %d\n", j);//j = 2
         printf("k = %d\n", k);//K = 3
         printf("num = %d\n",num);//num = 6

          int num =( i++ , j++ , k++ , i + j + k );

           效果等效:

             i++;

             j++;

             k++;

             int num = i + j + k;

 P67 - 比较表达式的结果。


     1.比较运算符。


         > 大于

         < 小于

         >= 大于等于

         <= 小于等于

         == 等于

         != 不等于

     2.比较表达式。


        由比较运算符连接起来的式子,就叫做比较表达式。


     3.比较表达式的结果类型。


         1个比较表达式代表:1个条件。


         而1个条件的结果:成立或者不成立,真的或者假的。


         在C语言中使用int类型的数据来表示真假。


         0   表示假

         非0 表示真

         所以我们应该用一个int类型的变量来保存1个比较表达式的结果。


         如果比较表达式描述的条件是成立的,那么这个比较表达式的结果就为1.

         如果比较表达式描述的条件是不成立的,那么这个比较表达式的结果就为0.

     4. 比较运算符介绍。


         1. >    大于运算符。


 

               如果左边的数据大于右边的数据,那么条件成立。


  结果就是1(真),否则为0。


         2. >=   大于等于运算符。


 

               如果左边数据大于等于右边的数据,那么条件成立。


结果就是1(真),否则为0。


         3. <    小于运算符。


     

                如果左边的数据小于右边的数据,那么条件成立。


  结果就是1(真),否则为0。


         4. >=   小于等于运算符。


 

                如果左边数据小于等于右边的数据,那么条件成立。


结果就是1(真),否则为0。


         5. ==   相等比较运算符。


 

                如果左边数据等于右边的数据,那么条件成立。


结果就是1(真),否则为0。


         6. !=   不等比较运算符。


 

                如果左边数据不等于右边的数据,那么条件成立。


结果就是1(真),否则为0。


 P69    -   比较运算表达式的场景。


     5.常见的比较运算表达式的场景。


     5.1 比较运算符的两边可以是变量,也可以是常量,还可以是个表达式。


                如果比较表达式里有表达式,要现将表达式的结果计算出来以后再比较运算。


     5.2 判断1个表达式的结果和另外一个数据之间的关系。


         例1:写1个表达式,判断num是否为5的倍数。


                     int num = xx;

                     num % 5 == 0;

     6.char数据也可以参与比较运算。


(比较的是相应的ASCII码)

练习题

 1.接受用户从壁盘上输入的两个字符,然后输出他们   

        char ch1 = ' ' ,ch2 =' ' ;
        printf("输入2个字符(空格间隔):");
        rewind(stdin);
        scanf("%c %c",&ch1,&ch2);
        printf("ch1 = %c   ch2 = %c\n",ch1,ch2);
    

 2.接受用户从键盘上输入的两个双精度浮点数,然后输出他们

double d1 = 0.0 ,d2 = 0.0 ;
printf("输入2个double小数(空格间隔):");
rewind(stdin);
scanf("%lf %lf",&d1,&d2);
printf("d1 = %lf   d2 = %lf\n",d1,d2);

3.接受用户从键盘上输入的两个单精度浮点数,然后输出他们(保留两位小数)

float f1 = 0.0 f,f2 = 0.0 f;
printf("输入2个float小数(空格间隔):");
rewind(stdin);
scanf("%f %f",&f1,&f2);
printf("f1 = %.2f   f2 = %.2f\n",f1,f2);

4.用户从键盘上输入两个整数,然后输出他们和   

int num1 = 0 ,num2 = 0 ;
printf("输入2个整数(空格间隔):");
rewind(stdin);
scanf("%d %d",&num1,&num2);
printf("两数之和为:%d\n",num1+num2);

5.用户从键盘上输入两个整数,然后输出他们差 

int num1 = 0 ,num2 = 0 ;
printf("输入2个整数(空格间隔):");
rewind(stdin);
scanf("%d %d",&num1,&num2);
printf("两数之差为:%d\n",num1-num2);

6.用户从键盘上输入两个整数,输出他们的商

int num1 = 0 ,num2 = 0 ;
printf("输入2个整数(空格间隔):");
rewind(stdin);
scanf("%d %d",&num1,&num2);
printf("两数之商为:%d\n",num1/num2);

7.用户从键盘上输入两个整数,输出他们的余数

int num1 = 0 ,num2 = 0 ;
printf("输入2个整数(空格间隔):");
rewind(stdin);
scanf("%d %d",&num1,&num2);
printf("余数为:%d\n",num1%num2);

9.用户输入距形的长和宽,求出矩形的面积和周长,并将结果显示在屏易上。


面积:长*宽               周长:(长+宽)*2

int length = 0 , width = 0;
printf("请输入长和宽(空格分隔):");
rewind(stdin);
scanf("%d %d",&length,&width);
printf("面积:%d ㎡\n",length*width);
printf("周长:%d m\n",(length+width)*2);

   

10.要求用户输入原型的半径,求出圆形的面积和周长,并将结果显示在屏算上。


面积:pi*r*r 周长:2*pi*r PI的值取3.14

float pi = 3.14f ;
float r = 0.0f;
printf("请输入半径:");
rewind(stdin);
scanf("%f",&r);
printf("面积:%.2lf ㎡\n",pi*r*r);
printf("周长:%.2lf m\n",2*pi*r);

 11.编程实现计算几天(如46天)是几周零几 天.天数要求用户 从控制台输入

请用户输入1个天数 计算用户输入的天数是几周零几天。


int days = 0 ;
int week = 0 ;
int weekday = 0 ;
printf("输入要计算的天数:");
rewind(stdin);
scanf("%d",&days);
week = days / 7;
weekday = days % 7;
printf("第%d天是第%d周的第%d天\n",days,week,weekday);

12.请用户从控制台输入1个秒数,求用户输入的秒数是几天几小时几分钟几秒?*****

int seconds = 0 ;
int day,hour,min,sec;
int remainder;
printf("请输入一个秒数:");
rewind(stdin);
scanf("%d",&seconds);
//1分钟60秒,1小时3600秒,1天86400秒
day = seconds / 86400 ; //求出天数
remainder = seconds % 86400 ;
hour = remainder / 3600 ; //求出小时数
remainder = remainder % 3600;
min = remainder / 60 ; // 求出分钟数
sec = remainder % 60 ; // 余数为秒
printf("%d 秒是 %d 天 %d 小时 %d 分钟 %d 秒",seconds,day,hour,min,sec);

13.编一个程序,定义圆周率Pi=3.14.

要求用户输入圆柱的底国的半径和圆柱的高 求出圆柱的体积。


圆柱的体积:Pi*圆的半径的平方*圆柱的高

float pi = 3.14f ;
float r = 0.0f ;
int height = 0 ;
printf("请输入半径和高 (空格分割):");
rewind(stdin);
scanf("%f %d",&r,&height);
printf("圆柱体的体积:%.2lf m³\n",pi*r*r*height);

14.裤子的单价是78.8元,衬衫的单价是45.6元。


输入顾客购买的部子数量 和衬衫的数量

显示顾客应该付多少钱。


float kuZiPrice = 78.8f ;
float chenShanPrice = 45.6 ;
int kuZiCount = 0 ;
int chenShanCount = 0 ;
printf("请输入裤子衬衫的购买数量(空格分隔):");
rewind(stdin);
scanf("%d %d",&kuZiCount,&chenShanCount);
printf("应付款: %.2lf元\n",kuZiCount * kuZiPrice + chenShanCount * chenShanPrice);

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/562260.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-01
下一篇 2022-04-01

发表评论

登录后才能评论

评论列表(0条)

保存