C语言2复习题

合集下载

c 二级考试试题和答案及分析

c 二级考试试题和答案及分析

c 二级考试试题和答案及分析**C 二级考试试题和答案及分析**一、选择题(每题2分,共40分)1. 在C语言中,以下哪个选项是正确的整型常量表示?A. 0x12B. 1.5e2C. 0123D. 1.23**答案:A****分析:**在C语言中,0x12是正确的十六进制表示,1.5e2是浮点数表示,0123是八进制表示,而1.23是浮点数表示。

2. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. _variableD. variable-2**答案:B, C****分析:**在C语言中,标识符可以以字母、下划线开头,但不能以数字开头。

因此,2variable和variable-2都是不合法的,而variable2和_variable是合法的。

3. 在C语言中,以下哪个选项是正确的字符串字面量?A. "Hello, World!"B. 'Hello, World!'C. "Hello" "World!"D. 'Hello' 'World!'**答案:A, C****分析:**在C语言中,字符串字面量需要用双引号括起来,因此A选项是正确的。

C选项中,两个字符串字面量之间没有加号,它们会被编译器自动连接起来,也是正确的。

4. 下列哪个选项是C语言中的合法数组声明?A. int array[5];B. int array[];C. int array[5] = {1, 2, 3, 4, 5};D. int array = {1, 2, 3, 4, 5};**答案:A, B, C****分析:**在C语言中,A选项和C选项都是合法的数组声明。

B选项声明了一个未指定大小的数组,这也是合法的。

D选项是错误的,因为它试图声明一个整型变量而不是数组。

5. 在C语言中,以下哪个选项是正确的函数声明?A. int add(int x, int y);B. int add();C. int add(int, int);D. int add(int x, y);**答案:A, C****分析:**在C语言中,函数声明需要指定参数的类型和数量。

c语言二级考试试题及答案

c语言二级考试试题及答案

c语言二级考试试题及答案C语言二级考试试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言中数组的描述,正确的是:A. 数组名是一个变量名B. 数组名是一个常量C. 数组名是一个指针D. 数组名是一个函数答案:B2. 以下哪个是C语言中的合法变量名?A. 2variableB. variable-nameC. variable_nameD. variable name答案:C3. 在C语言中,以下哪个是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello World" + "Hello World"D. "Hello\nWorld"答案:D4. C语言中,以下哪个不是标准输入输出库函数?A. printf()B. scanf()C. getchar()D. puts()答案:C5. 下列哪个是C语言中的条件语句?A. ifB. switchC. forD. while答案:A6. C语言中,以下哪个是正确的函数定义?A. int function_name(int x, int y) { /* ... */ }B. int function_name(int x, int y);C. int function_name(int x, y) { /* ... */ }D. int function_name(int x; int y) { /* ... */ }答案:A7. 在C语言中,以下哪个是正确的递归函数调用?A. function_name(x)B. function_name(x, y)C. function_name(function_name(x))D. function_name(&x)答案:C8. 在C语言中,以下哪个是正确的结构体定义?A. struct person { int age; char name[50]; };B. struct person { int age; char name[50] }C. struct person { int age; char name[50]; }D. struct person { int age; char name[50] } person;答案:A9. 在C语言中,以下哪个是正确的指针声明?A. int *ptr;B. int ptr*;C. *int ptr;D. int * ptr;答案:A10. 下列哪个是C语言中的位运算符?A. &&B. ||C. &D. ++答案:C二、填空题(每题2分,共10分)1. C语言中,使用________运算符可以实现两个整数的按位与操作。

c语言二级考试题及答案

c语言二级考试题及答案

c语言二级考试题及答案### C语言二级考试题及答案#### 单项选择题1. 题目:以下哪个选项是C语言中合法的变量名?- A. 2variable- B. variable-name- C. $variable- D. variable_name答案:B2. 题目:C语言中,以下哪个选项是正确的字符串字面量? - A. "Hello, World!"- B. 'Hello, World!'- C. "Hello World"- D. 'Hello World'答案:A3. 题目:在C语言中,以下哪个选项是正确的整型常量? - A. 0x1A- B. 1.2E3- C. 0123- D. 0b1010答案:A#### 填空题1. 题目:在C语言中,以下代码段的输出结果是____。

```cint a = 5;printf("%d", a++);```答案:52. 题目:以下代码段中,变量`b`的值是____。

```cint a = 10, b;b = a % 3;```答案:13. 题目:以下代码段中,变量`c`的值是____。

