大学期末复习试题资料整理大一C语言考试参考资料

1 C 语言总复习 总体上必须清楚的: 1)程序结构是三种: 顺序结构 , 循环结构 (三个循环结构), 选择结构 (if 和 switch) 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3)计算机的数据在电脑中保存是以 二进制的形式. 数据存放的位置就是 他的地址. 4)bit是位 是指为0 或者1。 byte 是指字节, 一个字节 = 八个位. 5)一定要记住 二进制 如何划成 十进制。 概念常考到的: 1、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、每个C语言程序中main函数是有且只有一个。 3、在函数中不可以再定义函数。 4、算法的是一定要有输出的,他可以没有输入。 5、break可用于循环结构和switch语句。 6、逗号运算符的级别最低。 第一章 1)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 2)实型数据的合法形式: 2.333e-1 就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。. 3)字符数据的合法形式:: '1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。 4) 整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。 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); 2

运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量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<<2; 这种题目的计算是先要把a的十进制6化成二进制,再做位运算。 例2: 一定要记住, 例3: 在没有舍去数据的时候,<>右移一位表示除以2。 10)018的数值是非法的,八进制是没有8的,逢8进1。 11)%符号两边要求是整数。不是整数就错了。 12) 取整丢小数的情况: 1、int a =1.6; 2、(int)a; 第二章 1)printf函数的格式考查: %d对应整型;%c对应字符;%f对应单精度等等。宽度的,左对齐等修饰。 %ld对应 long int;%lf 对应double。 2)scanf函数的格式考察: 注意该函数的第二个部分是 &a 这样的地址,不是 a ; Scanf(“%d%d%*d%d”,&a,&b,&c); 跳过输入的第三个数据。 3)putchar ,getchar 函数的考查: char a = getchar() 是没有参数的,从键盘得到你输入的一个字符给变量a。 putchar(‘y’)把字符y输出到屏幕中。 4)如何实现两个变量x ,y中数值的互换(要求背下来) 不可以把 x=y ,y=x; 要用中间变量 t=x;x=y;y=t。 5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来) 这个有推广的意义,注意 x = (int)x 这样是把小数部分去掉。 第三章 特别要注意:c语言中是用非0表示逻辑真的,用0 表示逻辑假的。 1)关系表达式: 表达式的数值只能为1(表示为真),或0(表示假) 当关系的表达是为真的时候得到1。如 9>8这个是真的,所以表达式的数值就是1; 2)逻辑表达式: 只能为1(表示为真),或0(表示假) a)共有&& || ! 三种逻辑运算符号。 b)!>&&>|| 优先的级别。 c)注意短路现象。考试比较喜欢考到。 d)要表示 x 是比0大,比10小的方法。 01或则0;再用0,或1与10比较得到的总是真(为1)。所以一定要用 (03)if 语句 else 是与最接近的if且没有else的相组合的。 3

4)条件表达式: 表达式1 ?表达式2 :表达式3 注意是当非0 时候是表达式2的数值,当为0 是就是表达式2的数值。 考试口诀:真前假后。 5)switch语句: a)一定要注意 有break 和没有break的差别,书上(34页)的两个例子,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。 b)switch只可以和break一起用,不可以和continue用。 第四章 1)三种循环结构: a)for() ; while(); do- while()三种。 b)for循环当中必须是两个分号,千万不要忘记。 c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。 d) do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错) 2) break 和 continue的差别 记忆方法: 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) 函数的参数,返回数值(示意图): main() { 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; return z; } 被调用函数 x,y是形式参数 4

