(完整版)大一上学期C语言期末复习总结和模拟试题带答案,推荐文档

合集下载

大一上c语言考试题及答案解析

大一上c语言考试题及答案解析

大一上c语言考试题及答案解析一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言支持多种数据类型答案:B解析:C语言是一种高级语言,它需要编译成机器语言后才能被计算机执行。

2. C语言中,用于定义一个整型变量的关键字是:A. intB. floatC. charD. double答案:A解析:在C语言中,整型变量使用关键字int来定义。

3. 下列选项中,哪一个是C语言中的合法标识符?A. 2variableB. _variableC. variable2D. variable$答案:C解析:在C语言中,标识符可以包含字母、数字和下划线,但不能以数字开头。

4. C语言中,用于实现循环结构的关键字是:A. forB. ifC. switchD. while答案:A解析:for关键字用于定义循环结构。

5. 下列关于C语言数组的描述中,正确的是:A. 数组可以存储不同类型的数据B. 数组的大小在定义后可以改变C. 数组的索引从0开始D. 数组可以赋给另一个数组答案:C解析:C语言中数组的索引从0开始。

6. C语言中,用于定义一个浮点型变量的关键字是:A. intB. floatC. charD. double答案:B解析:在C语言中,浮点型变量使用关键字float来定义。

7. 下列选项中,哪一个是C语言中的合法字符串常量?A. "Hello"B. 'Hello'C. "HelloD. 'Hello'答案:A解析:在C语言中,字符串常量使用双引号括起来。

8. C语言中,用于定义一个字符型变量的关键字是:A. intB. floatC. charD. double答案:C解析:在C语言中,字符型变量使用关键字char来定义。

9. C语言中,用于定义一个双精度浮点型变量的关键字是:A. intB. floatC. charD. double答案:D解析:在C语言中,双精度浮点型变量使用关键字double来定义。

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

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语言期末考试题库试题及答案

大学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语言期末考试试题及答案(含对应考察点)

一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语言期末复习总结和模拟试题带答案,推荐文档

大一上学期C语言期末复习总结和模拟试题带答案,推荐文档