```cfloat a = 2.5, b = 4.5;int c = a + b;```答案:7#### 编程题1. 题目:编写一个C语言程序,计算并输出以下数列的前10项之和:1, 1/2, 1/3, 1/4, ...```c#include <stdio.h>int main() {double sum = 0.0;for (int i = 1; i <= 10; i++) {sum += 1.0 / i;}printf("Sum of the first 10 terms: %f\n", sum); return 0;}```2. 题目:编写一个C语言程序,实现两个整数的交换。

c语言二级考试题库及详解答案

c语言二级考试题库及详解答案

c语言二级考试题库及详解答案C语言二级考试题库及详解答案一、选择题1. 在C语言中,以下哪个选项是合法的标识符?A. 2variableB. variable2C. 3numberD. variable#答案:B2. C语言中,整型变量int所占的字节数是:A. 1字节B. 2字节C. 4字节D. 8字节答案:C(注:实际字节数可能因编译器和平台而异,但通常为4字节)3. 下列哪个不是C语言的控制语句?A. ifB. switchC. forD. goto答案:B(注:switch也是C语言的控制语句,此题有误)二、填空题1. 在C语言中,若要定义一个整型数组,可以使用以下语法:___________。

答案:int array_name[array_size];2. C语言中,用于计算两个数的乘积的运算符是:___________。

答案:*三、简答题1. 简述C语言中数组和指针的区别。

答案:数组是一种数据结构,用于存储相同类型的元素集合。

指针是一个变量,它存储了另一个变量的内存地址。

数组名可以作为指针使用,但数组本身不是指针。

数组的大小在定义时确定,而指针可以指向不同大小的内存块。

2. 解释C语言中的递归函数。

答案:递归函数是一种函数,它在执行过程中调用自己。

递归函数通常用于解决可以分解为相似子问题的问题。

递归函数必须有一个明确的终止条件,以避免无限递归。

四、编程题1. 编写一个C语言程序,实现求1到100的和。

答案:```c#include <stdio.h>int main() {int sum = 0, i;for(i = 1; i <= 100; i++) {sum += i;}printf("1到100的和是:%d\n", sum);return 0;}```2. 编写一个C语言函数,实现字符串反转。

答案:```cvoid reverseString(char *str) {int len = 0;while(str[len] != '\0') {len++;}for(int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - 1 - i];str[len - 1 - i] = temp;}}```五、论述题1. 论述C语言中函数的作用和重要性。

计算机二级c语言试题及答案解析

计算机二级c语言试题及答案解析

计算机二级c语言试题及答案解析一、选择题1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A解析:关键字`struct`用于定义一个结构体,它允许将多个不同类型的数据项组合成一个单一的数据结构。

2. 下列哪个选项不是C语言中的运算符?A. %B. &&C. ::D. ||答案:C解析:`%`是取模运算符,`&&`是逻辑与运算符,`||`是逻辑或运算符,而`::`不是C语言中的运算符。

二、填空题1. 在C语言中,`________`关键字用于声明一个函数。

答案:int解析:在C语言中,`int`是用于声明一个函数的返回类型,表示该函数返回一个整数值。

2. 以下代码片段中,`________`用于定义一个名为`data`的数组,包含10个整数。

```cint data[10];```答案:int data[10];解析:`int data[10];`定义了一个名为`data`的数组,它包含10个整数。

三、编程题1. 编写一个C语言函数,计算并返回两个整数的和。

```cint add(int a, int b) {return a + b;}```答案:```cint add(int a, int b) {return a + b;}```解析:该函数接受两个整数参数`a`和`b`,计算它们的和,并返回结果。

2. 编写一个C语言程序,实现将一个字符串反转。

```c#include <stdio.h>#include <string.h>void reverse(char *str) {int len = strlen(str);for (int i = 0; i < len / 2; i++) { char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[] = "Hello, World!";reverse(str);printf("Reversed string: %s\n", str); return 0;}```答案:```c#include <stdio.h>#include <string.h>void reverse(char *str) {int len = strlen(str);for (int i = 0; i < len / 2; i++) { char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[] = "Hello, World!";reverse(str);printf("Reversed string: %s\n", str);return 0;}```解析:该程序定义了一个`reverse`函数,它接受一个字符串作为参数,并通过交换字符的方式将字符串反转。

计算机二级c语言试题题库及答案

计算机二级c语言试题题库及答案

计算机二级c语言试题题库及答案一、单项选择题(每题2分,共20分)1. 在C语言中,用于定义变量的关键字是()。

A. defineB. varC. intD. let答案:C2. 下列关于C语言函数的描述,不正确的是()。

A. 函数可以没有参数B. 函数可以返回值C. 函数必须有返回值D. 函数可以嵌套定义答案:C3. 以下哪个选项不是C语言中的运算符()。

