c语言课程设计成绩处理程序
总的来说,必须明确一点:
1)程序结构有三种:顺序结构、循环结构(三个循环结构)和选择结构(if和switch)。
2)从main()入口读程序,然后从顶序往下读(遇到循环就做循环,遇到选择就做选择)。
3)计算机数据以二进制形式存储在计算机中。数据存储的位置就是他的地址。
4)位表示0或1。Byte指字节,一个字节=八位。
5)一定要记住二进制怎么分成小数。
概念经常被测试:
1.编译器预处理不是C语言的一部分,所以不再运行。用C语言编译的程序称为源程序,用ASCII值存储在文本文件中。
2.每个C语言程序中只有一个主函数。
3.函数中不能定义更多的函数。
4,算法必须有输出,他可以没有输入。
5.break可用于循环结构和switch语句。
6.逗号运算符的级别最低。
第一章
1)合法用户标识符检查:
法律要求由字母、数字和下划线组成。有其他元素是不对的。
第一个必须是字母或下划线。第一个数字是错误的。
关键字不能用作用户标识符号。Main define scanf printf不是关键字。让你困惑的是If可以作为用户标识符。因为If中第一个字母大写,所以不是关键字。
2)真实数据的法律形式:
2.333e-1合法,数据为2.333x10-1。
考试公式:e前必须有一个数字,e后必须有一个整数。
3)字符数据的合法形式:
‘1’表示字符占用一个字节,“1”表示字符串占用两个字节(包括结束符号)。
“0”的ASCII值是48,“a”的ASCII值是97,“a”的ASCII值是65。
4)整数一般为两个字节,字符为一个字节,双精度一般为四个字节:
一般来说,考试的时候你会把系统编译成16 bit,或者32 bit的系统。这种情况,就别管了,做同样的题。掌握整数一般是两个字节,字符是一个字节,双精度一般是四个字节。
5)转义字符的检查:
程序中Int a = 0x6d是给变量a一个十六进制数,注意这里的0x必须存在。
程序中Int a = 06d,是八进制形式。
在转义字符中,' \x6d '是合法的,不能写0,x是小写的。
' 141 '合法,不能写0。
“108”是非法的,因为8不能出现。
6)算术运算符号的优先级:
同一级别,有的是从左到右,有的是从右到左。
7)强制类型转换:
必须是(int)a,而不是int(a)。请注意,类型上必须有括号。
注意(int)(a+b)和(int) a+b的区别,前者是变换a+b,后者是变换A加b。
8)表情检查:
如果是表达式,肯定有数值。
赋值表达式:表达式值是最左边的值,a = b = 5;表达式为5,不能赋值常量。
自加自减表达式:假设a=5,++a(为6),a++(为5);
运算机制:++a就是把变量的值加1,然后把得到的值放入变量A,然后用这个。
a ++a表达式的值是6,a++是先把表达式的值作为5,再把A的值加上1,就成了6。
并放入变量A中,在++a和a++之后,如果在下面的程序中使用A,那么在变量A中就是6..
考试公式:使用前+使用前,使用后+添加前。
逗号表达式:最低优先级;表达式的值。逗号最右边的表达式的值。
(2,3,4)表达式的数值是4。
9)钻头操作检查:
会有一两道考题。
一般处理方法:几乎所有位运算的问题都要按照这个流程来处理(先把十进制改成二进制再改成十进制)。
例1: char a = 6,b;
b = a & lt& lt2;这类问题的计算是先把A的十进制6转换成二进制,然后做位运算。
例2:必须记住,
示例3:当没有数据被丢弃时,
10)018的值是非法的,八进制中没有8,每8就是1。
11)%符号两边都要求是整数。如果不是整数就是错的。
12)四舍五入和丢失小数的三种情况:
1、int a = 1.6;
2 、( int)a;
3、
第二章
1)printf函数的格式检查;
%d对应于一个整数;%c对应的字符;%f对应单精度等等。宽度、左对齐等。
%ld对应于long int;%lf对应于double。
2)对2)scanf函数格式的研究:
注意这个函数的第二部分是&;像A这样的地址不是;
Scanf("%d%d%*d%d ",& amp一,& ampb & amp;c);跳过输入的第三个数据。
3)检查3)putchar、getchar函数:
Char a = getchar()没有参数。从键盘输入一个字符到变量a。
Putchar('y' y ')将字符y输出到屏幕。
4)如何交换两个变量X和Y中的值(需要记忆)
不能放x=y,y = x;使用中间变量t = x;x = y;y=t .
5)如何实现保留小数点后三位,四舍五入到第四位的程序(需要记忆)
这具有推广的意义。注意x = (int)x是去掉小数部分。
第三章
需要特别注意的是:在C语言中,非零表示逻辑真,0表示逻辑假。
1)关系表达式:
表达式的数值只能是1(true)或false)。
当关系表达式为真时,得到1。例如9 >;8这是真的,所以表达式的值是1;
2)逻辑表达式:
只能是1(表示真)或0(表示假)。
A) ***是& & amp|| !三种逻辑运算符号。
b)!& gt& amp& amp& gt||优先级。
c)注意短路现象。我更喜欢在考试中得到它。
d)表示X大于0小于10的方法。0 & ltx & lt不允许10(请记住)。就是计算0
3)if语句
Else在没有else的情况下与最接近的if组合。
4)条件表达式:
表达式1?表情2:表情3
注意,不为0时,为表达式2的数值,为0时,为表达式2的数值。
考试公式:假期前后真。
5)开关语句:
a)一定要注意破和不破的区别。对于书中的两个例子(第34页),如果没有断行,只要有一个案例匹配,其余的就会被执行。如果有中断,会直接跳出swiche语句。
b)开关只能与break一起使用,不能与continue一起使用。
第四章
1)三个循环结构:
a)for();while();有三种do- while()。
b)在b)for循环中必须有两个分号。别忘了。
c)写程序的时候一定要注意循环必须结束的条件,否则会变成无限循环。
do-while()循环的最后一个while();分号不能丢失。(注意在电脑上修改错误)
2)中断和继续的区别
记忆方法:
Break:意思是中断,所以看到break就退出整个循环。
Continue:表示继续(继续循环操作),但要结束这个循环,则表示循环体中剩余的语句不会被执行,跳转到循环的开头,然后判断循环条件,开始新的循环。
3)嵌套循环
有一个循环,有一个循环在里面。这很复杂,需要耐心一步一步计算。一般记住两层处理二维数组。
4) while((c=getchar())!='\n ')和while(c=getchar()!='\n ')
先看a = 3!= 2和(a=3)!=2的区别:
(!=号比=号级别高,所以第一个先数3!= 2)a的第一个值是1;第二个a的值是3。
考试注意:这里括号的重要性。
第五章
功能:具有一定功能的程序块;
1)函数的参数,返回值(示意图):
主()
{
int a = 5,b=6,c;
c = add(a,b);
printf("%d ",c);
}
调用函数
a和b是真正的论点。
整个函数得到一个值
Add函数的返回值。
int add ( int x,int y)
{
int z;
z = x+y;
返回z;
}
被调用函数
x和y是形式参数。
该函数返回的值是一个整数。
z是这个add函数的计算结果,是函数返回给主程序的返回值。
程序从上到下依次执行。当遇到函数add时,A和B的值被传递给调用函数,程序暂时中断,等待返回值。当获得返回值时,它将被顺序执行。
2)一定要注意参数之间的传递。
实形参和形参的区别,以及地址。(考试要点)
如果值被传递,形式参数的变化不会改变真实参数的变化。
如果传递地址,形式参数的变化可能会改变实际参数的变化。
3)功能声明的检查:
必须有:函数名,函数返回类型,函数参数类型。
您不必知道参数的名称。
第六章
指针变量的本质是放地址,一般变量是放值。
int *p中*p和p的区别:
*p可以作为变量;*的作用是取后地址p中的值。
p被用作地址。
*p++和(*p)++:改错题很重要。
*p++表示地址会改变。
(*p)++是要更改的值。
三人主义:(考试重点)
数组名:表示第一个元素的地址。数组名不能自行添加,它是一个地址常量名。(我考了很多次)
函数名:表示这个函数的入口地址。
字符串常量名称:表示第一个字符的地址。
第七章
1一维数组的重要概念;
关于数组a[10]的讨论。
1和A代表数组名,是第一个元素的地址,也就是元素A的地址[10]。
2.a是一个地址常量,所以只要赋值a++或者a=a+2,就是错误。
3.a是一维数组名,所以是列指针,也就是说a+1是跳过一列。
对a[3][3]的讨论。
1和A代表数组名,是第一个元素的地址,也就是元素A的地址[10]。
2.a是一个地址常量,所以只要赋值a++或者a=a+2,就是错误。
3.a是二维数组名,所以是行指针,也就是说a+1是行跳转。
4.a[0]、a[1]和a[2]也是地址常量,不能赋值。同时都是列指针,a[0]+1,a[1]+1,A [2]。
5.注意,A与a[0]、a[1]和a[2]不同,它们的基类型也不同。前者是一行元素,后三者是一列元素。
二维数组解题技巧;
如果有一个[3] [3] = {1,2,3,4,5,6,7,8,9}。
第一步:把它们写成:第一列,第二列,第三列。
a[0]à 1 2 3 ->首行
a[1]à4 5 6-->预备之物
a[2]à 7 8 9 ->第三线
步骤2:这样做非常简单:
*(a[0]+1)我们知道第一行第一个元素跳回一列,所以这是a[0][1]元素,所以是1。
*(a[1]+2)我们知道是第二行的第一个元素跳回两列。所以这是元素a[1][2],所以是6。
一定要记住:只要是二维数组的题目,一定要按照上面的格式写,然后做题就比较容易了。
数组初始化,一维和二维,一维不能写,二维第二必须写。
Int a [] = {1,2}合法。Int a [] [4] = {2,3,4} legal。但是int a [4] [] = {2,3,4}是非法的。
二维数组中的行指针
int a[1][2];
其中A现在是行指针,a+1跳过一行数组元素。带(*)p[2]指针
A[0],a[1]现在是列指针。A[0]+1跳转到一个数组元素。与*p[2]指针数组一起使用。
记住脱衣服的法则:
A[2]变成*(a+2) a[2][3]变成*(a+2)[3]然后变成*(a+2)+3)。
这个想法很重要。