进行了不合法易错点C 语言中易犯的错误对初学C 语言的人来说,经常会出一些 连自己都不知道错在哪里的错误 . 看 着有错的程序 , 不知该如何改起 , 一些 C 编程时常犯的错误 , 写给各位学员以 供参考.******************************** ******************************************************** 运算 , 而实型变量则不允许进行 "求余 "运算.******************************** ******************************** ************************3. 将字符常量与字符串常量混淆char c;1. 书写标识符时 , 忽略了大小写字母 的区别.main(){int a=5; printf("%d",A);}编译程序把 a 和 A 认为是两个不同 的变量名 , 而显示出错信息 .C 认为大写字母和小写字母是两个不 同的字符.习惯上, 符号常量 名用大写 , 变量名用小写表示 , 以增加 可读性.******************************** ******************************** ************************2. 忽略了变量的类型 的运算.main(){float a,b; printf("%d",a%b);}在这里就混淆了字符常量与字符串常量 , 字符常量是由一对单 引号括起来的单个字符 , 字符串常量 是一对双引号括起来的字符序 列.C 规定以"\"作字符串结束标志,它 是由系统自动加上的 , 所以 字 符 串 "a" 实际上包含两 个字符:'a'和'\',而把它赋给一 个字符变量是不行的 .******************************** ******************************** ************************4. 忽略了 "=" 与"==" 的区别 .在许多高级语言中 , 用"=" 符号作为 关系运算符 "等于".如在BASIC 程序中可以写if (a=3) then但C 语言中,"="是赋值运算符,"==" 是关系运算符 . 如:if (a==3) a=b;%是求余运算,得到a/b 的整余数.整 型变量 a 和 b 可以进行求余前者是进行比较 ,a 是否和 3相等 , 后c="a "・{z=x+y;这是不合法的 .Scanf 函数的作用是者表示如果 a 和3相等,把b 值赋给a.由于习惯问题,初学者往往 会犯这样的错误 .******************************** ******************************** ************************5. 忘记加分号 .分号是C 语句中不可缺少的一部分, 语句末尾必须有分号 .a=1 b=2编译时,编译程序在"a=1"后面没发 现分号,就把下一行"b=2"也作为上一行语句的一部分 , 这就 会出现语法错误 . 改错时 ,有时在被指出有错的一行中未发现错 误 , 就需要看一下上一行是否 漏掉了分号 .{ z=x+y; t=z/100; printf("%f",t); }对于复合语句来说 , 最后一个语句 中最后的分号不能忽略不写******************************** ******************************** ************************6. 多加分号 .对于一个复合语句 , 如: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);按照a,b在内存的地址将a,输入应如以下形式a=3,b=4b的值存进去."&a"指a在内存中的地址.****************************************************************************************8.输入数据的方式与要求不符•①scan f("%d%d",&a,&b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:3,4输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab.②scan f("%d,%d",&a,&b);C规定:如果在"格式控制"字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符•下面输入是合法的:3,4此时不用逗号而用空格或其它字符是不对的.3 4 3:4又如:sca nf("a=%d,b=%d",&a,&b); ****************************************************************************************9.输入字符的格式与要求不一致•在用"%c"格式输入字符时,"空格字符"和"转义字符"都作为有效字符输入.sca nf("%c%c%c",&c1,&c2,&c3);如输入a b c字符"a"送给c1,字符""送给c2,字符"b"送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔•****************************************************************************************10.输入输出的数据类型与所用格式说明符不一致.例如,a已定义为整型,b定义为实型a=3;b=4.5;prin tf("%f%d\n",a,b);编译时不给出出错信息,但运行结果将与原意不符•这种错误尤其需要注意•****************************************************************************************11.输入数据时,企图规定精度•sca nf("%7.2f",&a);这样做是不合法的,输入数据时不能规定精度.****************************************************************************************12.switch 语句中漏写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 时, 二者得到的结果相同.而当1>10时,二者结果就不同了•因为while 循环是先判断后执行, 而do-while 循环是先执行后判断. 对于大于10的数while 循环一次也不执行循环体, 而do-while 语句则要执行一次循环体.****************************************************************************************14. 定义数组时误用变量.int n;scanf("%d",&n);int a[n];数组名后用方括号括起来的是常量表达式, 可以包括常量和符号常量.即C不允许对数组的大小作动态定义.****************************************************************************************15.在定义数组时, 将定义的" 元素个数"误认为是可使的最大下标值.main(){static inta[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 inta[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)A.<=&B.=C.%D.&C.a>10&&a<15 &&!( a>=15)D. !( a<=10)int x,y; {int z;z=x>y?x:y;return(z);}试题一一、单项选择题(共30分,每题1分)C1. 下列不正确的转义字符是A.\\‘ C.074 D.\02. 不是C 语言提供的合法关键字是A.switch B.cher C.caseD.default3.正确的标识符是()A.?a B.a=2 C.a.3 D.a_34.下列字符中属于键盘符号的是B.\nC.\tD.\b.下列数据中属于“字符串常量” 的A.ABC B. “ ABC” C. ‘ABC' D. ‘A'6.char 型常量在内存中存放的是A.ASCII 码B.BCD 码C.内码值D. 十进制代码值7.设a为5,执行下列语句后,b 的值不为2 的是()A.b=a/2B.b=6- (——a)C.b=a%2 D.b=a>3 ?2:28.在以下一组运算符中,优先级最高的运算符是()9.设整型变量i 的值为3,则计算表达式i ——i 后表达式的值是()A.0 B.1 C. 2 D. 表达式出错10. 设整型变量a,b,c 均为2,表达式a+++b+++c++勺结果是()A.6 B.9 C.8 D. 表达式出错11. 若已定义x 和y 为double 类型,则表达式x=1, y=x+3/2 勺值是( )A.1B.2C.2.0D.2.512.设a=1, b=2, c=3, d=4,则表达式: a<b?a:c<d?a:d 勺结果是( )A.4B.3C.2D.113. 设a 为整型变量,不能正确表达数学关系: 10<a<15 勺C 语言表达式是()A.10<a<15B.a==11 || a= =12 || a= =13 || a= =1414. 若有以下定义: char a 、int b 、floatc 、doubled ,则表达式a*b+d-c 值勺类型为()D.char a[]={0 ,15.表达式“ 10!=9”的值是 ) A. true B. 非零 值 C.0 D.1 20. 设有定义: char s[12]={“string ” } ;则 printf(“ %d\n”,strlen(s ));的输出是( )16. 循环语句 for ( x=0,y=0; (y ! =123) ||(x<4); x++);的循环执行( )A. 无限次B. 不确定次 C.4 次 D.3 次17. 在 C 语言中,下列说法中正确 的是( )A. 不能使用“ do while ”的循环B. “do while ”的循环必须使用break 语句退出循环C.“do while ”的循环中,当条 件为非 0 时将结束循环D.“do while ”的循环中,当条 件为 0时将结束循环。