A. %B. &&C. ++D. :答案:D4. 在C语言中,用于定义一个结构体的关键字是()。

A. structB. unionC. enumD. typedef答案:A5. C语言中,用于表示逻辑与的运算符是()。

A. &&B. ||C. !D. =答案:A二、填空题(每题2分,共20分)1. 在C语言中,定义一个整型数组的语句是:int array[10]; 其中array[0]的值默认为____。

答案:02. 如果一个函数的返回类型是int,那么在函数体中必须包含一条____语句。

答案:return3. 在C语言中,用于计算字符串长度的函数是____。

答案:strlen4. C语言中,用于将字符数组转换为字符串的字符是____。

答案:'\0'5. 当使用指针变量时,必须先对其进行____。

答案:初始化三、编程题(每题10分,共20分)1. 编写一个C语言函数,实现两个整数的交换。

```cvoid swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}```2. 编写一个C语言程序,计算并输出100以内所有偶数的和。

```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("Sum of even numbers from 1 to 100 is: %d\n", sum); return 0;}```四、简答题(每题10分,共40分)1. 简述C语言中指针和数组的关系。

C语言2

C语言2

《C语言》总复习二一、选择题:1.一个C语言程序至少包含一个()函数。

A.printfB.scanfC.mainD.自定义2.一个完整的C程序包含一个或多个函数。

对于函数main() ,不正确的说法是()。

A.它是程序开始运行的第一个被调用的函数B.没有它的程序就无法运行C.它是唯一不缺少的函数D.又没有它都行3.C语言中,复合语句的构成是将一系列语句置于()。

A. begin和end 之间B.方括号“[]”之间C.圆括号“()”之间D.花括号“{}”之间4.不合法的C语言整型常量是()。

A.-0128 B.0x35 C.123L D.300005.以下程序段的输出结果是()。

int x=3; do { printf(“%3d”,x - =2); } while(!(--x));A.1B.3 0C.1 -2D.死循环6.设x,y均为整型常量,且x=10, y=3,则语句printf(“%d,%d\n”,x--,y--);的输出结果是()。

A.10,3B.9,3C.9,2D.10,27.以下程序的输出结果是()。

main(){ int a [4][4]={{1,3,5},{2,4,6},{3,5,7}};printf(“%d%d%d%d\n”,a[0][3],a[1][2],a[2][1],a[3][0]); }A.0650B.1470C.5430D.输出值不定8.以下程序的输出结果是()。

int a ,b; void fun() { a=100;b=200;}main(){int a=5,b=7;fun();printf(“%d,%d\n”,a,b);}A.100,200B.5,7C.200,100D.7,59.执行下面的程序后,a的值为()。

{int a ,b; for (a=1,b=1;a<=100;a++){ if(b>=20) {b+=3; continue;} b-=5; } }A.7B.8C.9D.1010.若有以下说明,int a [3][5]={{1,2},{3,4},{5,6}};则数值为6的表达式是()。

c语言二级考试题及答案

c语言二级考试题及答案

c语言二级考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,正确的是()。

A. C语言是一种高级语言B. C语言是一种低级语言C. C语言是一种面向对象的编程语言D. C语言是一种面向过程的编程语言答案:D2. 在C语言中,用于定义一个结构体类型的关键字是()。

A. structB. unionC. enumD. typedef答案:A3. 下列关于C语言中数组的描述,错误的是()。

A. 数组的索引从0开始B. 数组的索引从1开始C. 数组可以是一维的或多维的D. 数组的元素类型必须相同答案:B4. 在C语言中,用于定义一个函数的关键字是()。

A. structB. functionC. defineD. int答案:D5. 下列关于C语言中指针的描述,错误的是()。

A. 指针可以指向任何类型的变量B. 指针可以指向数组C. 指针可以指向函数D. 指针本身没有类型答案:D6. 在C语言中,用于实现文件操作的库函数是()。

A. math.hB. stdio.hC. string.hD. time.h答案:B7. 下列关于C语言中循环的描述,正确的是()。

A. for循环不能嵌套使用B. while循环不能与do-while循环嵌套使用C. do-while循环至少执行一次循环体D. 循环语句中不能使用break语句答案:C8. 下列关于C语言中条件语句的描述,错误的是()。

A. if语句可以单独使用B. switch语句可以用于多条件分支C. if语句中可以嵌套else ifD. switch语句中不能使用break语句答案:D9. 下列关于C语言中函数的描述,错误的是()。

