码迷,mamicode.com
首页 > 其他好文 > 详细

C Language核心技术之基础程序设计(三)

时间:2015-09-24 00:53:13      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

1 总体说明

运算符概述
算术运算符
自增自减运算符
赋值运算符
关系运算符
逻辑运算符
三目运算符

2 运算符概述

计算机的核心人物就是数据的计算,而在程序语言层次上就是使用各种运算符来完成之前提到的数据类型之间算术,关系,逻辑,位运算符的,它们都有自己的优先级和结合性,优先级和运算符相关,也就是谁先计算,谁后计算,结合性就是在优先级相等的情况下,是从左到右开始计算的。

3 算术运算符

算术运算符是用来进行基本的数学运算,其运算的结果仍然是数值,就是参与运算的最大数据类型。C语言支持常用的五个算术运算符(+、-、*、/、%),其中/也就是取模运算符,就是用于求两个整数的余数,求余运算结果的符号与被除数相同。

使用算术运算实现数值反转

#include "common.h"
//整数反转
void int_reversal(){
    printf("请输入一个反转的整数\n"); //假设输入的是10000-99999之间的整数
    int num;
    scanf("%d",&num);
    //获取该整数的个位,十位和百位,千位,万位数
    int num_val = num % 10;
    int ten_val = num / 10 % 10;
    int hundred_val = num / 100%10;
    int thousand_val = num / 1000%10;
    int ten_thousand_val = num / 10000;
    printf("反转之后的num = %d",num_val*10000+ten_val*1000+hundred_val*100+thousand_val*10+ten_thousand_val);
}

使用算术运算实现求模运算符

#include "common.h"
/*
    算术运算符实现求模运算
*/
void alg(){
    int one = 10;
    int two = 3;
    int result = one / two; //取模就是求余数,10/3=3...1 求余的结果就是1
    printf("10%3的结果是%d\n",result);

    //使用算术运算完成取模运算
    result = 10 - (10 / 3) * 3;
    printf("算术运算 10%3的结果是%d\n", result);
}

使用算术运算符完成温度转换(华氏温度和摄氏温度转换)
华氏温度计算公式
华氏温度=摄氏温度*1.8+32

#include "common.h"
void convert(){
    float f;//华氏温度
    float c;//摄氏温度
    printf("请输入华氏温度\n");
    scanf_s("%f", &f);
    // 注意不能写成5/9*(f-32),5/9两个整数相除结果是0  
    c = (f +32) * 5 / 9;
    printf("摄氏温度:%-5.2f", c);
    system("pause");
}

4 自增自减运算符

自增(–)自减(–)运算符的作用就是只能将变量的值增加1或者减少1。
在循环时通常会使用自增自减运算符用来作为修改循环条件的方式。
++和–可以放在变量的前面或者后面,当++或者–放在变量的前面则就意味着会先自增1再参与运算,放在变量的后面则会先参与运算后自增1,两者的区别在于一个是先自增再执行程序,另一个是先执行程序再自增,最终变量的结果都是加1。
自增运算符的优先级高于算术运算符

#include "common.h"
/*
    自增运算符  自增运算符的优先级高于算术运算符
*/
void autoinc(){
    int num = 9;
    printf("%d\n",num--);//先打印num的值 也就是9 再减1
    printf("%d\n",num);//最后的结果就是8
}

使用循环,自减运算和线程中断实现倒计时

#include "common.h"
/*倒计时*/
void timer(){
    int second = 50; //倒计时50秒
    while (second>0){
        printf("倒计时%d秒\n",second);
        second--;
        Sleep(1000);
    }
    printf("Time Over");
}

使用循环计算1-100以内偶数的和

#include "common.h"
void getsum(){
    //计算1-100之间的偶数和
    int i = 2;
    int sum = 0;
    while (i <= 100){
        sum += i;
        i += 2;
        printf("i=%d\t\tsum=%d\n",i,sum);
    }
    printf("1-100之内的偶数和为%d\n",sum);
}

5 赋值运算符

赋值运算符就是将”=“右边的表达式或者常量值赋值给”=”左边的变量,在赋值时会执行数据类型转换,也即是将=右边的值自动转换成左边变量的类型。如果赋值运算符右边是复杂表达式时,会按照表达式的从右到左边开始计算。

#include "common.h"
/*赋值运算符*/
void assigment(){
    int num = 10.5; //赋值时会做自动类型转换,这里会将double转换为int再赋值给num变量
    //3 = num + 1; //只有变量能被赋值    ,常量不可以
    //num + 1 = 3;   //表达式不可以
    printf("num=%d\n", num);
    num -= 1;//num =num-1
    int copy =++num;
    //赋值时是复杂表达式会从右到左开始计算
    copy += copy - 10;//==>copy=copy+copy-10==>copy=10
    printf("copy=%d\n",copy);
}

