CCCCC语言自学1(数据类型,运算符,表达式)

引言:C语言是一种编译型的程序设计语言,采用编译的方式将源程序翻译成目标程序(机器代码)。运行一个C程序,从输入源程序开始,要经过编辑源程序文件(*.c*.cpp)、编译生成目标文件(*.obj)、连接生成可执行文件(*.exe)和执行4步。

一.数据类型

1.简介

 2.常量与变量

(放大缩小:Ctrl+滚轮放大缩小)(屏幕截图win+shift+s)

 变量:命名规则:只能由字母数字下划线三种字符组成,且第一个字符必须为字母或下划线

且C语言区分大小写,变量名不能与关键字同名!

3.整型数据

  1. 符号常量:#define PI 3.14
  2. 整型常量的不同进制表示:计算机只能存储二进制数(0,1)
  3. %d以十进制的方式去输出某一个整型数
  4. 1位      1bit    存储0/1   ,1字节  1byte=8bit

4.浮点型数据

浮点型常量:

e表示10的幂次,幂次可正可负

float f=1.234;

printf("%f\n",f);     //%f就是以浮点形式输出对应数据 

注意:字母e或E之前必须有数字,且e后面的指数必须为整数

正确示例:1e3,1.8e-3,-123e-6,-.1e-3

错误示例:e3,2.1e3.5,.e3,e

浮点型变量:

通过float f来定义浮点变量,f占用4个字节的空间

5.字符型数据

字符型常量:用单引号括起来的一个字符是字符型常量,且只能包含一个字符!例如,‘a’,‘A’,‘1’,‘ ’是正确的字符型常量,而‘abc’,“a”," "是错误的字符型常量                    转义字符:以“\”开头的特殊字符 

 字符型变量使用关键字char进行定义,一个字符型变量占用1字节大小的空间

char c='a';   //定义一个字符型变量,并赋值为‘a’

printf("%c\n",c);    //以字符形式输出

#include <stdio.h>

int main(){
    char c,d;
    c=97;
    d='a';
    printf("c=%c,d=%c\n",c,d);    //打印都是字母a
    printf("c=%d,d=%d\n",c,d);    //打印都是97
    c=c-32;    //小写字母转换为大写字母
    printf("c=%c\n",c);    //打印字母A
    return 0;
}

对于字符型变量,无论是赋ASCII码值还是赋字符,使用%c打印输出时 得到的都是字符,使用%d打印输出时得到的都是ASCII码值,将小写字母转换为大写字母时,由ASCII码表发现小写字母与大写字母的差值为32,因此将c减去32就可以得到大写字母A

字符串型常量:一对双引号引起来的字符序列“How are you”

例如,如果先用char c定义字符型变量c,后令c="a"或c="CHINA",那么这样的赋值都是非法的,原因是不可以将字符串型常量赋值给字符型变量

结束标志:‘\0’

 

6.混合运算

 强制类型转换:整型数进行除法运算时,如果运算结果为小数,那么存储浮点数时一定要进行强制类型转换,否则会出现如图结果

#include <stdio.h>

int main(){
    int i=5;
    float j=i/2;      //j输出的是2    
    float k=(float)i/2;    //k输出的是2.5
    printf("j=%f,k=%f\n",j,k);
}

 7.常用的数据输入/输出函数

标准输入函数scanf,getchar,打印到屏幕上的标准输出函数printf,putchar

scanf读取标准输入缓冲区的原理:

当scanf函数读取标准输入时,如果还没有输入任何内容时,那么scanf函数会被卡住(阻塞)

例如:

#include <stdio.h>

//缓冲区里所有的数据都是字符,scanf根据你的要求进行匹配

int main(){
    int i;
    char c;
    scanf("%d",&i);    //阻塞函数
    printf("i=%d\n",i);
    scanf("%c",&c);    //这里不会阻塞
    printf("c=%c\n",c);    //好像没打印出来的样子
    return 0;
}

执行时输入20,然后回车,显示结果如图所示,为什么第二个scanf函数不会被阻塞呢?因为第二个scanf函数读取了缓冲区中的‘\n’,即scanf("%c",&c)实现了读取,打印其实输出了换行,所以不会阻塞

作业题:判断某年是否为闰年

#include <stdio.h>

int main(){
    int year;
    scanf("%d",&year);
    if(year%400==0||year%4==0&&year%100!=0)    //逻辑与比逻辑或优先级高
    {
        printf("yes\n");
    }
    else{
        printf("no\n");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值