A. 函数可以有返回值B. 函数可以没有返回值C. 函数可以有多个返回值D. 函数可以有多个参数答案:C10. 在C语言中,用于定义一个枚举类型的关键字是()。

A. enumB. structC. unionD. typedef答案:A二、填空题(每题2分,共20分)1. C语言中,标识符可以由字母、数字和下划线组成,但不能以()开头。

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

判断题1.函数若无返回值,则它一定无形参。

×2.在 C 程序中, 函数既可以嵌套定义, 也可以嵌套调用。

×3.C程序总是从main( ) 函数的第一条语句开始执行的。

√4.同一函数内可以有多个return语句。

√5.main函数中的变量名不可以与其它函数相同。

×6.C程序可由多个函数组成,但必须有并且只有一个主函数main。

√7.在C语言中的每个函数必须要有一个明确的return语句才能返回调用程序。

×8.主函数中定义的变量的作用域仅限于主函数内。

√9.传值调用的形参只有在被调用时,才被创建(分配存储单元)。

√10.C程序执行总是从第一个函数开始。

×11.一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。

×12.被main函数调用的函数只能是库函数。

×13.函数说明指的是在程序中设定一个函数模块。

×14.在C程序中,若对函数类型未加说明,则函数的隐含类型为void。

×15.形参可以是常量、变量或表达式。

×16.函数调用可以作为一个函数的形参。

×17.C语言规定,实参应与其对应的形参类型一致。

√18.定义函数时,形参的类型说明可以放在函数体内。

×19.一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据。

√20.全局变量可以被任何一个函数中的任何一个表达式使用。

×21.函数的隐含存储类型是extern。

√22.定义在main函数后的任何函数都需在main中进行函数声明。

×23.a是一维数组名,数组元素a[1]还可以写作―*(a++)‖。

×24.C语言中数组名是指针常量。

√25.构成数组的各个元素必须具有相同的类型。

√26.数组元素的下标可以选用正整数或正实数。

×27.数组名可以作为参数进行传递。

√28.若有定义―int a[4][5];‖,则在数组元素a[3][3]前有12个元素。

×29.若有定义int a[3][4];则共有12个元素,最后一个元素是a[3][4]。

×30.字符数组中字符串可以整体输入输出。

√31.若有定义语句―char s1[ ]="abc",s2[ ]={'a','b','c'};‖,则数组s1和数组s2均有3个元素。

×32.若a为一维数组名,则*(a+i)与a[i]等价。

√33.函数原型为―void sort(float a[],int n)‖,调用该函数时,形参数组a被创建,实参数组各元素的值被复制到a数组各元素中。

×34.C允许对数组的大小作动态定义,即可用变量定义数组的大小。

×35.数组定义int a[10]; 也可以写成int a(10); 。

×36.在对全部数组元素赋初值时,可以不指定数组长度。

√37.定义s为5×6(5行6列)的数组可写成float a[5,6]; ×38.数组定义int a[10]; 表示数组名为a,此数组有10个元素,第10个元素为a[10]。

×39.static char c[]={'a' ,' ','b','o','o','k','\0'};与static char c[]={'a' ,' ' ,'b','o','o','k'}; 等价。

×40.设已有说明:static char c1[10],c2[10]; 下面程序片段是合法的。

c1={―book‖}; c2=c1; ×41.调用函数时,实参为数组名,则向数组传递的是数组的首地址。

√42.puts()函数的作用是接收从键盘输入的字符串。

×43.两个字符串所包含的字符个数相同时,才能进行字符串的比较。

×44.若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维大小是3。

√45.在C语言中,数组下标从1开始。

×46.若有说明:int a[ ][4]={{0},{0}};则二维数组a的第一维大小为1。

×47.在C语言中,数组名是一个不可改变的地址常量,不能对它进行赋值运算。

√48.若有说明:int a[3][4]={0},则只有元素a[0][0]可得到初值0。

×49.字符串作为一维数组存放在内存中。

√50.若有形参定义:int a[10];则a++是合法的表达式。

×51.定义数组可以采取以下形式: int a[5]; a[1]=1;a[2]=3;a[3]=6;a[4]=7;a[5]=9; ×52.设char x[]=‖1234‖,y[]={‗1‘,‘2‘,‘3‘,‘4‘,‘\0‘};那么x数组的长度等于y数组的长度。

√53.‗a‘和―a‖在内存中所占字节相同。

×54.C语言的编译系统对宏命令的处理是在C源程序编译阶段完成的。

×55.预处理命令如:#include <stdio.h>不属于c语言的一部分。

×56.若有宏定义:#define M(x,y,z) x*y+z 则宏引用M(2+3,4+5,6+7)通过宏展开后的表达式应为(2+3)*(4+5)+(6+7)。