大一期末C语言程序设计基础题库与总结复习资料

大一期末C语言程序设计基础题库与总结复习资料

C语言题库第一章计算机语言经历发展阶段:机器语言、符号语言、高级语言程序结构有3种:顺序结构,选择结构,循环结构C语言的特点:允许直接访问物理地址。

【C语言中含有的位和指针运算,能够直接对内存地址进行访问。

】不是C语言的特点的是:能够编制出功能复杂的程序【所有程序都可以,不算特点】Main:主函数,是所有程序运行的入口、起点。

一个C语言程序必须只有一个main函数。

程序总是从main函数开始执行,main函数可以放任何位置,到main函数结束。

函数体由花括号括起来结束标志:returnreturn 0的作用是:当main函数执行结束前将整数0作为函数值返回到调用函数处return(z)的作用是:将z的值作为max的函数值返回给调用max 函数的函数。

只有通过return(z)才能把求出的z值作为函数值并返回调用它的main函数中C语言程序的结构:由一个或多个源程序(C语言编写的程序,也可以叫编译单位)文件组成(源程序文件中包含:预处理指令、全局声明、函数定义)函数是C程序的主要组成部分(也是基本单位),C语言由函数组成。

函数包括两部分:函数首部、函数体C语言本身不提供输入输出语句,输入输出的操作是有库函数scanf 和printf等函数来完成的。

程序应包含注释#define和printf都不是C语句C语言程序的运行经过:编辑(edit)、编译(compile)、连接(link)【C语言中是build】、执行(execute)。

C语言源程序文件的后缀是.cpp,经过编译之后,生成后缀为.obj 的目标文件,经连接生成后缀.exe的可执行文件C语言的储存类型包括register、extern、statis和auto基础知识6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。

A. 生成可执行目标文件B. 生成目标文件C. 输出运行结果D. 自动保存源文件运算优先级:!(非)>算数(如%)>关系>逻辑>赋值运算符(低)空语句:只有分号组成的语句,即一个分号。

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

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

大一c语言期末考试题及答案下载随着信息技术的飞速发展,C语言作为一门基础且重要的编程语言,在大学计算机科学与技术专业的教学中占据着举足轻重的地位。

大一的同学们在经过一个学期的学习之后,即将迎来C语言的期末考试。

为了帮助同学们更好地复习和准备,我们特别整理了一份大一C语言期末考试题及答案,供同学们下载和参考。

首先,我们来看第一题,这是一道关于C语言基础语法的选择题。

题目要求同学们选择正确的C语言变量声明方式。

正确答案是选项C,即`int a = 5;`。

这道题目考察了同学们对C语言变量声明和初始化的理解。

接下来是第二题,这是一道关于数组的编程题。

题目要求编写一个程序,实现对一个整型数组的逆序输出。

同学们需要掌握数组的遍历和元素交换的方法来完成这道题目。

第三题是一道关于函数的编程题。

题目要求编写一个函数,实现对两个整数的交换。

这道题目不仅考察了同学们对函数定义和调用的理解,还考察了参数传递和返回值的使用。

紧接着是第四题,这是一道关于指针的选择题。

题目要求同学们选择正确的指针声明方式。

正确答案是选项B,即`int *p;`。

这道题目考察了同学们对指针声明和初始化的理解。

第五题是一道关于结构体的编程题。

题目要求编写一个程序,实现对学生信息的输入和输出。

同学们需要掌握结构体的定义和使用,以及如何通过指针访问结构体成员。

第六题是一道关于文件操作的编程题。

题目要求编写一个程序,实现对文本文件的读写操作。

这道题目考察了同学们对文件指针的使用,以及如何进行文件的打开、读取、写入和关闭。

第七题是一道关于预处理指令的选择题。

题目要求同学们选择正确的宏定义方式。

正确答案是选项A,即`#define PI 3.14159`。

这道题目考察了同学们对预处理指令的理解。

第八题是一道关于位运算的编程题。

题目要求编写一个程序,实现对整数的二进制表示的反转。

这道题目考察了同学们对位运算符的使用,以及如何进行位运算。

