大一上学期C语言期末复习总结和模拟试题带答案
- 格式:doc
- 大小:61.50 KB
- 文档页数:15
c语言大学期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的基本数据类型?A. BooleanB. StringC. CharD. Integer答案:C2. C语言中,用于定义数组的关键字是:A. structB. unionC. arrayD. enum答案:C3. 下列哪个选项是C语言中正确的注释方式?A. /* This is a comment */B. // This is a commentC. # This is a commentD. % This is a comment答案:A4. 下列哪个选项是C语言中用于交换两个变量值的函数?A. strcpyB. strcatC. swapD. printf答案:C5. C语言中,用于定义一个结构体的关键字是:A. structB. unionC. classD. typedef答案:A6. 下列哪个选项是C语言中正确的文件操作函数?A. fopenB. fcloseC. fprintfD. All of the above答案:D7. C语言中,用于定义一个指针的关键字是:A. refB. ptrC. pointerD. *答案:D8. 下列哪个选项是C语言中用于定义一个枚举类型的关键字?A. enumB. typedefC. unionD. struct答案:A9. C语言中,用于定义一个函数的关键字是:A. functionB. defC. voidD. int答案:D10. 下列哪个选项是C语言中用于定义一个联合体的关键字?A. structB. unionC. enumD. typedef答案:B二、填空题(每题2分,共20分)1. 在C语言中,使用________关键字可以定义一个函数。
答案:int2. C语言中,使用________关键字可以定义一个指针。
答案:*3. C语言中,使用________关键字可以定义一个结构体。
大学C语言期末考试练习题(带详解答案)一、单项选择题1.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从 C开始执行。
A) 程序中第一条可执行语句 B) 程序中第一个函数C) 程序中的main函数 D) 包含文件中的第一个函数3、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)。
A) C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写。
C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是( B)。
A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A) %x B) a+b C) a123 D) 123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。
大一c语言设计复习题加答案1. 简述C语言的基本数据类型有哪些?答:C语言的基本数据类型包括整型(int)、浮点型(float和double)、字符型(char)和布尔型(_Bool,C99标准中引入)。
2. 请解释C语言中的指针是什么?答:指针是一种特殊的变量,它存储的是另一个变量的内存地址。
通过指针,程序可以间接访问和操作内存中的数据。
3. C语言中数组和指针的关系是什么?答:在C语言中,数组名可以被看作指向数组首元素的指针。
因此,数组和指针之间有着密切的关系,可以通过指针来访问数组元素。
4. 描述C语言中函数的定义和调用过程。
答:函数定义包括返回类型、函数名、参数列表和函数体。
函数调用则是通过函数名和实际参数来请求函数执行,并传递参数值。
函数执行完毕后,返回指定类型的值给调用者。
5. 什么是结构体?在C语言中如何定义结构体?答:结构体是一种用户自定义的数据类型,它允许将多个不同类型的数据项组合成一个单一的数据结构。
在C语言中,可以通过`struct`关键字来定义结构体,后跟结构体名和一对花括号,其中包含一系列声明数据项的语句。
6. 请解释C语言中的预处理指令`#include`和`#define`的作用。
答:`#include`预处理指令用于包含一个源代码文件到另一个源代码文件中,而`#define`用于定义宏。
宏可以是一个简单的值,也可以是一个更复杂的表达式。
7. C语言中如何实现循环控制?答:C语言中循环控制主要通过`for`、`while`和`do-while`循环来实现。
这些循环结构允许代码块在满足特定条件时重复执行。
8. 请解释C语言中的文件操作。
答:C语言中的文件操作包括文件的打开、关闭、读取和写入。
这些操作通常通过`fopen`、`fclose`、`fread`和`fwrite`等函数来实现。
9. 描述C语言中的递归函数。
答:递归函数是一种自己调用自己的函数。
递归函数通常用于解决可以分解为相似子问题的问题,如树的遍历和分治算法。
c语言期末考试题库大题及详解答案C语言期末考试题库大题及详解答案一、简答题1. 请简述C语言的基本数据类型及其特点。
答案:C语言的基本数据类型包括整型(int)、浮点型(float和double)、字符型(char)和枚举型(enum)。
整型用于存储整数,浮点型用于存储小数,字符型用于存储单个字符,枚举型用于定义一组命名的常量。
每种数据类型都有其特定的取值范围和占用内存大小。
2. 请解释C语言中的数组和指针的区别。
答案:数组是一种数据结构,用于存储固定数量的相同类型元素,可以通过下标访问元素。
指针是一个变量,它存储另一个变量的内存地址。
数组名可以作为指向数组第一个元素的指针使用,但数组本身是一个固定大小的内存块,而指针可以被赋值为不同的地址,具有动态性。
二、编程题1. 编写一个C语言程序,实现输入三个整数,找出其中的最大值并输出。
答案:```c#include <stdio.h>int main() {int num1, num2, num3, max;printf("请输入三个整数:");scanf("%d %d %d", &num1, &num2, &num3);max = (num1 > num2) ? ((num1 > num3) ? num1 : num3) : ((num2 > num3) ? num2 : num3);printf("最大值是:%d\n", max);return 0;}```2. 编写一个C语言程序,实现字符串的反转。
答案:```c#include <stdio.h>#include <string.h>int main() {char str[100];printf("请输入一个字符串:");fgets(str, sizeof(str), stdin); // 使用fgets以包含空格int len = strlen(str) - 1; // 减去换行符长度for (int i = len; i >= 0; --i) {printf("%c", str[i]);}printf("\n");return 0;}```三、综合题1. 请编写一个C语言程序,实现一个简单的计算器,能够进行加、减、乘、除四种基本运算。
大学c语言期末考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级语言B. C语言的执行方式是编译执行C. C语言支持面向对象编程D. C语言具有丰富的库函数答案:C2. 在C语言中,用于定义一个结构体的关键字是:A. structB. unionC. enumD. typedef答案:A3. 下列关于数组的描述中,正确的是:A. 数组必须在定义时初始化B. 数组的下标从1开始C. 数组可以存储不同类型的数据D. 数组的大小在定义后不能改变答案:D4. 在C语言中,用于文件操作的库函数是:A. printfC. fopenD. getchar答案:C5. 下列关于指针的描述中,错误的是:A. 指针可以存储变量的地址B. 指针可以作为函数的参数C. 指针可以被赋值为NULLD. 指针可以存储函数的地址答案:D6. 在C语言中,用于定义一个函数的关键字是:A. functionB. defC. voidD. int答案:B7. 下列关于循环的描述中,错误的是:A. for循环可以嵌套使用B. while循环可以和break语句一起使用C. do-while循环至少执行一次D. 循环体内不能使用continue语句答案:D8. 在C语言中,用于定义一个宏的预处理命令是:B. #includeC. #pragmaD. #import答案:A9. 下列关于函数的描述中,错误的是:A. 函数可以有返回值B. 函数可以没有参数C. 函数可以没有返回值D. 函数可以没有定义答案:D10. 在C语言中,用于定义一个枚举类型的关键字是:A. enumB. structC. unionD. typedef答案:A二、填空题(每题2分,共10分)1. C语言中,用于定义一个整型变量的关键字是____。
答案:int2. 在C语言中,表示逻辑与运算的运算符是____。
答案:&&3. 当需要在C语言中表示一个常量时,可以使用关键字____。
一1-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请在右边完善GetZhouChang函数,函数的具体要求如下:输入:圆的半径r处理:计算这个圆的周长,并返回结果输出:圆的周长输出样式:注意:请勿修改任何已有代码!默认圆周率为3.14!默认代码#include <stdio.h>/*请在此处注释语句下方完成GetZhouChang函数的声明与实现*/float GetZhouChang(float x);float GetZhouChang(float r){return 2*3.14*r;}int main( ) {float r = 4.4;float zhouchang = GetZhouChang(r);printf("%0.2f",zhouchang);return 0;}2-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请完善判断奇偶数JudgeOddNumber函数,函数的具体要求如下:形参:一个整型数num处理:判断num奇偶数,如果是奇数,返回1;如果是偶数,返回0返回:返回判断结果提示:函数建议声明为如下格式 int JudgeOddNumber(int num); 注意:请勿修改任何已有代码!默认代码#include<stdio.h>//请在此处注释语句下方完成JudgeOddNumber函数的声明与实现int JudgeOddNumber(int num);int JudgeOddNumber(int num){if(num%2==1)return 1;elsereturn 0;}int main( ) {int num = 103;int result = JudgeOddNumber(num);printf("%d", result); // 当前num是奇数,输出1num = 8;result = JudgeOddNumber(num);printf("%d", result); // 当前num是偶数,输出0return 0;}3-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请在右边完善func函数,函数的具体要求如下:输入:两个整型的数据a和b处理:求a-b的绝对值,并返回结果输出:|a-b|注意:请勿修改任何已有代码!默认代码#include<stdio.h>/*请在此处注释语句下方完成func函数的声明与实现,*/int func(int a,int b);int func(int a,int b){if(a>b)return a-b;elsereturn b-a;}int main( ){int a = 30,b = 100;int result = func(a,b);printf("%d", result);return 0;}4-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请完善div函数,函数的具体要求如下:形参:两个整型数a,b处理:判断a能否整除b,如果可以整除,输出0;如果不能整除,输出它们的余数返回:返回处理结果提示:函数建议声明为如下格式 int div(int a,int b);注意:输出语句结束不用换行!请勿修改任何已有代码!默认代码#include<stdio.h>//请在此处注释语句下方完成div函数的声明与实现int div(int a,int b);int div(int a,int b){return a%b;}int main( ) {int a = 100;int b = 50;int result = div(a,b);printf("%d",result);return 0;}5-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请在右边完善Calculation函数,函数的具体要求如下:输入:两个整型的数据处理:计算这两个数组成的矩形的周长,并返回结果输出:矩形周长输出样式:注意:请勿修改任何已有代码!默认代码#include <stdio.h>/*请在此处注释语句下方完成Calculation函数的声明与实现*/int Calculation(int a,int b);int Calculation(int a,int b){return 2*(a+b);}int main( ) {int a = 10, b = 20;int c irc = Calculation(a,b);printf("周长为%d",circ);return 0;}6-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请完善判断最大数的GetMax函数,函数的具体要求如下:输入:三个整型数a,b,c处理:通过条件语句判断最大的数,并返回最大的数输出:返回判断结果提示:函数建议声明为如下格式 int GetMax(int a,int b,int c) 注意:请勿修改任何已有代码!默认代码#include <stdio.h>//请在此处注释语句下方完成GetMax函数的声明与实现int GetMax(int a, int b, int c);int GetMax(int a, int b, int c){int max;if(a>b)max=a;elsemax=b;if(max<c)max=c;return max;}int main( ) {int a = 20, b = 5, c = 10;int max = GetMax(a, b, c);printf("三个数最大的是%d", max);return 0;}7-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请在右边完善fun函数,函数的具体要求如下:输入:一个整型数字处理:用户传入一个整型数字,然后返回这个整型数字的最后一位数字,输出样式如下图输出样式:注意:请勿修改任何已有代码!默认代码#include <stdio.h>/*请在此处注释语句下方完成fun函数的声明与实现,*/int fun(int x);int fun(int x){return x%10;}int main( ){int x = 325;int result = fun(x);printf("%d", result);return 0;}8-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请完善右边的fun函数,函数的具体要求如下:输入:任意一个字母处理:如果是大写字母返回1;如果是小写字母返回0.输出:返回判断结果注意:请勿修改任何已有代码!提示:A的ASCII码是65,a的ASCII码是97默认代码#include <stdio.h>//请在此处注释语句下方完成fun函数的声明与实现int fun(char letter);int fun(char letter){if(letter>=65 && letter<=90)return 1;elsereturn 0;}int main( ){char letter = 'A';int result = fun(letter);printf("%d%\n", result);char letter2 = 'b';int result2 = fun(letter2);printf("%d",result2);return 0;}9-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请完善判断最小数的GetMin函数,函数的具体要求如下:输入:三个整型数a,b,c处理:通过定义的GetMin函数判断最小的数,并返回最小的数输出:返回判断结果注意:请勿修改任何已有代码!输出语句结束不用换行!默认代码#include <stdio.h>//请在此处注释语句下方完成GetMin函数的声明与实现int GetMin(int a, int b, int c);int GetMin(int a, int b, int c){int min;if(a<b)min=a;elsemin=b;if(c<min)min=c;return min;}int main( ) {int a = 18, b = 8, c = 28;int min = GetMin(a, b, c);printf("三个数最小的是%d", min);return 0;}10-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请在右边完善UpperLetter函数,函数的具体要求如下:输入:一个小写字母处理:将小写字母转换成大写字母,返回结果输出样式:大写字母注意:请勿修改任何已有代码!提示:A的ASCII码是65,a的ASCII码是97默认代码#include <stdio.h>/*请在此处注释语句下方完成UpperLetter函数的声明与实现,*/char UpperLetter(char letter);char UpperLetter(char letter){return letter-32;}int main( ){char letter = 'g';char r = UpperLetter(letter);printf("%c", r);return 0;}11-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请在右边完善fun函数,函数的具体要求如下:输入:一个浮点型数字处理:输出该数绝对值,保留小数点后三位有效数位输出:返回绝对值注意:请勿修改任何已有代码!默认代码#include <stdio.h>/*请在此处注释语句下方完成fun函数的声明与实现,*/float fun(float a);float fun(float a){if(a>=0)return a;elsereturn -a;}int main( ){float a = -30;float b = fun(a);printf("绝对值是%.3f",b);return 0;}12-1 考察点计算思维C语言实现->模块化编程能力->函数设计题型C语言-自主编程难度系数 4题目请完善fun函数,函数的具体要求如下:输入你和你朋友的年龄,返回两者的年龄差,注意务必年龄大者减去年龄小者。
大一c语言期末考试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义函数?A. intB. floatC. voidD. function答案:A2. 在C语言中,以下哪个是正确的字符串声明?A. char str[10] = "Hello";B. string str = "Hello";C. str[10] = "Hello";D. char str = "Hello";答案:A3. 下列哪个选项不是C语言的基本数据类型?A. intB. floatC. doubleD. string答案:D4. 在C语言中,哪个运算符用于取模运算?A. %B. /C. *D. -答案:A5. 以下哪个选项是C语言中的逻辑运算符?A. &&B. ||C. !D. 以上都是答案:D6. 在C语言中,以下哪个函数用于计算字符串的长度?A. strlen()B. length()C. size()D. len()答案:A7. C语言中,以下哪个关键字用于定义全局变量?A. staticB. externC. autoD. register答案:B8. 在C语言中,以下哪个是正确的数组声明?A. int array[5] = {1, 2, 3, 4, 5};B. int array[] = {1, 2, 3, 4, 5};C. int array[5] = 1, 2, 3, 4, 5;D. int array = {1, 2, 3, 4, 5};答案:B9. 在C语言中,以下哪个关键字用于定义指针?A. pointerB. ptrC. *D. ref答案:C10. 在C语言中,以下哪个函数用于输出格式化的字符串?A. printf()B. scanf()C. sprintf()D. fprintf()答案:A二、填空题(每题2分,共20分)1. C语言中,用于定义一个整型变量的关键字是________。
大一上c语言期末考试题库及详解答案在大一上学期的C语言课程中,期末考试通常涵盖了C语言的基础知识、数据类型、控制结构、函数、数组、指针以及结构体等核心概念。
以下是一份模拟的期末考试题库及详解答案,供同学们复习参考。
1. 以下哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. _variableD. variable-2答案:B, C。
在C语言中,标识符可以由字母、数字和下划线组成,但不能以数字开头。
2. C语言中,int类型变量占用的字节数是多少?A. 1B. 2C. 4D. 8答案:C。
在大多数现代计算机系统中,int类型变量占用4个字节。
3. 以下哪个选项是正确的C语言语句?A. int a = 10;B. int a = '10';C. int a = "10";D. int a = 10.0;答案:A。
在C语言中,整型变量应该使用整数值进行初始化。
4. 以下哪个选项是C语言中的选择结构?A. if-elseB. switch-caseC. whileD. for答案:A, B。
if-else和switch-case是C语言中的选择结构,用于根据不同的条件执行不同的代码块。
5. 以下哪个选项是C语言中的循环结构?A. if-elseB. switch-caseC. whileD. for答案:C, D。
while和for是C语言中的循环结构,用于重复执行一段代码直到满足某个条件。
6. 以下哪个选项是C语言中的数组声明?A. int arr[5];B. int arr[];C. int arr = 5;D. int [5]arr;答案:A, B。
在C语言中,数组可以声明为固定大小(如A选项)或者声明为动态大小(如B选项)。
7. 以下哪个选项是C语言中的指针声明?A. int *ptr;B. int ptr[];C. int ptr = 0;D. int *ptr = nullptr;答案:A, D。
大一c语言期末试题及答案一、选择题(每题2分,共20分)1. C语言中,用于定义变量的关键字是()。
A. varB. defineC. intD. type答案:C2. 下列哪个选项是C语言中的合法标识符?()A. 2variableB. variable2C. variable!D. variable$答案:B3. 在C语言中,哪个运算符用于比较两个值是否不相等?()A. ==B. !=C. =D. <=答案:B4. 下列哪个选项是正确的C语言数组声明?()A. int array[10];B. int array[];C. int [10] array;D. int array=10;答案:A5. C语言中,用于循环结构的关键字是()。
A. loopB. repeatC. whileD. do答案:C6. 下列哪个选项是正确的C语言函数声明?()A. int function(int a, int b);B. int function(int, int);C. int function(a, b);D. int function(int a, b);答案:A7. 在C语言中,用于定义一个指针的关键字是()。
A. pointB. ptrC. pointerD. *答案:D8. 下列哪个选项是正确的C语言字符串声明?()A. char str[];B. char str[10] = "Hello";C. char str = "Hello";D. char str[10] = {'H', 'e', 'l', 'l', 'o'};答案:B9. 在C语言中,用于定义一个结构体的关键字是()。
A. structB. typeC. classD. record答案:A10. 下列哪个选项是正确的C语言文件操作函数?()A. fopenB. openfileC. createfileD. fileopen答案:A二、填空题(每题2分,共20分)1. C语言中,用于定义一个整型变量的关键字是______。
大一上c语言期末考试题库及详解答案在编写大一上C语言期末考试题库及详解答案时,需要确保内容的准确性和完整性。
以下是一份模拟的C语言期末考试题库及其详解答案的正文内容:一、选择题1. C语言中,以下哪个是正确的标识符?- A. 2variable- B. variable2- C. variable-variable- D. variable$答案:B详解:在C语言中,标识符可以由字母、数字和下划线组成,但不能以数字开头,也不能包含特殊字符如$或-。
2. 以下哪个是C语言中的整型常量?- A. 3.14- B. 'A'- C. 0x1A- D. 1e2答案:C详解:选项A是浮点数,选项B是字符常量,选项D是科学计数法表示的浮点数,而选项C是十六进制表示的整型常量。
二、填空题1. 在C语言中,一个简单的if语句的语法格式为:`if (________) { __________ }`。
答案:条件表达式;语句块2. 以下代码段的输出结果是什么?```cint a = 10, b = 20;if (a < b) {printf("%d", a + b);}```答案: 30三、简答题1. 简述C语言中数组的定义和初始化方法。
答案:在C语言中,数组是一种基本的数据结构,用于存储固定数量的相同类型的元素。
数组的定义格式为:`类型名数组名[数组大小]`。
初始化可以使用花括号包围的初始化列表,如:`int arr[5] = {1, 2, 3, 4, 5};`。
2. 描述C语言中指针的概念及其用途。
答案:指针是一种变量,它存储了另一个变量的内存地址。
指针的主要用途包括动态内存分配、数组操作、函数参数传递等。
指针可以用于通过地址来间接访问和修改数据,增加了程序的灵活性。
四、编程题1. 编写一个C语言程序,实现输入两个整数,输出它们的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和是:%d\n", sum);return 0;}```2. 编写一个函数,用于计算一个整数的阶乘。
易错点C语言中易犯的错误对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考.******************************** ******************************** ************************1.书写标识符时,忽略了大小写字母的区别.main(){int a=5;printf("%d",A);}编译程序把a和A认为是两个不同的变量名,而显示出错信息.C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量名用大写,变量名用小写表示,以增加可读性.******************************** ******************************** ************************2.忽略了变量的类型,进行了不合法的运算.main(){float a,b;printf("%d",a%b);}%是求余运算,得到a/b的整余数.整型变量a和b可以进行求余运算,而实型变量则不允许进行"求余"运算.******************************** ******************************** ************************3.将字符常量与字符串常量混淆.char c;c="a";在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列.C规定以"\"作字符串结束标志,它是由系统自动加上的,所以字符串"a"实际上包含两个字符:'a'和'\',而把它赋给一个字符变量是不行的.******************************** ******************************** ************************4.忽略了"="与"=="的区别.在许多高级语言中,用"="符号作为关系运算符"等于".如在BASIC程序中可以写if (a=3) then …但C语言中,"="是赋值运算符,"=="是关系运算符.如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a.由于习惯问题,初学者往往会犯这样的错误.******************************** ******************************** ************************5.忘记加分号.分号是C语句中不可缺少的一部分,语句末尾必须有分号.a=1b=2编译时,编译程序在"a=1"后面没发现分号,就把下一行"b=2"也作为上一行语句的一部分,这就会出现语法错误.改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号.{z=x+y;t=z/100;printf("%f",t);}对于复合语句来说,最后一个语句中最后的分号不能忽略不写******************************** ******************************** ************************6.多加分号.对于一个复合语句,如:{z=x+y; t=z/100;printf("%f",t);};复合语句的花括号后不应再加分号,否则将会画蛇添足.又如:if (a%3==0);I++;本是如果3整除a,则I加1.但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1.再如:for (I=0;I<5;I++);{scanf("%d",&x);printf("%d",x);}本意是先后输入5个数,每输入一个数后再将它输出.由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它.****************************************************************************************7.输入变量时忘记加地址运算符"&".int a,b;scanf("%d%d",a,b);这是不合法的.Scanf函数的作用是:按照a,b在内存的地址将a,b的值存进去."&a"指a在内存中的地址.******************************** ******************************** ************************8.输入数据的方式与要求不符.①scanf("%d%d",&a,&b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:3,4输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab.②scanf("%d,%d",&a,&b);C规定:如果在"格式控制"字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符.下面输入是合法的:3,4此时不用逗号而用空格或其它字符是不对的.3 4 3:4又如:scanf("a=%d,b=%d",&a,&b); 输入应如以下形式:a=3,b=4****************************************************************************************9.输入字符的格式与要求不一致.在用"%c"格式输入字符时,"空格字符"和"转义字符"都作为有效字符输入.scanf("%c%c%c",&c1,&c2,&c3);如输入a b c字符"a"送给c1,字符" "送给c2,字符"b"送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔.****************************************************************************************10.输入输出的数据类型与所用格式说明符不一致.例如,a已定义为整型,b定义为实型a=3;b=;printf("%f%d\n",a,b);编译时不给出出错信息,但运行结果将与原意不符.这种错误尤其需要注意.****************************************************************************************11.输入数据时,企图规定精度.scanf("%7.2f",&a);这样做是不合法的,输入数据时不能规定精度.****************************************************************************************语句中漏写break语句.例如:根据考试成绩的等级打印出百分制数段.switch(grade){ case 'A':printf("85~100\n"); case 'B':printf("70~84\n");case 'C':printf("60~69\n");case 'D':printf("<60\n"); default:printf("error\n");由于漏写了break语句,case只起标号的作用,而不起判断作用.因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二,三,四,五个printf函数语句.正确写法应在每个分支后再加上"break;".例如case 'C':printf("60~69\n");break; ****************************************************************************************13.忽视了while和do-while语句在细节上的区别.(1)main(){int a=0,I;scanf("%d",&I); while(I<=10){a=a+I;I++;}printf("%d",a);}(2)main(){int a=0,I;scanf("%d",&I);do{a=a+I;I++;}while(I<=10);printf("%d",a);}可以看到,当输入I的值小于或等于10时,二者得到的结果相同.而当I>10时,二者结果就不同了.因为while循环是先判断后执行,而do-while循环是先执行后判断.对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体.******************************** ******************************************************** 14.定义数组时误用变量. int n; scanf("%d",&n); int a[n]; 数组名后用方括号括起来的是常量表达式,可以包括常量和符号常 量.即C 不允许对数组的大小作动态定义. **************************************************************************************** 15.在定义数组时,将定义的"元素个数"误认为是可使的最大下 标值. main() {static int a[10]={1,2,3,4,5,6,7,8,9,10}; printf("%d",a[10]); } C 语言规定:定义时用a[10],表示a 数组有10个元素.其下标值由0 开始,所以数组元素a[10]是不存在的. **************************************************************************************** 16.初始化数组时,未使用静态存储. int a[3]={0,1,2}; 这样初始化数组是不对的.C 语言规定只有静态存储(static)数组 和外部存储 (exterm)数组才能初始化.应改为: static int a[3]={0,1,2}; **************************************************************************************** 17.在不应加地址运算符&的位置加了地址运算符. scanf("%s",&str); C 语言编译系统对数组名的处理是:数组名代表该数组的起始地址 ,且scanf 函数中的输入项是字符数组名,不必要再加地址符&.应 改为:scanf("%s",str); **************************************************************************************** 18.同时定义了形参和函数中的局部变量. int max(x,y) int x,y,z; {z=x>y?x:y; return(z); } 形参应该在函数体外定义,而局部变量应该在函数体内定义.应改 为: int max(x,y)int x,y;{int z;z=x>y?x:y;return(z);}试题一一、单项选择题(共30分,每题1分)C1. 下列不正确的转义字符是A.\\B.\‘ D.\02. 不是C语言提供的合法关键字是3.正确的标识符是()A.?a =24.下列字符中属于键盘符号的是A.\ B.\n C.\t D.\b.下列数据中属于“字符串常量”的 B.“ABC” C.‘ABC’ D.‘A’型常量在内存中存放的是码码 C.内码值 D.十进制代码值7.设a为5,执行下列语句后,b 的值不为2的是()=a/2 =6-(——a) =a%2 =a>3?2:28.在以下一组运算符中,优先级最高的运算符是()A.<= B.= C.% D.& &9.设整型变量i的值为3,则计算表达式i——i后表达式的值是()C. 2D.表达式出错10.设整型变量a,b,c均为2,表达式a+++b+++c++的结果是()D.表达式出错11.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d的结果是()13.设a为整型变量,不能正确表达数学关系:10<a<15的C语言表达式是()<a<15 = =11 || a= =12 || a= =13 || a= =14>10&&a<15 D.!(a<=10)&&!(a>=15)14.若有以下定义:char a、 intb 、 floatc 、 double d,则表达式a*b+d-c值的类型为()15.表达式“10!=9”的值是()B.非零值16.循环语句 for (x=0,y=0;(y!=123)|| (x<4);x++);的循环执行()A.无限次B.不确定次次次17.在C语言中,下列说法中正确的是()A. 不能使用“do while”的循环B.“do while”的循环必须使用break语句退出循环C.“do while”的循环中,当条件为非0时将结束循环D.“do while”的循环中,当条件为0时将结束循环。