×57.C语言中的宏定义允许嵌套定义,也允许带参数。

√58.宏替换时先求出实参表达式的值,然后代入形参运算求值。

×59.使用带参数的宏时,参数的类型应与宏定义时的一致。

×60.若有宏定义:#define PI 3.14i5926,则系统预编译时会报错。

√61.已知宏定义#define SQ(x) x*x,执行语句printf(―10/SQ(3)=%d",10/SQ(3));后的输出结果是10/3*3=1。

×62.形参为指针变量时,实参必须是数组名。

×63.若有定义:int a[5],*p;,使p指向最后一个数组元素a[4]的语句是p=a+4;。

√64.已有定义:int a[5]={1,2,3,4,5},*s=a;,则表达式*(s+3)的值是3。

×65.若有定义:int a[5]={10,20,30,40,50},*p=a,*s=a+2;,表达式s-p的值是2。

√66.在int *p;和语句printf(―%d‖, *p);中的*p含义相同。

×67.设有说明int(*ptr)(int);,则ptr是一个函数名。

×68.位运算赋值有6个,但位运算组成复合的赋值运算符只有5个。

√69.说明:char s[]=―world‖,*p;,执行语句p=s后,*(p+5)的值是‘d‘。

×70.结构体类型中各成员项的数据类型可以不同。

√71.在程序中定义了一个结构体类型,将为此类型分配存储空间。

×72.在说明一个结构体变量时系统分配给它的存储空间是该结构体中所有成员所需存储空间的总和。

√73.若打开文件的方式为―w‖而该文件已经存在,则文件中原有数据被清空。

√74.若用fopen( )函数打开一个已存在的文本文件,保留该文件原有数据且可以读也可以写,则文件的打开模式是―r+‖。

√75.C文件使用前需要打开,使用后需要关闭。

√76.对文件进行操作的一般步骤包括:打开/建立要操作的文件;对文件进行读写等操作;关闭被操作的文件。

√77.若fp已正确定义并指向某文件,当未遇到该文件结束标志时函数feof(fp)的值为1。

×78.文件由二进制数据序列组成,C语言只能读写二进制文件。

×79.feof函数只能对二进制文件进行判定。

×80.利用fclose函数关闭已打开的文件。

√选择题1.下列叙述中,正确的叙述项是(B)。

A.定义函数时,必须要有形参B.函数中可以没有return语句,也可以有多条return语句C.函数f可以用f(f(x))形式调用,这种调用形式是递归调用D.函数必须有返回值2.下列叙述中,不正确的叙述项是(D)。

A.函数调用时,形参变量只有在被调用时才被创建(分配存储单元)B.函数调用时,实参可以是常量、变量或表达式C.定义变量时,省略对变量的存储类别定义,则变量是自动型变量D.语句return(a,b);则函数可以返回两个值3.传值调用的特点是(B)。

A.实参传给形参变量的数据是地址B.在函数中形参变量值改变后,不改变实参变量的值C.在函数中形参变量值改变后,实参变量的值随之也改变D.实参必须是变量4.如果在函数中定义一个变量,有关该变量作用域正确的是(A)。

A.只在该函数中有效B.在该文件中有效C.在本程序中有效D.为非法变量5.根据下面函数print的定义,选出调用函数print(5378)的值是(A)。

void print(long n){ if (n==0) return ;else{print(n/10);printf("% d", n%10);return ; }}A.5 3 7 8 B.8 7 3 5C.3 5 7 8 D.8 7 5 36.根据下面函数f,选出f(f(3))的值是(C)。

int f(int x){ static int k=0;x=x+k;k--;return x;}A.5 B.3 C.2 D.47.以下说法中正确的是(C)。

A.C程序总是从第一个函数开始执行B.C程序中,函数最多不能超过2个C.C程序总是从main()函数开始执行D.C程序的main()函数必须放在程序的最前面8.以下函数调用语句中实参的个数为(D)。

aver((v1,v2),(v3,v4,v5),v6);A.6 B.5 C.4 D.39.下列程序的输出结果是(D)。

fun(int a, int b, int c){ c =a*b; }main( ){ int c;fun(2,3,c);printf("%d\n",c);}A.0 B.1 C.6 D.无法确定10.执行下列程序后的输出结果是(A)。

#include <stdio.h>char f(char s[],int n){ return (s[n]); }main(){ char a[]="ABCD";printf("%c",f(a,2)+1);}A.D B.C C.B D.A11.对于以下递归函数f( ),调用f(4),其返回值为(A)。

相关文档
最新文档