6 关系运算符

关系运算符主要是比较两个数值(整型,浮点型和字符)或者表达式,整数和浮点数比较的是大小,字符比较的是ASC||码的大小,浮点型的数值不推荐采用==和!=来进行关系运算。
关系运算返回的结果是1(逻辑真)或者0(裸机假),C++或者Java都采用了一种boolean类型的true或false来替代。
常用的关系运算符包含大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、和不等于(!=),关系运算符是从左到右开始运算的。

关系运算符的运算结果 1表示逻辑真 0表示逻辑假

#include "common.h"
/*关系运算符的结果*/
void relation_sample(){
    printf("%d\n",10>8); //true
    printf("%d\n",10<8);//false
}

使用关系运算符和循环实现打印26个大小写字母

#include "common.h"
/*关系运算符*/
void relation(){
    //循环递增打印小写字母
    printf("小写字母\n");
    char c = ‘a‘;
    while (c<=‘z‘){
        putchar(c);
        c++;
    }
    //循环递减打印大写字母
    printf("\n大写字母\n");
    char v = ‘Z‘;
    while (v >= ‘A‘){
        putchar(v);
        v--;
    }
    printf("\n");
}

7 逻辑运算符

逻辑运算符主要是判断两个或者多个表达式的逻辑关系,逻辑运算符主要有三个:
逻辑与(&&):当表达式两边都为1时,结果为1,否则为0
逻辑或(||):当表达式两边有一个表达式的结果为1,结果为1,否则为0
逻辑非(!):对表达式结果取反,0改变为1,1变为0

#include "common.h"
/*
    逻辑运算符
*/
void logic(){

    //定义面试条件
#define 年龄 28
#define 工作年限 5
    int age;
    int workinglife;
    printf("请输入你的年龄和工作年限\n");
    scanf("%d", &age);
    scanf("%d", &workinglife);
    printf("面试的要求为年龄%d岁,工作年限%d年\n",年龄,工作年限);
    //逻辑与要满足俩条件
    age > 年龄&&workinglife > 工作年限 ? printf("逻辑与可以参与本轮面试\n") : printf("逻辑与年龄太小或者工作年限不够,不能参与本轮面试\n");
    //逻辑非满足一个条件
    age>年龄 || workinglife > 工作年限 ? printf("逻辑或可以参与本轮面试\n") : printf("逻辑或年龄太小或者工作年限不够,不能参与本轮面试\n");
    //逻辑非
     int value = 0;
     printf("逻辑非运算之后value的结果为%d\n\n",!value); //0 逻辑非之后值为1   取反....
}

逻辑与和逻辑或都存在短路现象,即当计算左边表达式的值就能够明确整个表达式的结果时,不在计算右边表达式的结果,就构成了短路现象。

#include "common.h"
/*逻辑运算的短路特性*/
void logic_short_circurt(){
    int x = 0;
    int y = 20;
    x && ++y;   //x=0 意味着整个表达式的结果为0,不会执行y自增1再参与逻辑与运算
    printf("x =%d\ty=%d\n",x,y);

    x =1 ;
    x || ++y; //1 意味着整个表达式的结果为1,不会执行++y
    printf("x =%d\ty=%d\n", x, y);

}

8 三目运算符

三目运算符是简易的if else结构, 其表现形式为 expression?expression1:expresson2;如果表达式的结果为真,则执行问号后的表达式expression1,否则执行:后的表达式expresson2。

使用三目运算符实现随机数判断,执行对应的操作

#include "common.h"
/*
    三目运算符
*/
void tenery(){
    time_t  ts; //声明一个时间变量
    srand((unsigned int)time(&ts)); //定义随机数种子,以时间的无符号整数
    int num = rand()%100; //随机值
    printf("num = %d\n",num);
    num >=70 ? printf("num>70"),system("calc") :printf("num<70") ,system("notepad");
}

使用三目运算符将大写字母转换为小写字母

#include "common.h"
/*三目运算符*/
void getcharcontent(){
    char charcontent =getchar(); //将输入的字符保存到charcontent变量中
    //判断输入的是大写还是小写字母
    charcontent >= ‘A‘ &&charcontent <= ‘Z‘ ? printf("你输入的是大写字母") : printf("你输入的是小写字母");

//使用三目运算符将大写字母转换为小写字母
    charcontent >= ‘A‘ && charcontent <= ‘Z‘ ? charcontent += 32, printf("charcontent = %c", charcontent) : printf("charcontent %c", 

charcontent);

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

C Language核心技术之基础程序设计(三)

标签:

原文地址:http://blog.csdn.net/tony_cto/article/details/48695383

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!