最后是第九题,这是一道综合性的编程题。

大学计算机 C语言期末复习题(一) (附带答案)

大学计算机 C语言期末复习题(一) (附带答案)

大学计算机C语言期末复习题(一)《附带答案》一、单项选择题1. 以下不正确的C语言标识符是()。

A. ABC B. abc C. a_bc D. ab.c 2.以下正确的C语言标识符是()。

A. %k B. a+b C. a123 D. test!3. 一个C程序的执行是从()。

A.main( )函数开始,直到main( )函数结束B.第一个函数开始,直到最后一个函数结束C.第一个语句开始,直到最后一个语句结束D.main( )函数开始,直到最后一个函数结束4. 在C程序中,main( )的位置()。

A.必须作为第一个函数B.必须作为最后一个函数C.可以任意D.必须放在它所调用的函数之后5.C语言源程序的基本单位是()。

A.过程 B.函数 C.子程序 D.标识符6.以下结果为整数的表达式(设有int i;char c;float f;)( ).A.i+fB.i*cC.c+fD.i+c+f7.以下不正确的语句(设有int p,q)是()。

A.p*=3; B.p/=q; C.p+=3; D.p&&=q;8.以下使i的运算结果为4的表达式是()。

A.int i=0,j=0; (i=3,(j++)+i);B. int i=1,j=0; j=i=((i=3)*2);C. int i=0,j=1; (j==1)? (i=1): (i=3);D. int i=1,j=1; i+=j+=2;9.设char ch;以下正确的赋值语句是()。

A.ch='123'; B.ch='\xff'; C.ch='\08'; D.ch="\";10.设n=10,i=4,则赋值运算n%=i+1执行后,n的值是()。

A.0 B.3 C.2 D.1 11.逗号表达式(a=3*5,a*4),a+15的值为(),a的值是()。

①A.15 B.60 C.30 D.不确定②A.60 B.30 C.15 D.9012.如果a=1,b=2,c=3,d=4,则条件表达式a<b?a:c<d?c:d的值为( ).A.1 B.2 C.3 D.413.设int n=3;则++n的结果是(),n的结果是()。

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

易错点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=4.5;printf("%f%d\n",a,b);编译时不给出出错信息,但运行结果将与原意不符.这种错误尤其需要注意.****************************************************************************************11.输入数据时,企图规定精度.scanf("%7.2f",&a);这样做是不合法的,输入数据时不能规定精度.****************************************************************************************12.switch语句中漏写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.\‘ C.074 D.\02. 不是C语言提供的合法关键字是A.switchB.cherC.caseD.default3.正确的标识符是()A.?a B.a=2 C.a.3 D.a_34.下列字符中属于键盘符号的是A.\ B.\n C.\t D.\b.下列数据中属于“字符串常量”的A.ABC B.“ABC” C.‘ABC’ D.‘A’6.char型常量在内存中存放的是A.ASCII码B.BCD码C.内码值D.十进制代码值7.设a为5,执行下列语句后,b 的值不为2的是()A.b=a/2B.b=6-(——a) C.b=a%2 D.b=a>3?2:28.在以下一组运算符中,优先级最高的运算符是()A.<= B.= C.% D.& &9.设整型变量i的值为3,则计算表达式i——i后表达式的值是()A.0B.1C. 2D.表达式出错10.设整型变量a,b,c均为2,表达式a+++b+++c++的结果是()A.6B.9C.8D.表达式出错11.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.512.设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d的结果是()A.4B.3C.2D.113.设a为整型变量,不能正确表达数学关系:10<a<15的C语言表达式是()A.10<a<15B.a==11 || a= =12 || a= =13 || a= =14C.a>10&&a<15D.!(a<=10)&&!(a>=15)14.若有以下定义:char a、 intb 、 floatc 、 double d,则表达式a*b+d-c值的类型为()A.floatB.intC.charD.double15.表达式“10!=9”的值是()A.trueB.非零值 C.0 D.116.循环语句 for (x=0,y=0;(y!=123)|| (x<4);x++);的循环执行()A.无限次B.不确定次 C.4次 D.3次17.在C语言中,下列说法中正确的是()A. 不能使用“do while”的循环B.“do while”的循环必须使用break语句退出循环C.“do while”的循环中,当条件为非0时将结束循环D.“do while”的循环中,当条件为0时将结束循环。

相关文档
最新文档