09c语言学习资料 一、数据类型、运算符和表达式

大二那时当过c语言助教,答疑的时候时常发现新生们遇到各种各样的问题,看着他们纠结的样子很心痛,很想让他们少走些弯路,一时激动通宵写了一些概括的教程。那时也发给了自己协会里的新生们。虽然知道发下去他们也不太会去看的,可是我想我至少努力过了。真的希望那时他们能好好的学c语言,因为这门课真的只有花心思进去了才能学好的。

 

(我那时改的作业一个班竟然只有4、5个版本,真的很替他们担忧阿。过几天就是考试了,希望他们考好点,不要挂科。

 

一、数据类型、运算符和表达式

 

参考资料:谭浩强C程序设计第三版和宁大科院C程序作业本

 

一、数据类型、运算符和表达式

 

1、简单的程序结构

#include<stdio.h>

Void main()

{

……

……

……

}

# include<文件名>(或”文件名”)是一个预处理命令,作用是把要用的头文件包含到你的程序中。

stdio.h是就是一个头文件,里面包含了些函数功能,像printf,scanf,gets等基本的输入输出函数的定义就包含里面。程序里面如果要用到类似printf的语句,在最前面就要加上#include<stdio.h>,如果没有的话,系统会无法识别,会报错的。

头文件你也可以自己写,然后用#include包含进来,这样当你要用到你自己写的函数的时候,可以直接用,其实相当于你把函数的声明和定义在头文件里定义过了。

void是空类型的意思,表示函数没有返回值,如果不加的话主函数main默认也是void。

main是主函数的名字,一个程序只有一个主函数(main),并且程序是从主函数开始的,主函数结束了程序也就结束了。

上面的格式几乎是固定的格式了呢

 

2、常量

常量分两种一种是字面常量就是单单的4,5.2,’a’这样子。

另一种是可能会用到的符号常量。就像书本38页的例子,定义的方法是:#define 常量名 数值。#define是预处理命令,表示把以下程序里面出现的PERICE全部替换成30,所以使用常量的好处是“一改全改”。

注:再给常量赋值的语句是错误的,常量的值在其定义域内不能改变,不能再被赋值。

常量名习惯大写,小写的也可以的。

 

3、变量

书本38页 3.2.2变量开始的前两段话好好理解。

变量类型一般有三种:整型变量,浮点型变量,字符型变量。

整型变量(都是整数):int(书本41页的“2、整型变量的分类”看一下)

浮点型变量(允许有小数部分):float单精度浮点型,double双进度浮点型。(他们的精度不一样,有效数字长度分别是6~7和15~16,但是他们小数点后都是显示6位)

注:字符型数据分字符常量和字符变量两部分。字符常量又分普通的单撇号括起来的字符和特殊的转义字符。

字符变量(用来存放字符,只能放一个字符):char

 

4、输入格式

Scanf(”%d”,&十进制整型变量名);Scanf(”%f”,&单精度浮点型变量名);Scanf(”%lf”,&双精度浮点型变量名);Scanf(”%c”,&字符型变量名);必须要加&取地址运算符。书本82页例4.9看一下。

注意:以什么格式输入就要输入什么类型的数据。

 

5、输出格式

Printf(“%d”,十进制整型变量名);Printf(“%f”,浮点型变量名);(这里单双精度是一样的) Printf(“%c”,字符型变量名);Printf(“%o”,八进制整型变量名);Printf(“%x”,十六进制整型变量名);(如果变量是整型,也可以用八进制和十六进制法输出)

注:双引号内的“//”开头的字符序列是转义字符,书本48页有表。双引号内的“%”开头的字符序列是格式说明,书本75页下方有介绍。除了这两样,printf双引号内的其他字符都是原样输出。(表达式中的%是取余的作用)

 

6、字符型的特殊

0-255数值范围的字符变量和整型变量在printf输出时可以通用,他们既可以用%d输出也可以用%c输出,具体输出的结果看用哪种类型输出。书本50页说明。

字符输入输出函数:

putchar函数用法:putchar(c),它输出字符变量c的值代表的字符,c可以是字符型变量或整型变量。还可也输出转义字符:如putchar(//n);执行换行。

getchar函数:书本74页例4.2仔细看看。

 

7、求余运算符

%,又称模运算,%两侧均应为整型数据。

如7%3为1,5%3为2,6%2为0,特殊例子: 2%2为0,2%5为2,2%7为2。

“/”除法运算符,多数c编译系统采用的是向零取整

 

8、复合赋值运算符

a+=b相当于a=a+b,a%=b相当于a=a%b

x%=y+3相当于x%=(y+3)相当于x=x%(y+3),默认带了括号的。

例:(a初值为12) 求a+=a-=a*=a

先求a*=a (a=12*12) 所以a=144,再a-=a(a=144-144) 所以a=0,再a+=a(a=0+0) 所以最终a=0。

(a初值为12,n初值为5) 求a%=(n%=2)

先求括号里的值n=n%2,所以n的值为1,括号里的值为1,再求a%=1,余为0,所以最终a=0。

 

9、格式化输出

整型:%md  m指定输出的数据共占m列。如果数据的位数小于m,则左端补以空格(如果是%-md,则是右端补以空格),若超出m,则按实际位数输出。

例如printf(“%4d,%4d,%-6d”a,b,c); 若a=123,b=12345,c=123

则输出结果为_123,12345,123___

浮点型:%m.nf  m指定输出的数据共占m列。n为截取的小数点位数(注意cfree3.5环境下截取的方式是4舍5入,所以作业本19页第3题第二个答案是3.142而不是直接取3.141。这个和程序的运行平台有关,为了程序的可移植性程序员应尽量避免出现这样的分歧)

看的时候先取好n位小数,取好之后的数据的位数小于m,则左端补以空格(如果是%-m.nf,则是右端补以空格),若超出m,则按实际位数输出。

例如printf(“%4.3f,%5.3f,%6.3f,%7.3f”a,a,a,a); 若a=3.1415

则输出结果为3.142,3.142,_3.142,__3.142

注:%.1f的写法也是可以的,只是截取小数。下面的字符型也一样。

字符型(字符串):%m.ns  m指定输出的数据共占m列。n为只取字符串中左端n个字符。

先取好左端n个字符,取好之后的数据的位数小于m,则左端补以空格(如果是%-m.ns,则是右端补以空格),若超出m,则按实际位数输出。

例如作业本上第20页第5题就是一个很好的例子,答案分别是%14.8s;//n  %10.6s;//n  %6.4s;//n  %-8.3s;//n

 

10、混合运算和强制类型转换

混合运算:整型、浮点型、字符型数据间可以混合运算,运算前需要一定的转换。

如字符型必定先转换为整数,short型转换为int,float型数据在运算时一律先转换成双精度型,以提高运算精度(即使是两个float型数据相加,也先都化成double型,然后再相加)

强制类型转换:

利用强制类型转换运算符将一个表达式转换成所需类型,转换得到的只是一个中间变量,原来的类型和值未发生变化。

注:在cfree环境下浮点型转换为整型时是直接去掉小数部分。

例:int a=2; int b=3; float x=3.5; float y=2.5  求(float)(a+b)/2+(int)x %(int)y

    先求(int)x %(int)y  相当于 3%2 结果为1,再求(float)(a+b)/2 相当于5.000000/2结果为2.500000, 所以最终结果为2.500000+1 结果为3.500000。

 

11、自增、自减运算符

++i,--i  (i先加(减)1然后再拿来使用)  

i++,i-- (i先拿来使用,然后自己再加(减)1)

例:作业本第21页第2题,结果是i=9,j=11,m=9,n=10。

这个一定要弄懂,熟练

 

12、逗号表达式

例如(a=3*5,a*4)逗号表达式的运算次序为从左至右,先一路运算过去,然后最右边的一个式子作为整个表达式的值。

如果b=(a=3*5,a*4)的话,b的值为60。

如果x=(a=3,6*3)的话,x的值为18。

最后作业本21页第3题一定要会的,结果是3,4,3    3,4,4。理解一下。

 

大一的C语言为以后的复杂程序打基础的。以后做网站做软件都会用到。

对电信专业的同学来说c语言请一定学好~其他专业的同学如果有兴趣也可以看看~多了解一下

 

一些小经验:1、上课之前要预习一遍要讲的内容。2、作业认真做。会发现很多漏洞的。3、和同学多多交流

有时间有能力的同学最好把书一字一句看过去。因为老谭的书很好。看完一遍以后你的知识漏洞会非常少了。有的同学可能跟着老师的路子走也会学的很好。

 

时间仓促,看见错误了请多指正

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值