函数返回数值是整型 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[3][3]的地址。 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]+1都是跳一列。 5、注意a和a[0] 、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。 二维数组做题目的技巧: 如果有a[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 ->第三行 步骤二:这样作题目间很简单: *(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。 *(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]元素,所以是6。

合集下载

大一期末c语言复习题库

大一期末c语言复习题库

大一期末c语言复习题库C语言作为计算机科学与技术专业学生的一门基础课程,对于理解计算机程序设计的原理和思想具有重要意义。

以下是为大一学生准备的C语言期末复习题库,涵盖了C语言的基本概念、数据类型、控制结构、数组、函数、指针、结构体、文件操作等重要知识点。

# 一、基本概念1. 解释C语言的特点。

2. 描述C语言的基本结构,包括预处理指令、函数、语句和注释。

3. 列举C语言中的基本数据类型,并解释它们的区别。

# 二、变量与数据类型1. 什么是变量?如何声明变量?2. 解释整型(int)、浮点型(float)、双精度型(double)和字符型(char)的区别。

3. 写出C语言中不同数据类型所占的存储空间大小。

# 三、运算符与表达式1. 列举C语言中的算术运算符,并给出示例。

2. 描述赋值运算符的用法。

3. 解释条件运算符(?:)的用法。

# 四、控制结构1. 描述if语句的用法,并给出一个例子。

2. 解释while循环和do-while循环的区别。

3. 写出for循环的一般形式,并解释其组成部分。

# 五、数组1. 什么是数组?数组有哪些类型?2. 如何声明和初始化一维数组和二维数组?3. 写出一个程序,实现冒泡排序算法。

# 六、函数1. 解释函数的定义和声明。

2. 描述函数参数的传递方式(值传递和引用传递)。

3. 写出一个自定义函数,实现求最大值的功能。

# 七、指针1. 解释指针的概念和用途。

2. 写出一个程序,使用指针交换两个变量的值。

3. 解释指针数组和数组指针的区别。

# 八、结构体1. 什么是结构体?如何定义结构体?2. 写出一个程序,使用结构体存储学生信息。

3. 解释结构体指针的用法。

# 九、文件操作1. 解释文件的概念和分类。

2. 描述文件的打开、关闭、读写操作。

3. 写出一个程序,实现将数据写入文件,并从文件中读取数据。

# 十、综合应用1. 编写一个程序,实现学生成绩管理系统,包括录入、查询、修改和删除功能。

大学c语言期末考试题库试题及答案

大学c语言期末考试题库试题及答案

大学c语言期末考试题库试题及答案在即将到来的大学C语言期末考试中,同学们可能会遇到各种类型的题目。

以下是一些典型的试题及其答案,供同学们复习参考。

1. 以下哪个选项是C语言中的关键字?A. intB. IntegerC. INTD. integer答案:A. int2. 若有定义:int a = 10; 则表达式 a++ 的值是多少?A. 9B. 10C. 11D. 无法确定答案:B. 103. 在C语言中,以下哪个函数用于计算字符串的长度?A. strlen()B. length()C. str_length()D. string_length()答案:A. strlen()4. 若有以下代码片段:```cint x = 5;printf("%d", x++);```执行后输出的结果是?A. 4B. 5C. 6D. 无法确定答案:B. 55. 在C语言中,以下哪个选项表示“逻辑与”操作?A. &&B. ||C. !D. &答案:A. &&6. 若有以下代码:```cint a = 3, b = 4, c;c = a + b;```则变量 c 的值是多少?A. 7B. 3C. 4D. 无法确定答案:A. 77. 在C语言中,以下哪个选项是正确的二维数组声明?A. int array[2,3];B. int array[2][3];C. int array[2][3][4];D. int array[][];答案:B. int array[2][3];8. 若有以下函数定义:```cint add(int x, int y) {return x + y;}```则调用 add(5, 3) 时,返回的值是多少?A. 2B. 5C. 8D. 无法确定答案:C. 89. 在C语言中,以下哪个选项表示“不等于”的比较运算符?A. ==B. !=C. =D. <=答案:B. !=10. 若有以下代码:```cchar str[] = "Hello";str[0] = 'h';```执行后,str 数组的内容是什么?A. "hello"B. "Hello"C. "helloworld"D. "hEllo"答案:A. "hello"这些题目覆盖了C语言的基础知识点,包括关键字、变量、函数、数组以及基本的控制结构。

大一上c语言期末考试题库及详解答案

大一上c语言期末考试题库及详解答案

大一上c语言期末考试题库及详解答案一、单项选择题(每题2分,共20分)1. C语言中,定义一个整型变量a并赋值为5,正确的语句是()。

A. int a = 5;B. int a == 5;C. int a = '5';D. int a = 5.0;答案:A2. 下面哪个选项是C语言中的合法标识符?()A. 2aB. _aC. a$bD. int答案:B3. C语言中,以下哪个运算符优先级最高?()A. 乘法运算符(*)B. 除法运算符(/)C. 取模运算符(%)D. 赋值运算符(=)答案:A4. 在C语言中,以下哪个选项表示逻辑“与”操作?()A. &&B. ||C. !D. &答案:A5. 以下哪个选项是C语言中的合法字符串字面量?()A. "Hello, World!"B. 'Hello, World!'C. "Hello, World!"D. "Hello, World!"答案:A6. C语言中,以下哪个选项是正确的二维数组声明?()A. int a[3][4];B. int a[][];C. int a[3,4];D. int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};答案:A7. 在C语言中,以下哪个选项表示无限循环?()A. while(1)B. do-whileC. for(;;)D. All of the above答案:D8. C语言中,以下哪个选项是正确的函数声明?()A. int add(int a, int b);B. int add();C. int add(int, int);D. int add(int a, b);答案:A9. 在C语言中,以下哪个选项是正确的结构体声明?()A. struct point {int x, y;};B. struct point {int x; int y;};C. struct point {int x; int y;} point;D. All of the above答案:D10. C语言中,以下哪个选项是正确的指针声明?()A. int *p;B. int *p[];C. int *p[10];D. All of the above答案:A二、填空题(每题2分,共20分)1. C语言中,表示逻辑“或”的运算符是____。

大学c语言期末考试题库试题及答案

大学c语言期末考试题库试题及答案

大学c语言期末考试题库试题及答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的关键字?A. intB. floatC. stringD. array答案:A2. C语言中,表示逻辑与的运算符是?A. &&B. ||C. !D. %答案:A3. 在C语言中,以下哪个函数用于计算字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A4. 下列哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. _variableD. variable!答案:B5. C语言中,以下哪个选项是正确的注释方式?A. /* This is a comment */B. // This is a commentC. /* This is a comment */D. // This is a comment答案:A6. 在C语言中,以下哪个选项是正确的数组声明?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2, 3};D. int arr = {1, 2, 3, 4, 5};答案:A7. C语言中,以下哪个选项是正确的函数定义?A. int function(int a, int b) { return a + b; }B. int function(int a; int b) { return a + b; }C. int function(int a, int b) { return a - b; }D. int function(int a, int b) { return a * b; } 答案:A8. 在C语言中,以下哪个选项是正确的文件包含指令?A. #include "stdio.h"B. #include <stdio.h>C. #include "stdio.h" and #include <stdio.h>D. #include "stdio.h" or #include <stdio.h>答案:B9. C语言中,以下哪个选项是正确的循环结构?A. for (int i = 0; i < 10; i++)B. while (int i = 0; i < 10; i++)C. do { } while (int i < 10; i++)D. for (int i = 0; i < 10; i--);答案:A10. 在C语言中,以下哪个选项是正确的条件语句?A. if (condition) { /* code */ }B. if (condition) { /* code */ } else { /* code */ }C. if (condition) { /* code */ } else if (condition) { /* code */ }D. All of the above答案:D二、填空题(每题2分,共20分)1. 在C语言中,使用________运算符可以交换两个变量的值。

大一c语言期末考试题库及答案

大一c语言期末考试题库及答案

大一c语言期末考试题库及答案一、选择题(每题2分,共20分)1. C语言中,用于表示逻辑“与”的运算符是:A. &&B. ||C. &D. |答案:A2. 下列哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. variable_2D. variable!答案:C3. 在C语言中,以下哪个关键字用于定义数组?A. structB. unionC. enumD. array答案:A4. 下列哪个函数用于计算字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A5. C语言中,以下哪个选项是正确的注释方式?A. // 这是注释B. /* 这是注释 */C. //这是注释D. /*这是注释答案:B6. C语言中,用于定义函数的关键字是:A. functionB. defineC. defD. int答案:D7. 下列哪个选项是C语言中的整型数据类型?A. intB. floatC. charD. double答案:A8. 在C语言中,以下哪个选项是正确的文件包含指令?A. #include <stdio.h>B. #include "stdio.h"C. #import <stdio.h>D. #include "stdio.h"答案:A9. 下列哪个选项是C语言中用于声明指针的?A. int *p;B. int *p[];C. int (*p)[];D. int *p[10];答案:A10. 在C语言中,以下哪个选项是正确的二进制数表示?A. 0x1AB. 0x1A.BC. 0x1ABD. 0x1A.B答案:A二、填空题(每题2分,共20分)1. 在C语言中,表示逻辑“非”的运算符是____。

答案:!2. C语言中,用于定义结构体的关键字是____。

大一下c语言期末复习题及答案

大一下c语言期末复习题及答案

大一下c语言期末复习题及答案1. 请解释C语言中的变量声明和初始化的区别。

答案:变量声明是指告诉编译器变量的类型和名称,但不赋予初始值。

例如,`int a;`。

初始化则是在声明变量的同时赋予一个初始值,如`int a = 10;`。

初始化可以确保变量在使用前有一个确定的值。

2. 描述C语言中数组和指针的关系。

答案:在C语言中,数组名可以被看作指向数组第一个元素的指针。

因此,数组和指针紧密相关。

例如,如果有一个数组`int arr[5];`,那么`arr`实际上是一个指向`int`类型的指针,指向`arr[0]`。

3. 什么是函数原型?请给出一个例子。

答案:函数原型是函数声明的一种,它提供了函数的返回类型、函数名以及参数列表(包括参数的类型和顺序),但不包括函数体。

例如,`int add(int, int);`是一个函数原型,表示有一个名为`add`的函数,返回类型为`int`,接受两个`int`类型的参数。

4. 解释C语言中的结构体和联合体的区别。

答案:结构体(struct)是一种复合数据类型,可以包含不同类型的成员,每个成员都有自己的类型和名称。

联合体(union)也是一种复合数据类型,但它允许所有成员共享同一块内存空间,同一时间只能存储其中一个成员的值。

5. 请写出一个C语言函数,实现两个整数的交换。

```cvoid swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}```答案:上述代码定义了一个名为`swap`的函数,它接受两个整数指针作为参数,通过一个临时变量`temp`来实现两个整数的交换。

6. 描述C语言中宏定义的作用及其使用方式。

答案:宏定义是预处理器指令,用于定义一个符号常量或代码片段,以便在编译时替换。

使用`#define`关键字来定义宏。

例如,`#define PI 3.14159`定义了一个宏`PI`,其值为`3.14159`。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档