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语言中,使用________运算符可以实现两个整数的按位与操作。
(完整word)C语言考试试题.
24.C语言中要求对变量作强制定义的主要理由是(B)
A.便于编辑预处理程序的处理B。便于确定类型和分配空间
C.便于移植D.便于写文件
25。以下数据中,不正确的数值或字符常量是(A)
25.若有定义:char s[]= ”turboC ";则Turbo C系统为数组s开辟【7】个字节的内存单元
二、判断共10题(共计20分)
1.inti,*p=&i;是正确的C说明(√)
2。若有说明intc;则while(c=getchar());是正确的C语句(√)
3。共同体变量所占的内存长度等于最长的成员长度(√)
23.当a=5,b=7,c=8时,执行以下程序段后c=【5】
if(a〈c) b=a;
a=c;
c=b;
24.已知a=5,写出表达式(0<a)‖(a〈2)的值是【1】
25。在TC2。0中,有以下结构类型说明和变量定义,则变量a在内存所占字节数是【22】
Strut stud
{char num[6];
int s [4];
4.charc[]=”Very Good”;是一个合法的为字符串数组赋值的语句(√)
5.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量(√)
6。整数—32100可以赋值给int型和longint型变量(√)
7.如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准(√)
for(i=0;i〈=2;i++)printf(“YES");printf(“\n”);
c语言关于函数的试题及答案
c语言关于函数的试题及答案1. 题目:以下哪个选项是正确的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. All of the above答案:D2. 题目:在C语言中,函数的返回值类型是什么?- A. void- B. int- C. float- D. char答案:A3. 题目:以下哪个选项是C语言中有效的函数声明?- A. int add(int a, int b);- B. int add(int, int);- C. int add(int a; int b);- D. int add(int a, int b) {}答案:A4. 题目:在C语言中,函数的参数默认传递方式是什么? - A. 值传递- B. 引用传递- C. 指针传递- D. 以上都不是答案:A5. 题目:以下哪个选项是C语言中正确的递归函数定义?- A. int fact(int n) { if (n == 0) return 1; else return n * fact(n - 1); }- B. int fact(int n) { if (n == 0) return 1; else return n * fact(n + 1); }- C. int fact(int n) { if (n == 1) return 1; else return n * fact(n - 1); }- D. All of the above答案:A6. 题目:在C语言中,如何定义一个接受任意数量参数的函数?- A. 使用不定参数列表- B. 使用数组作为参数- C. 使用指针作为参数- D. 使用结构体作为参数答案:A7. 题目:以下哪个选项是C语言中正确的函数指针声明?- A. int (*func)(int);- B. int *func(int);- C. int func(int)[];- D. int (*func)(int, int);答案:A8. 题目:在C语言中,如果函数返回一个结构体,那么函数的返回类型是什么?- A. struct- B. void- C. int- D. char答案:A9. 题目:以下哪个选项是C语言中正确的函数重载声明?- A. void add(int a, int b);- B. int add(int a, int b);- C. void add(int a, int b, int c);- D. All of the above答案:D10. 题目:在C语言中,如何定义一个接受可变数量参数的函数?- A. 使用不定参数列表- B. 使用数组作为参数- C. 使用指针作为参数- D. 使用结构体作为参数答案:A。
国家二级C语言机试(函数和数组)模拟试卷10
国家二级C语言机试(函数和数组)模拟试卷10(总分:54.00,做题时间:90分钟)一、选择题(总题数:27,分数:54.00)1.有以下程序#include<stdio.h>>main() {int a[]={10,20,30,40),*p=a,i;for(i=0;i<=3;i++){a[i]=*p;p++;} pfintf("%d\n",a[2]);}程序运行后的输出结果是(分数:2.00)A.20B.30 √C.10D.40解析:解析:因为指针变量p的初始值指向数组a,所以执行for循环语句后,数组a中的元素的值不变。
2.若有以下程序 main(){int i,j=0; char a[]="How are you!"; for(i=0;a[i];i++)if(a[i]!='')a[j++]=a[i]; a[j]='\0'; printf("%s\n",a);}则程序的输出结果是(分数:2.00)A.HowareyouB.Hay!C.Howareyou! √D.How are you!解析:解析:主函数中利用for循环访问字符串的每一个字符,判断当前字符是否为空格,如果是空格则删除。
因此删除字符串”How are you!”中空格以后,字符串为How are you!。
3.若有以下程序#include<stdio.h>main(){int i,j=0;char a[]="How are you!",b[10];for(i=0;a[i];i++) if(a[i]=='')b[j++]=a[i+1]; b[j]='\0'; printf("%s\n",b);}则程序的输出结果是(分数:2.00)A.HowareyouB.Hay!C.Howareyou!D.ay √解析:解析:主函数中利用for循环访问字符串a的每一个字符,判断当前字符是否为空格,如果是空格则保存该空格后面的一个字符存放到字符数组b中。
c语言中函数试题及答案
c语言中函数试题及答案一、选择题1. 在C语言中,以下哪个关键字用于定义函数?A. classB. functionC. defD. int答案:D2. 函数的返回类型是什么?A. 函数执行后返回的数据类型B. 函数的名称C. 函数的参数D. 函数的调用方式答案:A3. 在C语言中,以下哪个函数用于计算两个整数的和?A. strcatB. strcmpC. strcatD. sum答案:D(假设sum是一个自定义的函数)二、填空题1. 在C语言中,定义函数的关键字是________。
答案:int2. 函数的返回值是通过________关键字返回的。
答案:return3. 函数的参数列表定义了函数调用时需要传递的________。
答案:值三、简答题1. 请简述C语言中函数的定义格式。
答案:在C语言中,函数的定义格式通常如下:```returnType functionName(parameterList) {// function body}```其中`returnType`是函数的返回类型,`functionName`是函数的名称,`parameterList`是函数的参数列表,`function body`是函数的执行体。
2. 请解释C语言中函数的调用过程。
答案:C语言中函数的调用过程包括以下步骤:- 调用者准备参数并调用函数。
- 函数接收参数并执行函数体。
- 函数计算结果并通过return语句返回。
- 调用者接收返回值并继续执行。
四、编程题1. 编写一个C语言函数,计算两个整数的和并返回结果。
答案:```cint sum(int a, int b) {return a + b;}```调用示例:```cint result = sum(5, 10);printf("The sum is %d", result); ```。
C语言数组百道练习题含答案
6.5 以下能对一维数组 a 进行正确初始化的语句是 B 。????? A)int a[10]=(0,0,0); B)int a[10]={}; C)int a[]={0}; D)int a[10]={10*1}; 6.6 以下对二维数组 a 的正确说明是 C 。 A)int a[3][]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); 6.7 若有说明:int a[3][4];则对 a 数组元素的正确引用是 C 。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) 6.8 若有说明:int a[3][4];则对 a 数组元素的非法引用是 D 。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 6.9 以下能对二维数组 a 进行正确初始化的语句是 B 。 A)int a[2][]={{1,0,1},{5,2,3}}; B)int a[][3]={{1,2,3},{4,5,6}}; C)int a[2][4]={{1,2,3},{4,5},{6}}; D)int a[][3]={{1,0,1}{},{1,1}}; 6.10 以下不能对二维数组 a 进行正确初始化的说明是 C 。 A)int a[2][3]={0}; B)int a[][3]={{1,2},{0}}; C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[][3]={1,2,3,4,5,6}; 6.11 若有说明:int a[3][4]={0};则下面正确的叙述是 D 。 A)只有元素 a[0][0]可以得到初值 0 B)此说明语句不正确 C)数组中各元素都可以得到初值,但其值不一定为 0 D)数组中每个元素均可得到初值 0 6.12 若有说明:int a[][4]={0,0};则下面不正确的叙述是 A)数组 a 的每个元素都可得到初值 0 B)二维数组 a 的第一维大小为 1 C)因为二维数组 a 中第二维大小的值除初值个数的商为 0,故数组 a 的行数为 1 D)只有元素 a[0][0]和 a[0][1]可得到初值 0,其余元素均得不到初值 0 6.13 若有说明:static int a[3][4];则数组中各元素 A)可在程序的运行阶段得到初值 0 B)可在程序的编译阶段得到初值 0 B 。 D 。
C语言练习3(数组)=参考解答
C语言(数组)一、选择题1. 设有程序:main(){ int i,a[11];printf("给数组赋值:\n");for (i=0;i<=10;i++)scanf("%d",( ));... ...printf("输出数组:\n");for(i=0;i<=10;i++)printf("%d,",( ));}则在程序中的两个园括号中分别应填入:CA) &a[i]和&a[i]B) a[i]和&a[i]C) &a[i]和a[i]D) a[i]和a[i]2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ).A) 15 B) 16 C) 30 D) 323. 阅读程序:main(){ int a[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) a[j]=a[i]+1;printf("%d\n",a[k]);}以上程序的输出结果是( D ).A) 1 B) 3 C) 2 D) 不确定的值4. 阅读程序:f(int b[],int n){ int i,r=1;for(i=0;i<=n;i++) r=r*b[i];return r;}main(){ int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}以上程序的输出结果是( D ).A) 720 B) 6 C)24 D) 1205. 以下定义语句中,错误的是( B ).A) int a[ ] = {6,7,8};B) int n=5, a[n];C) char a[ ]= "string";D) char a[5 ]={'0','1','2','3','4'};6. 以下描述中正确的是( D ).A) 数组名后面的常量表达式用一对圆括弧括起来B) 数组下标从1开始C) 数组下标的数据类型可以是整型或实型D) 数组名的规定与变量名相同7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ).A) scanf("%c",a[0]);B) scanf("%s",&a);C) printf("%c",a[3]);D) printf("%s",a);8.若定义数组int a[10] ,其最后一个数组元素为( C ).A) a[0]C) a[9]D) a[10]9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )?A) a[8] 的值为0B) a[1] 的值为1C) a[3] 的值为4D) a[9] 的值为010. 指出以下错误语句( A ).A) int n=10,a[n];B) int n,a[10];C) int a[10]={1,2,3};D) int a[10]={1,2,3,4,5,6,7,8,9,10};11. 请读程序:main(){int n[2],i,j,k;for(i=0;i<2;i++) n[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) n[j]=n[i]+1;printf("%d\n",n[k]);}上面程序的输出结果是( A ).A)不确定的值 B)3 C)2 D)112. 若有以下的定义和语句:int str[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='e',则数值为2的表达式是( C ).A)str['g'-c] B)str[2] C)str['d'-'c'] D)str['d'-c]13. 设有数组定义:int a[5];则下列给数组元素赋值错误的是( B ).B) scanf("%c",a[3]);C) a[3]=getchar();D) a[3]='a'+3;14. 以下数组定义中错误的是( D ).A) #define N 30int a[N+30];B) #define N 30int a[N];C) int a[30];D) int a[N];15. 在定义一个一维数组时,不能用来表示数组长度的是( D ).A)常量 B)符号常量 C)常量表达式 D) 已被赋值的变量16. 若float型变量占用4个字节,有定义float a[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是( D ).A)12 B)20 C)40 D)8017. 设已定义:int x[2][4]={1,2,3,4,5,6,7,8}; 则元素x[1][1]的正确初值是( A ).A) 6 B) 5 C) 7 D) 118. 设有定义:int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; 则a[1][2]的初值为( C ).A) 2 B) 4 C) 6 D) 819. 设有:int a[4][5]; 则数组a占用的内存字节数是( C ).A) 12 B) 24 C) 40 D) 2020. 以下数组定义中,不正确的是( B ).A) int b[3][4];B) int c[3][ ]={{1,2},{1,2,3},{4,5,6,7}};C) int b[200][100]={0};D) int c[ ][3]={{1,2,3},{4,5,6}};21. 定义数组:int x[2][3]; 则数组x 的维数是( 2 ).A) 1 B) 2 C) 3 D) 622. 若定义数组并初始化int b[2][3]= { 1,2,3,4,5,6},以下语句哪一个成立( C )?A) 表达式b[1][2]的值为1B) 表达式b[1][2]的值为4C) 表达式b[1][2]的值为6D) 表达式b[1][2]的值为223. 若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}};for(i=0;i<2;i++)for(j=0;j<3;j++)printf("%d",a[i][j]);语句的结果是哪一个( C )?A) 1,2,3,4,5,6B) 1 2 3 4 5 6C) 12345624. 若定义数组并初始化int a[2][3]= {{1,2, 3},{4,5,6}};以下语句哪一个不成立( B )?A) a数组中有6个元素B) a[2][3]是a数组的最后一个元素的引用C) a数组中每个元素都为整数D) a数组是整型数组25. 定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( C ).for(i=0;i<3;i++) printf("%d",x[i][2-i]);A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 926. 如有以下定义:double s[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是( C ).A) s[1][3] B) s[0][3] C) s[0][2] D) s[1][2]27. 以下程序的输出结果是( A ).main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d",s);}A) 18 B) 19 C) 20 D) 2128. 若已有char b[10][50];则该二维字符数组在内存所占字节数为( D ).A) 10 B)50 C)60 D)50029. 设有:char a[10]; 下列语句那个是正确的( D )?A) scanf("%s",a[0]);B) scanf("%s",&a);C) printf("%s",a[0])D) printf("%s",a)30. 阅读程序:main(){ char a[10];int i;for(i=1;i<=5;i++)scanf("%c",&a[i]);printf("%c",a[0]);}设从键盘输入字符串:abcde,则程序的输出结果是( C ).A) a B)空格 C)不确定D)031. 合法的数组定义是( D ).A) int a[ ] = "string";B) int a[5]={0,1,2,3,4,5};C) char a= "string";D) char a[ ]={'0','1','2','3'};32. 设有数组定义:char string[ ]="China";则数组string所占的空间为( B ).A) 5个字节B) 6个字节C) 7个字节D) 10个字节33. 定义字符数组c:char c[ ]={"c language"};数组c在内存中所占字节数是( C ).A) 9 B) 10 C) 11 D) 1234. 指出以下错误语句( C ).A) char a[10]={'0','1','2','3','4','5','6','7','8','9'};B) char a[10]={'0','1 ','2','3'};C) char a[2]= {"1","2"};D) char a[2]= {'a’,'b’};35. 若定义数组并初始化char a[10]={"hello"},该数组的元素个数是( A ).A) 10B) 5C) 6D) 736. 若定义数组并初始化char a[10]={"HELLO"},该数组的元素中 a[2]是( A ).A) 'L'B) 'E'C) 'H'D) 'O'37. 若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立( A C D)?A)b[8]的值为0B)b[1]的值为1C)b[3]的值为整数D)b[10]不是b数组中的元素38. 若定义数组int a[10];指出下列错误语句:ABCDA) a数组共有10个元素,其引用方法是:a[1],a[2]...a[10];B) a数组是整型数组,其元素自动初始化为0;C) a数组最后一个元素的引用方法是a[10];D) a数组第一个元素的引用方法是a[1];二、判断题1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。
C语言函数与数组练习题及参考程序
1、设计一个判断素数的函数,在主函数中调用它,把一个整型数组a中的所有素数找出来,存放在数组b中(两数组长度均为整型常量N,数组a的各元素从键盘输入)。
#include<stdio.h>#include<math.h>#define N 10int main(){int prime(int);//函数声明int i, j=0, a[N], b[N] ;printf("data: ");for(i=0;i<N;i++)scanf("%d", &a[i]);//输入数组元素for(i=0; i<N; i++)if( prime(a[i]) )//如果为素数b[j++]=a[i];for(i=0; i<j; i++)printf("%d ", b[i]);return 0;}int prime(int k) //非素数则返回0,素数则返回1{if(k==1)return 0;int sk,i;sk=(int)sqrt(k);for(i=2;i<=sk;i++)if(k%i==0)return 0;return 1;}2、用一维数组做参数,编写一个求一维整形数组平均值的函数。
在主函数中调用这个函数求一个整形数组的平均值。
(数组长度N定义为整型常量)#include<stdio.h>#define N 5int main(){float average(int [] ,int);//函数声明int i, a[N] ;printf("data: ");for(i=0; i<N; i++)scanf("%d", &a[i]);printf("average=%f", average(a, N));return 0;}float average(int b[], int n )//形参n表示数组长度{int i;float sum=0.0 ;for(i=0; i<n; i++)sum=sum+b[i];return sum/n;}3、输入一个字符串,将其中的数字字符按输入顺序存储到digital数组中,然后输出该数组中的数字字符串。
c语言数组笔试错题
c语言数组笔试错题在学习C语言的过程中,我们经常会进行一些笔试来检验自己的掌握程度。
然而,有时候我们会在一些看似简单的题目上犯下错误。
下面就让我们来看看一些常见的C语言数组笔试错题。
1. 下面的代码段中,数组arr的长度是多少?```cint arr[] = {1, 2, 3, 4, 5};```A. 1B. 2C. 3D. 5正确答案:D. 5解析:在这个代码段中,我们使用了初始化列表来初始化数组arr。
初始化列表中有5个元素,因此数组arr的长度为5。
2. 下面的代码段中,数组arr的第一个元素的索引是多少?```cint arr[] = {1, 2, 3, 4, 5};```B. 1C. 2D. 3正确答案:A. 0解析:在C语言中,数组的索引是从0开始的。
因此,数组arr的第一个元素的索引是0。
3. 下面的代码段中,数组arr的最后一个元素的索引是多少?```cint arr[] = {1, 2, 3, 4, 5};```A. 3B. 4C. 5D. 6正确答案:B. 4解析:数组arr有5个元素,索引从0到4。
因此,数组arr的最后一个元素的索引是4。
4. 下面的代码段中,数组arr的长度是多少?int arr[10];```A. 0B. 5C. 10D. 11正确答案:C. 10解析:在这个代码段中,我们声明了一个长度为10的整型数组arr。
因此,数组arr的长度是10。
5. 下面的代码段中,数组arr的第一个元素的值是多少?```cint arr[5];```A. 0B. 1C. 未定义D. 随机值正确答案:C. 未定义解析:在这个代码段中,我们声明了一个长度为5的整型数组arr。
由于我们没有对数组进行初始化,因此数组arr的元素值是未定义的。
通过对这些常见的C语言数组笔试错题的解析,我们可以更好地理解和掌握C语言中数组的相关知识。
在以后的学习中,我们应该注意这些细节,避免在笔试中犯下类似的错误。
c语言考试试题
c语言考试试题一、选择题1. C语言中,用于表示整数常量的是()。
A. 123.45B. 0x1A3C. 0177D. 1e62. 下列哪个关键字用于定义一个循环,该循环会一直执行直到给定条件不满足为止?()。
A. doB. whileC. forD. if3. 在C语言中,用于动态分配内存空间的函数是()。
A. mallocB. freeC. callocD. realloc4. 下列关于指针的说法,错误的是()。
A. 指针是一种特殊类型的变量,其值为另一个变量的地址。
B. 指针可以被解引用来获取其所指向的内存中存储的值。
C. 指针的算术运算是合法的。
D. 指针不能被赋值为非整数值。
5. 在C语言中,用于字符串连接的函数是()。
A. strcatB. strcmpC. strcpyD. strlen二、填空题1. 在C语言中,一个基本的整型变量(int)通常占用的内存大小是______字节。
2. 如果一个函数需要返回两个值,它必须返回一个______类型的结构体。
3. 在C语言中,使用关键字______可以定义一个不占用存储空间的临时变量。
4. 为了在C语言程序中引入标准输入输出库函数,需要在程序顶部包含的头文件是______。
5. 一个C语言程序由______组成,它是程序执行的起点。
三、判断题1. 在C语言中,所有的函数都必须有一个返回类型。
()2. 任何在main函数中定义的局部变量都可以在main函数之外被访问。
()3. 在C语言中,数组的大小可以在运行时确定。
()4. 字符串在C语言中是一个以空字符'\0'结尾的字符数组。
()5. 通过使用const关键字,可以声明一个只读的变量。
()四、简答题1. 请简述C语言中的指针和数组的关系。
2. 解释C语言中的结构体,并给出一个使用结构体的例子。
3. 什么是递归函数?请举例说明。
4. 描述动态内存分配的过程,并说明其优缺点。
c语言考试题及答案
c语言考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言具有跨平台的特性答案:B2. C语言中,用于定义一个整型变量的关键字是:A. intB. floatC. doubleD. char答案:A3. 在C语言中,以下哪个运算符用于取模运算?A. %B. /C. *D. -答案:A4. 下列关于数组的描述中,正确的是:A. 数组必须在程序开始时初始化B. 数组的元素可以是不同的数据类型C. 数组的索引从1开始D. 数组的声明必须指定数组的大小答案:D5. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. voidC. functionD. define答案:B6. C语言中,用于表示逻辑“与”操作的运算符是:A. &&B. ||C. !D. &答案:A7. 下列哪个选项是C语言中合法的注释?A. // 这是一个注释B. /* 这是一个注释 */C. // 这是一个注释/* 这是一个注释 */D. /* 这是一个注释 */答案:A8. C语言中,用于定义一个空指针的值是:A. NULLB. 0C. falseD. none答案:A9. 下列关于指针的描述中,错误的是:A. 指针可以存储变量的地址B. 指针可以存储函数的地址C. 指针可以存储数组的索引D. 指针可以存储指针的地址答案:C10. 在C语言中,用于定义一个字符型指针的声明是:A. char *ptr;B. int *ptr;C. float *ptr;D. double *ptr;答案:A二、填空题(每题2分,共20分)1. 在C语言中,定义一个整型数组的语法是:______ int array[10];。
答案:int2. 如果一个变量的值是10,那么表达式sizeof(&var)的结果是:______。
数组c语言试题库及答案
数组c语言试题库及答案1. 请解释C语言中数组的概念。
答:在C语言中,数组是一种数据结构,它允许将多个相同类型的数据项存储在连续的内存位置。
数组可以是一维的,也可以是多维的。
2. 如何声明一个整型数组?答:声明一个整型数组的语法是 `int array_name[size];`,其中`array_name` 是数组的名字,`size` 是数组中元素的数量。
3. 请写出一个程序,用于计算一个整型数组中所有元素的和。
```c#include <stdio.h>int main() {int array[] = {1, 2, 3, 4, 5};int sum = 0;for(int i = 0; i < 5; i++) {sum += array[i];}printf("Sum of array elements: %d\n", sum);return 0;}```4. 如果一个数组的元素数量是动态的,应该如何声明?答:在C语言中,可以使用指针来处理动态数组。
声明方式为`int *array_name;`,然后在程序中使用 `malloc` 或 `calloc` 函数分配内存。
5. 请解释数组的索引。
答:数组的索引是从0开始的,它表示数组中元素的位置。
例如,对于一个名为 `array` 的数组,`array[0]` 是数组的第一个元素。
6. 如何初始化一个整型数组?答:可以使用花括号 `{}` 来初始化数组,例如 `int array[] = {1, 2, 3, 4, 5};`。
7. 请写出一个程序,用于交换数组中的两个元素。
```c#include <stdio.h>int main() {int array[] = {1, 2, 3, 4, 5};int temp;int index1 = 1; // 第二个元素int index2 = 3; // 第四个元素temp = array[index1];array[index1] = array[index2];array[index2] = temp;for(int i = 0; i < 5; i++) {printf("%d ", array[i]);}return 0;}```8. 在C语言中,数组的元素可以是什么数据类型?答:数组的元素可以是任何数据类型,包括整型、浮点型、字符型、结构体等。
c语言程序考试试题
c语言程序考试试题一、单项选择题(每题2分,共20分)1. 在C语言中,用于定义一个结构体的关键字是()。
A. varB. typeC. structD. def2. 下列哪个选项不是C语言标准输入输出库函数()。
A. printf()B. scanf()C. getchar()D. readline()3. 在C语言中,一个整型变量在内存中占用的字节数是()。
A. 1B. 2C. 4D. 84. C语言中,用于计算两个浮点数的差的运算符是()。
A. +B. -C. *D. /5. 下列哪个选项是正确的C语言数组初始化方式()。
A. int arr = {1, 2, 3};B. int arr[] = {1, 2, 3};C. int arr[3] = {1, 2, 3};D. int arr[3] = 1, 2, 3;6. C语言中,用于执行条件判断的语句是()。
A. ifB. switchC. caseD. for7. 在C语言中,表示“逻辑与”的运算符是()。
A. &&B. ||C. !D. ++8. 下列哪个选项不是C语言中预定义的库函数()。
A. pow()B. sqrt()C. sin()D. max()9. 在C语言中,用于表示字符的字面量是()。
A. ''B. ""C. <>D. []10. C语言中,用于实现无限循环的语句是()。
A. whileB. do-whileC. forD. switch二、填空题(每空3分,共30分)11. 在C语言中,一个浮点型变量定义为 `float x;`,其默认的初始值是________。
12. 函数 `void func(int a, int b)` 中的参数 `a` 和 `b` 被称为________参数。
13. C语言中,字符串常量存储在内存的________区域。
14. 表达式 `(int)2.99` 的值是________。
C语言数组与函数考试试题.doc
2014年上期职二对口C语言程序设计第一次月考试题(适用班级1219. 1220)班级:___________ 姓名:__________ 总分:___________一、选择题(15*2二30分)1、在定义“int a[5][6];”后,第11个元素是 ________ 。
A、a[2][5]B、a[2] [4]C、a[l][4]D、a[l][5]2、假定int类型变量占用两个字节,其定义:int x[10] = {0, 2,4};,则数组x在内存中所占字节数是_______ 。
A、3B、 6C、10D、203、当接受用输入的含空格的字符串地,应使用的函数是________ oA、seanf()B、gets ()C、getchar ()D、getc ()4、设有数组定义:char array□二” China” ;。
则数组array所占的空间为_______ 。
A、4个字节B、5个字节C、6个字节D、7个字节5、设有变量定义:int a []二{1,2, 3, 4};执行语句a[3] = - - a[0]? a[l] ++ : a[2] ++;执行后,数组的元素a[0], a[l], a⑵,a[3]的值依次为_______A、1,2, 3, 4B、0,3, 3, 4C、0,2, 3, 4D、0, 2, 4, 36、以下程序的输出结果是_______voi d main() {int i, x[3][3]二{ 1,2, 3, 4, 5, 6, 7, 8, 9}for(i= 0;i < 3; i + +) printf(〃3%d〃,x[i][2 - i]); }A、1 5 9B、1 4 7C、3 5 7D、3 6 97、不能把字符串:Hello!赋给数组b的语句是__________A、char b [10]二{'屮G T T G ,!' };B、char b [10] ; b 二“Hello!” ;C^ char b [10] ; strepy(b, "Hello!");D、char b [10]二“Hello!” ;8、在函数间传递数据的四种方式中,不能把被调函数的数据带回到主调函数的是_________A、值传递B、地址传递C、返回值传递D、全局外部变量9、以下关于函数的叙述中不正确的是________A、C程序是函数的集合,包括标准库函数和用户自定义函数B、在C语言程序屮,被调用的函数必须在呃in函数屮定义C、在C语言程序中,函数的定义不能嵌套D、在C语言程序中,函数的调用可以嵌套10、______________________________________________________ 若用数组名作为函数调用的实参,则传递给形参的是______________________________________A、数组的首地址B、数组的第一个元素的值C、数组中全部元素的值D、数组元素的个数11、__________________________________________________________ C语言中,凡未指定存储类别的局部变量的隐含存储类别是__________________________________A、autoB、staticC、externD、register12、若有以下函数调用语句:fun(a+b, (x, y), fun(n+k, d, (a, b)));在此函数调用语句中实参的个数是___________A、3B、4C、5D、613、若程序中定义函数float myadd(float a, float b) { return a+b;}并将其放在调用之后,则在调用之前应对该函数进行说明。
国家二级C语言机试(函数和数组)模拟试卷16
国家二级C语言机试(函数和数组)模拟试卷16(总分:58.00,做题时间:90分钟)一、选择题(总题数:29,分数:58.00)1.以下语句中存在语法错误的是(分数:2.00)A.char ss[][20]={"right?"};√B.char*ss[6];ss[1]="right?";C.char*ss[]={"right?"};D.char ss[6][20];ss[1]="right?";解析:解析:选项A中定义了二维数组ss,可以用于存储字符串,但是字符串的存储不能通过赋值,仅可以初始化或者输入得到,而选项C和A)不同,选项C为指针数组,对于指针变量可以保存常量字符串的地址。
2.下面是有关C语言字符数组的描述,其中错误的是(分数:2.00)A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串√解析:解析:本题考查字符数组。
选项A、B)和C)都是正确的,字符数组存放其他数据。
3.以下选项中有语法错误的是(分数:2.00)A.char str[3][10];str[1]="guest";√B.char str[][10]={"guest"};C.char*str[3];str[1]="guest";D.char*str[]={"guest"};解析:解析:本题考查字符数组的定义和使用。
选项A定义了一个二维字符数组,第二句是直接给字符数组赋值错误,C语言中不能直接给字符数组赋值;选项B、C)和D)都是正确的。
4.下列叙述中正确的是(分数:2.00)A.两个连续的单引号(")是合法的字符常量B.可以对字符串进行关系运算C.两个连续的双引号("")是合法的字符串常量√D.空字符串不占用内存,其内存空间大小是0解析:解析:两个连续的双引号:"",是一个字符串常量,称为“空串”。
2021年C语言考试数组知识习题库及答案(精品)
2021年C语言考试数组知识习题库及答案(精品)1. 单项选择题(1) int a[4]={5,3,8,9};其中a[3]的值为( )。
DA. 5B. 3C. 8D. 9(2) 以下4 个字符串函数中,( )所在的头文件与其他3 个不同。
AA. getsB. strcpyC. strlenD. strcmp(3) 以下4 个数组定义中,( )是错误的。
DA. int a[7];B. #define N 5 long b[N];C. char c[5];D. int n,d[n];(4) 对字符数组进行初始化,( )形式是错误。
BA. char c1[ ]={'1', '2', '3'};B. char c2[ ]=123;C. charc3[ ]={ '1', '2', '3', '\0'}; D. char c4[ ]="123";(5) 在数组中,数组名表示( )。
AA. 数组第1 个元素的首地址B.数组第2 个元素的首地址C. 数组所有元素的首地址D.数组最后1 个元素的首地址(6) 若有以下数组说明,则数值最小的和最大的元素下标分别是( )。
Bint a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};A. 1,12B. 0,11C. 1,11D. 0,12(7) 若有以下说明,则数值为4 的表达式是( )。
Dint a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d, g ;A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c](8) 设有定义:char s[12] = "string" ; 则printf( "%d\n",strlen(s)); 的输出是( )。
c语言期末考试试题及答案
c语言期末考试试题及答案一、选择题1. C语言中,用于表示整数常量的数据类型是()。
A. floatB. doubleC. intD. char答案:C2. 若有定义:int a = 5; float b =3.14; 则下列表达式中错误的是()。
A. a + bB. a * bC. a / bD. b % a答案:D3. C语言中,用于输入的函数是()。
A. printf()B. scanf()C. puts()D. gets()答案:B4. 下列关于数组的说法,正确的是()。
A. 数组大小是动态的,可以在运行时改变B. 数组一旦定义,其大小不可改变C. 数组可以存储不同类型的数据D. 数组的索引必须从0开始答案:B5. 在C语言中,一个合法的指针变量是()。
A. int *pB. *int pC. float *pD. p int答案:A二、填空题1. 在C语言中,使用关键字________定义一个全局变量。
答案:extern2. 若有定义:int x = 10; 则表达式 `x + (x++) * 2` 的值是________。
答案:303. 在C语言中,使用________可以将字符串常量输出到控制台。
答案:printf4. 一个整型变量可以存储的最大值(假设为int max)与最小值(假设为int min)的范围是________ < int max < int min。
答案:-32768, 32767(假设是16位整型)5. 函数________用于计算一个字符串的长度。
答案:strlen三、判断题1. C语言中的注释可以使用“//”或“/* */”两种形式。
()答案:正确2. 在C语言中,所有的函数都有返回值。
()答案:错误3. 指针变量的地址可以通过使用&运算符获得。
()答案:正确4. 在C语言中,long int和int类型的大小是相同的。
()答案:错误5. 使用switch语句时,case标签后的值必须是整型或字符型。
C语言(数组与函数)习题与答案
1、有以下程序main(){int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2) j+=p[i];printf("%d\n",j);}程序运行后的输出结果是()。
A.42B.56C.60D.45正确答案:D2、以下叙述中错误的是()。
A.数组名代表的是数组所占存储区的首地址,其值不可改变B.只有double类型数组,不可以直接用数组名对数组进行整体输入或输出C.可以通过赋初值的方式确定数组元素的个数D.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息正确答案:B3、以下能正确定义一维数组的选项是()。
A.int a[5]={0,1,2,3,4,5};B.int a[5]="0123";C.char a[]={0,1,2,3,4,5};D.char a={'A','B','C'};正确答案:C解析: D、不加[ ],a只能被看作是一个字符变量,只能接收一个字符4、有以下程序main(){ char p[ ]={‘a’,’b’,’c’},q[ ] =”abc”;printf("%d %d\n",sizeof(p),sizeof(q));};程序运行后的输出结果是()。
A.4 4B.3 3C.3 4D.4 3正确答案:C解析: C、p[] 只能认作字符数组,不会有字符串的结束标志,所以只有3个字符q[] 是字符串,末尾还会有字符串的结束标志,所以有4个字符5、以下程序运行后的输出结果是()。
main(){ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i+1;j<3;j++) a[j][i]=0;for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%d ", a[i][j]);printf("\n");}}A.1 2 30 5 60 0 9B.1 2 30 0 00 0 9C.0 0 00 0 00 0 0D.1 2 04 0 60 8 9正确答案:A6、若有定义语句:int m[ ]={5,4,3,2,1},i=4; ,则下面对m 数组元素的引用中错误的是()。
国家二级C语言机试(函数和数组)模拟试卷20
国家二级C语言机试(函数和数组)模拟试卷20(总分:58.00,做题时间:90分钟)一、选择题(总题数:29,分数:58.00)1.以下选项中叙述错误的是(分数:2.00)A.在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内B.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值√C.C程序函数中定义的自动变量,系统不自动赋确定的初值D.C程序函数的形参不可以说明为static型变量解析:解析:在函数定义的静态变量,只需要赋值1次,即可保存初始值,不需要每次调用时都赋初始值。
2.有以下程序 int flint x); main(){int n=1,m; m=f(f(f(n))); printf("%\n",m);} int f(int x) {return x*2;} 程序运行后的输出结果是(分数:2.00)A.1B.2C.4D.8 √解析:解析:程序考查了函数的调用。
对于m=f(f(f(n))));首先计算最内层的函数调用f(n),执行f函数,得到返回值2,然后计算f(2),得到返回值为4,最后计算f(4),得到计算结果为8。
3.有以下程序#include<stdio.h>int fun(int x,int y) main() { if(x==y)return(x);{ int a=4,b=5,c=6; else return((x+y)/2);printf("%d\n",fun(2*a,fun(b,c)));} } 程序运行后的输出结果是(分数:2.00)A.3B.6 √C.8D.12解析:解析:fun(b,c)即fun(5,6),5!=6,所以返回(5+6)/2=5;fun(2*a,5)即fun(8,5),8!=5,所以返回(8+5)/2=6。
4.有以下程序 #include main() int flint x,int y) { int a=3,b=4,c=5,d; {return((y-x)*x);) d=f(f(a,b),f(a,c)); printf("%d\n",d); } 程序运行后的输出结果是(分数:2.00)A.10B.8C.9 √D.7解析:解析:本题考查函数的嵌套调用。
c语言数组考试题及答案
c语言数组考试题及答案一、选择题1. 在C语言中,数组的下标从哪个数字开始?A. 0B. 1C. 2D. 3答案:A2. 下列哪个选项是正确的数组声明?A. int arr[] = {1, 2, 3};B. int arr[5] = {1, 2, 3};C. int arr[5] = {1, 2};D. int arr[] = {1, 2, 3, 4, 5};答案:B3. 若有数组声明 int arr[5] = {1, 2, 3, 4, 5}; 则arr[2]的值是多少?A. 1B. 2C. 3D. 4答案:C二、填空题1. 假设有一个数组声明为 int arr[10] = {0}; 则arr[0]的值是______。
答案:02. 如果声明了一个数组 int arr[5] = {1, 2, 3, 4, 5}; 那么arr 数组的元素个数是______。
答案:5三、简答题1. 请简述C语言中数组的初始化方式有哪些?答案:C语言中数组的初始化方式包括:- 静态初始化:在声明数组时直接指定数组的元素值。
- 动态初始化:在声明数组后,通过循环或逐个赋值的方式初始化数组。
2. 在C语言中,如何访问数组的最后一个元素?答案:可以通过数组的长度减去1来访问数组的最后一个元素,例如对于数组arr,访问最后一个元素的方式是arr[arr.length - 1]。
四、编程题1. 编写一个C语言程序,实现将一个整数数组按照从大到小的顺序排序。
答案:```c#include <stdio.h>void sortDescending(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] < arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}int main() {int arr[] = {4, 2, 3, 1, 5};int n = sizeof(arr) / sizeof(arr[0]);sortDescending(arr, n);for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}```该程序首先定义了一个排序函数sortDescending,它使用冒泡排序算法将数组从大到小排序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014年上期职二对口C语言程序设计第一次月考试题(适用班级1219、1220)班级:姓名:总分:一、选择题(15*2=30分)1、在定义“int a[5][6];”后,第11个元素是。
A、a[2][5]B、a[2][4]C、a[1][4]D、a[1][5]2、假定int类型变量占用两个字节,其定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是。
A、3B、6C、10D、203、当接受用输入的含空格的字符串地,应使用的函数是。
A、scanf()B、gets()C、getchar()D、getc()4、设有数组定义:char array[]=”China”;。
则数组array所占的空间为。
A、4个字节B、5个字节C、6个字节D、7个字节5、设有变量定义:int a [ ] = {1,2,3,4};执行语句a[3] = - - a[0]? a[1] + + : a[2] + +;执行后,数组的元素a[0], a[1], a[2], a[3]的值依次为A、 1,2,3,4B、 0,3,3,4C、 0,2,3,4D、0,2,4,36、以下程序的输出结果是void main( ){int i, x[3][3] = { 1,2,3,4,5,6,7,8,9}for(i= 0;i < 3; i + +) printf("3%d", x[i][2 - i]); }A、 1 5 9B、 1 4 7C、3 5 7D、 3 6 97、不能把字符串:Hello!赋给数组b的语句是A、 char b [10] = {‘H’‘e’‘l’‘l’‘o’‘!’};B、char b [10] ; b = “Hello!”;C、 char b [10] ; strcpy(b, “Hello!”);D、char b [10] = “Hello!”;8、在函数间传递数据的四种方式中,不能把被调函数的数据带回到主调函数的是A、值传递B、地址传递C、返回值传递D、全局外部变量9、以下关于函数的叙述中不正确的是A、C程序是函数的集合,包括标准库函数和用户自定义函数B、在C语言程序中,被调用的函数必须在main函数中定义C、在C语言程序中,函数的定义不能嵌套D、在C语言程序中,函数的调用可以嵌套10、若用数组名作为函数调用的实参,则传递给形参的是A、数组的首地址B、数组的第一个元素的值C、数组中全部元素的值D、数组元素的个数11、C语言中,凡未指定存储类别的局部变量的隐含存储类别是A、autoB、staticC、externD、register12、若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是A、3B、4C、5D、613、若程序中定义函数float myadd(float a, float b) { return a+b;}并将其放在调用之后,则在调用之前应对该函数进行说明。
以下说明中错误的是A、float myadd( float a,b);B、float myadd(float b, float a);C、float myadd(float, float);D、float myadd(float a, float b);14、以下函数值的类型是fun (float x) { float y; y= 3*x-4; return y;}A、 intB、不确定C、 voidD、 float15、#include<stdio.h>f(in b[], int n){ int i, r;r=1;for(i=0; i<=n; i++) r=r*b[i]; return r; }main(){ int x, a[]={ 2,3,4,5,6,7,8,9}; x=f(a, 3); printf("%d\n",x); }上面程序的输出结果是()。
A、 720B、 120C、24D、 6二、读程序写结果(8*5=40分)1、void main ( ){ char str[ ]=”SSWLIA”,c; int k;for (k=1;(c=str[k])!=’\0’;k++){switch (c){ case ‘I’: ++k; break ;case ‘L’: continue;default : putchar(c) ; continue ; }putchar(‘*’); }}程序运行后的输出结果是________2、void fun(int x,int y){ x=x+y;y=x-y;x=x-y; printf("%d,%d,",x,y); }main(){ int x=2,y=3; fun(x,y); printf(“%d,%d\n”,x,y); }程序运行后的输出结果是_____3、#include <stdio.h>int a[3][3]={1,2,3,4,5,6,7,8,9},b[10];main(){ f(b,a); printf("%d\n",b[0]); }f(int s[],int p[ ][3]){ s[0]=p[1][1]; }程序运行后的输出结果是________4、 fun(int a, int b){ if(a>b) return a; else return b; }main(){ int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z); printf("%d\n",r); }程序运行后的输出结果是____5、#include <stdio.h>int i=5;main(){int i=3; { int i=10;i++;}f1();i+=1; printf("%d\n",i); }int f1(){i=i+1; return(i); }程序运行后的输出结果是______6、int ff(int n){ static int f=1; f=f*n; return f; }main(){ int i; for(i=1;i<=5;i++) printf("%5d",ff(i)); }程序输出的最后一个值是______7、#define MAX 5int a[MAX],k;main(){ fun1();fun3(); fun2(); fun3();printf("\n"); }fun1(){ for(k=0;k<MAX;k++) a[k]=k+k; }fun2(){ int a[MAX],k;for(k=0;k<5;k++) a[k]=k; }fun3(){int k; for(k=0;k<MAX;k++) printf("%d",a[k]); } 程序运行后的输出结果是______ 8、#inclued<stdio.h>main(){ int k=4,m=1,p;p=func(k,m); printf(“%d”,p);p=func(k,m);printf(“%d\n”,p); }func(int a,int b){ static int m=0,i=2;i+=m+1; m=i+a+b; return (m); } 程序运行后的输出结果是______三、程序填空(12*2.5=30)1 、下面程序求一个二维矩阵的最大值。
# include <stdio.h>#define M 3#define N 4int findmax(int a[ ][N]){ int i, j, max = a[0][0];for(i = 0; i< M; ① )for(j = 0; j<N; j++)if(a[i][j]>max) max = a[i][j];② }void main( ){ int i, j, max, ③ ;for(i = 0; i<M; i++)for(j = 0; j < N; j++)scanf(“%d”, &a[i][j]);max = findmax(a);printf(“%d”, max);}2、下面程序是输出两个字符串中对应相等的字符。
main (){char x [ ]= "programming", y[ ]= "Fortran";int i=0;while( ① )if (x[i]==y[i])printf ("%c", ② );else③ }3、以下为递归法求n!的函数。
float Fac(int n){ float f ;if ( n < 0 )printf ( “error! ” );else if ( n = = 0 | | n = = 1) ①else ②return ( ③ )}4、编写N个任意不同的正整数存入数组a,然后求数组a中最大值与平均值的差,最后输出。
#define N 8main( ){int a [N] = {8,6,4,10,7,9,5,1};int i,max,sum,c;max =a [0];sum = ①c = 0;for(i=0;i < N;i + +){if(a[i] > max) ②③ }printf("%f\n", (max-1.0 * sum/c)); }。