C程序设计数组测试题
- 格式:docx
- 大小:63.79 KB
- 文档页数:7
C语言程序设计_单元测试题三本单元包含“数组、函数”的内容。
一、选择题1.以下为一维整型数组a的正确说明是_________.A)int a(10); B)int n=10,a[n];C)int n; D)#define SIZE 10;scanf("%d",&n); int a[SIZE];int a[n];2.以下对二维数组a的正确说明是________.A)int a[3][]; B)float a(3,4);C)double a[1][4] D)float a(3)(4);3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______.(假设a[0][0]位于数组的第一个位置上。
)A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+14.若二维数组a有m列,则在a[i][j]前的元素个数为________.A)j*m+i B)i*m+j C)i*m+j-1 D)i*m+j+15.25.若有以下程序段:int a[]={4,0,2,3,1},i,j,t;for(i=1;i<5;i++){t=a[i];j=i-1;while(j>=0&&t>a[j]){a[j+1]=a[j];j--;}a[j+1]=t;}... ...则该程序段的功能是_________.A)对数组a进行插入排序(升序) B)对数组a进行插入排序(降序)C)对数组a进行选择排序(升序) D)对数组a进行选择排序(降序)6.有两个字符数组a、b,则以下正确的输入语句是_______.A)gets(a,B); B)scanf("%s%s",a,B);C)scanf("%s%s",&a,&B); D)gets("a"),gets("b");7.下面程序段的运行结果是_________.char a[7]="abcdef";</P< p>char b[4]="ABC";strcpy(a,B);printf("%c",a[5]);A)空格B)\0 C)e D)f8.判断字符串s1是否大于字符串s2,应当使用_______.A)if(s1>s2) B)if(strcmp(s1,s2))C)if(strcmp(s2,s1)>0) D)if(strcmp(s1,s2)>0)9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔,请选择填空。
学号:姓名:成绩:程序设计基础(C)第七章数组习题一、选择题1.下列叙述中错误的是()。
A)对于double 类型数组,不可以直接用数组名对数组进行整体输入或输出B)数组名代表的是数组所占存储区的首地址,其值不可改变C)在程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D)可以通过赋初值的方式确定数组元素的个数2.下列关于字符串的叙述中正确的是()。
A)C 语言中有字符串类型的常量和变量B)两个字符串中的字符个数相同时才能进行字符串大小的比较C)可以用关系运算符对字符串的大小进行比较D)空串一定比空格打头的字符串小3.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。
A)scanf( ) B)getchar( ) C)gets( ) D)getc( )4.若有定义语句:int a[3][6];,按在内存中的存放顺序,a 数组的第10 个元素是()。
A)a[0][4] B)a[1][3] C)a[0][3] D)a[1][4]5.已有定义:char a[ ]="xyz",b[ ]={'x', 'y', 'z'};,下列叙述中正确的是()。
A)数组a 和b 的长度相同 B)a 数组长度小于b 数组长度C)a 数组长度大于b 数组长度 D)上述说法都不对6.下列程序的输出结果是()。
main( ){ char a[7]="a0\0a0\ 0"; int i,j;i=sizeof(a);j=strlen(a);printf("%d %d\n",i,j);}A)2 2 B)7 6C)7 2 D)6 27.下列能正确定义一维数组的选项是()。
A)int a[5]={0,1,2,3,4,5}; B)char a[ ]={0,1,2,3,4,5};C)char a={'A', 'B', 'C'}; D)int a[5]="0123";8.有以下程序#includemain(){ int a[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){ case 0:a[i]++;break;case 1:a[i]--;} break;case 1:a[i]=0;}for(i=0;i<4;i++)printf("%d ",a[i]);printf("\n");}程序运行后的输出结果是()。
若当堂没做完,下周四之前上交也可。
至ftp://211.64.82.253/用户名和密码:stuC语言程序设计练习题——数组一、选择题77、以下对一维数组a的正确说明是_d ___A、char a(10);B、int a[ ];C、int k=5,a[k];D、char a[ ]={'a' , 'b' , 'c'};78、若有说明语句:int a[2][4];,则对a数组元素的正确引用是_a___A、a[0][3]B、a[0][4]C、a[2][2]D、a[2][2+1]79、以下能对二维数组y进行初始化的语句是_b__A、static int y[2][ ]={{1,0,1}, {5,2,3}};B、static int y[ ][3]={{1,2,3}, {4,5,6}};C、static int y[2][4]={{1,2,3}, {4,5} , {6}};D、static int y[ ][3]={{1,0,1,0}, { }, {1,1}};80、若有说明语句:int y[ ][4]={0,0};则下面叙述不正确的是_d___A、数组y的每个元素都可得初值0B、二维数组y的行数为1C、该说明等价于int y[ ][4]={0};D、只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值081、以下各组选项中,均能正确定义二维实型数组s的选项是_c___A、float s[3][4];B、float s(3,4);float s[ ][4]; float s[ ][ ]={{0};{0}};float s[3][ ]={{1},{0}}; float s[3][4];C、 float s[3][4];D、float s[3][4];static float s[ ][4]={{0},{0}}; float s[3][ ];auto float s[ ][4]={{0},{0},{0}}; float s[ ][4];82、若有说明语句:int a[ ][3]={1,2,3,4,5,6,7,8}; ,则a数组的行数为__a__A、3B、2C、无确定值D、183、若二维数组y有m列,则在y[i][j]前的元素个数为_B___A、j*m+iB、i*m+jC、i*m+j-1D、i*m+j+184、下面程序中有错误的行是____1、 main( )2、 {3、 int x[3]={1};4、 int k;5、 scanf("%d", &x);6、 for (k=1; k<3; k++)7、 x[0]=x[0]+x[i];8、 printf("x[0]=%d\n", x[0]);9、 }A、3B、6C、7D、585、若有以下语句,则正确的描述是__b__char x[ ]="12345";char y[ ]={'1', '2', '3', '4', '5'};A、x数组与y数组的长度相同B、x数组长度大于y数组长度C、x数组长度小于y数组长度D、x数组等价于y数组86、以下不正确的数组定义语句是__b__A、double x[5]={2.0, 4.0, 6.0, 8.0, 10.0};B、int y[5]={0, 1, 3, 5, 7, 9};C、char ch1[ ]={'1', '2', '3', '4', '5'};D、char ch2[ ]={'\x10', '\xa', '\x8'};87、以下正确的数组定义语句是_c___A、char a[5]={'1', '2', '3', '4', '5', '\0'};B、int b[2][ ]={{1}, {2}};C、float c[ ][3]={1, 2, 3, 4, 5};D、char d[5]="CHINA";88、判断字符串str1是否大于字符串str2,应当使用__d__A、if (str1>str2)B、if (strcmp(str1, str2))C、if (strcmp(str2, str1)>0)D、if (strcmp(str1, str2)>0)89、下面程序段的运行结果是_c___char x[5]={'a', 'b', '\0', 'c', '\0'};printf("%s", x);A、'a''b'B、abC、ab└┘cD、abc90、有两个字符数组a,b,则以下能正确为a,b进行赋值的语句是_d___A、gets(a, b);B、scanf("%s%s", &a, &b);C、getchar(a); getchar(b);D、gets(a); gets(b);91、有字符数组s1[80]和s2[80],则以下能正确对s1, s2进行输出的语句是___b_A、puts(s1, s2)B、printf("%s, %s", s1, s2);C、putchar(s1, s2);D、puts(s1), puts(s2);92、以下程序段的运行结果是_c___char a[7]="abcdef";char b[4]="ABC";strcpy(a, b);printf("%c", a[5]);A、└┘B、\0C、eD、f93、以下描述正确的是_d___A、两个字符串所包含的字符个数相同时,才能比较字符串B、字符个数多的字符串比字符个数少的字符串大C、字符串"STOP└┘"与"STOP"相等D、字符串"That"小于字符串"The"94、以下对字符数组的描述中错误的是_c___A、字符数组中可以存放字符串B、字符数组中的字符串可以整体输入、输出C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值D、不可以用关系运算符对字符数组中的字符串进行比较95、若有语句:char s1[10], s2[10]={"books"},则能将字符串books赋给数组s1的正确语句是_b___A、s1={"books"};B、strcpy(s1, s2);C、s1=s2;D、strcpy(s2, s1);96、以下printf语句的输出结果是____printf("%d\n", strlen("school");A、7B、6C、存在语法错误D、不定值97、下面程序的功能是将字符串s中所有的字符c删除。
c语言数组试题及答案1. 请编写一个程序,要求用户输入10个整数,然后将其存储在一个数组中,并输出这个数组的内容。
答案:```c#include <stdio.h>int main() {int numbers[10];int i;printf("请输入10个整数:\n");for (i = 0; i < 10; i++) {scanf("%d", &numbers[i]);}printf("数组内容为:\n");for (i = 0; i < 10; i++) {printf("%d ", numbers[i]);}return 0;}```2. 请编写一个程序,要求用户输入一个整数n(n>0),然后分别输入n个整数存储在一个数组中,计算并输出这个数组中所有元素的和。
答案:```c#include <stdio.h>int main() {int n;int numbers[100];int sum = 0;int i;printf("请输入整数n:\n");scanf("%d", &n);printf("请输入%d个整数:\n", n);for (i = 0; i < n; i++) {scanf("%d", &numbers[i]);sum += numbers[i];}printf("数组元素之和为:%d\n", sum);return 0;}```3. 请编写一个程序,要求用户输入一个整数n(n>1),然后分别输入n个整数存储在一个数组中,计算并输出这个数组中最大和最小的元素。
答案:```c#include <stdio.h>int main() {int n;int numbers[100];int max, min;int i;printf("请输入整数n:\n");scanf("%d", &n);printf("请输入%d个整数:\n", n);for (i = 0; i < n; i++) {scanf("%d", &numbers[i]);}max = numbers[0];min = numbers[0];for (i = 1; i < n; i++) {if (numbers[i] > max) {max = numbers[i];}if (numbers[i] < min) {min = numbers[i];}}printf("数组中的最大元素为:%d\n", max);printf("数组中的最小元素为:%d\n", min);return 0;}```4. 请编写一个程序,要求用户输入两个整数m和n(1<=m<=n<=100),然后生成并输出m到n之间(包含m和n)的所有整数。
数组试题及答案1. 定义一个整型数组,包含10个元素,并初始化为0。
答案:```cint array[10] = {0};```2. 编写一个函数,用于计算数组中所有元素的和。
答案:```cint sumArray(int arr[], int size) {int sum = 0;for (int i = 0; i < size; i++) {sum += arr[i];}return sum;}```3. 给定一个数组,编写一个函数来找到数组中的最大值。
答案:```cint findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```4. 编写一个程序,将一个数组中的所有元素逆序输出。
答案:```cvoid reverseArray(int arr[], int size) {for (int i = size - 1; i >= 0; i--) {printf("%d ", arr[i]);}}```5. 给定一个整数数组,编写一个函数,将数组中的所有负数移到数组的开头,所有非负数移到数组的末尾。
答案:```cvoid moveNegativesToFront(int arr[], int size) {int j = 0;for (int i = 0; i < size; i++) {if (arr[i] < 0) {arr[j++] = arr[i];}}for (int i = j; i < size; i++) {arr[i] = 0;}}```6. 编写一个函数,用于检查数组中是否存在重复元素。
答案:```cbool hasDuplicates(int arr[], int size) {for (int i = 0; i < size; i++) {for (int j = i + 1; j < size; j++) {if (arr[i] == arr[j]) {return true;}}}return false;}```7. 给定一个数组,编写一个函数,用于找出数组中第二大的元素。
1.以下对一维整型数组a的定义,正确的是_。
(2分)A.int a(10) ;B.int n = 10 , a[n] ;C.int n ;scanf( "%d" , &n ) ;int a[n] ;D.int a[10] ;2.若有定义:int a[10] ;,则对a数组元素的正确引用是_。
(2分)A.a[10]B.a[3.5]C.a(5)D.a[10-10]3.对定义int a[10] = {6 , 7 , 8 , 9 , 10} ; 的正确理解是_。
(2分)A.将5个初值依次赋给a[1]--a[5]B.将5个初值依次赋给a[0]--a[4]C.将5个初值依次赋给a[6]--a[10]D.因为数组长度与初值个数不相同,所以此语句不正确4..若有定义:int a[3][4]; , 则对a数组元素的正确引用是_。
(2分)A.a[3][4]B.a[1,3]C.a[1+1][0]D.a(2)(1)5.以下对二维数组a初始化正确的语句是_。
(2分)A.int a[2][ ]={{0 , 1 , 2}, {3 , 4 , 5}};B.int a[ ][3]={{0, 1, 2}, {3, 4, 5}};C.int a[2][4]={{0, 1 , 2}, {3 , 4}, {5}};D.int a[ ][3]={{0, 1, 2}, { }, {3, 4}};6.对二维数组a进行如下初始化:int a[ ][3]={0 , 1 , 2 , 3 , 4 , 5};则a[1][1]的值是_。
(2分)A.0B.3C.4D.17.下面程序段的运行结果是_。
(2分)#include<stdio.h>int main( ){int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ;for( i = 0 ; i < 3 ; i++ )printf( "%2d" , x[i][2-i] ) ;return 0 ;}A.1 5 9B.1 4 7C.3 5 7D.3 6 98.以下对数组s的初始化,错误的是_。
数组选择试题及答案一、选择题1. 在C语言中,数组的索引是从哪个数字开始的?A. 0B. 1C. 2D. 3答案:A2. 下面哪个选项是正确的数组声明?A. int arr[5] = {1, 2, 3};B. int arr[5] = {1, 2, 3, 4, 5, 6};C. int arr[] = {1, 2, 3};D. int arr[5] = {1, 2};答案:C3. 如果有一个数组`int arr[10] = {0};`,那么数组中所有元素的初始值是多少?A. 1B. 0C. -1D. 未定义答案:B4. 以下哪个循环可以用来遍历数组?A. for (int i = 0; i < 10; i++) { ... }B. for (int i = 10; i > 0; i--) { ... }C. for (int i = 0; i <= 10; i++) { ... }D. for (int i = 0; i < 10; i += 2) { ... }答案:A5. 在C语言中,如何获取数组的长度?A. sizeof(arr) / sizeof(arr[0])B. sizeof(arr) * sizeof(arr[0])C. sizeof(arr) / sizeof(int)D. sizeof(arr) / sizeof(char)答案:A二、填空题1. 在C语言中,定义一个整型数组并初始化为前5个自然数,可以使用以下语句:`int arr[] = {______, ______, ______, ______,______};`答案:0, 1, 2, 3, 42. 如果有一个数组`int arr[5] = {10, 20, 30, 40, 50};`,那么`arr[2]`的值是______。
答案:303. 在C语言中,数组的内存是______的。
答案:连续4. 定义一个数组`int arr[3] = {0, 1, 2};`,数组的最后一个元素的索引是______。
一、单选题1、C语言中,引用数组元素时,其数组下标的数据类型允许是().A.整型表达式B.任何类型的表达式C.整型常量D.整型常量、整型变量或整型表达式正确答案:D2、若有定义:int a[3][4], 则对数组a元素的正确引用是( )A.a(2)(0)B.a[10-10]C.a[1,3]D.a[2][3]正确答案:D3、以下不正确的定义语句是().A.char c1[ ] = { '1', '2', '3', '4', '5' };B.int y[5] = { 0, 1, 3, 5, 7, 9 };C.double x[5] = { 2.0, 4.0, 6.0, 8.0, 10.0 };D.char c2[ ] = { '\x10', '\xa', '\x8' };正确答案:B4、以下程序的输出结果是().#include<stdio.h>int main(){int n[2] = {0},i,j,k = 2;for (i = 0; i < k; i++)for (j = 0; j < k; j++)n[j] = n[i]+1;printf("%d\n",n[k]);return 0;}A.1B. 2C. 3D.不确定的值正确答案:D5、若二维数组a 有m 列,则在a[ i ][ j ] 前的元素个数为( ).A.j*m+iB.i*m+jC.i*m+j+1D.i*m+j-1正确答案:B6、下面语句的输出结果是().int i,x[3][3] = {1,2,3,4,5,6,7,8,9};for (i = 0; i < 3; i++)printf("%d",x[i][2-i]);A.147B.159C.369D.357正确答案:D7、以下对二维数组a的正确说明是()。
一、单选题1、若有定义 char s[10];则在下面表达式中不表示s[1]的地址的是()。
A.s++B.&s[0]+1C.&s[1]D.s+1正确答案:A2、若有定义int a[5],*p=a;则对a数组元素的正确引用是()。
A.a+2B.*(a+2)C.*&a[5]D.*(p+5)正确答案:B3、若有定义int a[5],*p=a;则对a数组元素地址的正确引用是()。
A.p+5B.&a+1C.*a+1D.&a[0]正确答案:D4、若要对a进行合法的自减运算,则之前应有下面()的说明。
A.int b[10];int *a=b+1;B.int k;int *a=&k;C.int p[3];int *a=p;D.char *a[3];正确答案:A5、若有定义int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是()。
A.p1=x+3,*p1++B.x[3]C.p1=x+2,*++p1D.p1=x+2,*(p1++)正确答案:D6、设int x[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0},*p=x,k;且0≤k<10, 则对数组元素x[k]的错误引用是()。
A.x[p-x+k]B.p+kC.*(&x[k])D.*(x+k)正确答案:B7、设double *p[6];则()。
A.p是指针数组,其元素是指向double型变量的指针B.p是指向double型变量的指针C.p是double型数组D.p是数组指针,指向double型数组正确答案:A8、若有定义int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是()。
A.for(i=0;i<6;i++) printf("%2d",*p++);B.for(i=0;i<6;i++) printf("%2d",*(p+i));C.for(i=0;i<6;i++) printf("%2d",*(p++));D.for(i=0;i<6;i++) printf("%2d",(*p)++);正确答案:D9、下面程序执行后的输出结果是()。
一、单选题1、以下合法的数组说明语句A.char a[]={65,66,67,68,69};B.int a[5]={0,1,2,3,4,5};C.int a[]="string";D.char a="string";正确答案:A解析:A、表示ASCII值对应的字符B、初值个数为6个,超过数组大小5 C、整型数组不能保存字符串D、字符型变量,只能保存单引号括起来的一个字符2、#include<stdio.h>int main(void){int a[]={1,2,3,4,5};printf("%d",sizeof(a));return 0;}【假设】在该环境中整型占4字节A.5B.20C.10D.4正确答案:B解析:B、sizeof求数组所占空间大小,即总字节数;元素个数为5,每个元素为整型占4字节,故共20个字节3、以下数组定义错误的是A.int x[][3]={1,2,3,4,5,6,7};B.int a[][3]={{1,2,3},{4,5 6}};C.int x[ ][3]={0};D.int a[2][3]={{1,2},{3,4},{5,6}};正确答案:D解析:D、初值列表中有3行,但仅定义2行空间,容纳不下,语法错误4、char str[]="China"; 则数组str所占的空间为A.5字节B.6字节C.1字节D.5字节正确答案:B解析:B、"China"中不仅含5个有效字符,还包含字符串的结束标志'\0',故共6个字符,C中一个字符占1字节,即共6字节5、#include<stdio.h>int main(void){char a[10],b[]="Come on.";a=b;puts(a);return 0;}A.运行输出字符:CB.运行输出字符串:ComeC.编译报错D.运行输出字符串:Come on.正确答案:C解析:C、数组名是地址,但为“常量地址”,其值不能改变,题目中试图为常量地址a赋值,故语法错误6、以下对字符数组初始化语句中,与其他三项不同的是A.char c[6]={'h','e','l','l','o'};B.char c[]={'h','e','l','l','o','\0'};C.char c[]={'h','e','l','l','o'};D.char c[]={"hello"};正确答案:C解析:A、空间大小为6,但初值列表中有5个字符,剩余的1个字符空间,存放字符型数据的默认值'\0',相当于char c[6]={'h','e','l','l','o','\0'};故该数组中相当于存了一个完整字符串"hello" B、数组c空间大小为6,保存完整串"hello" C、c 空间大小是5个字符空间,无'\0',故不是完整串D、同charc[]="hello"; 保存完整串7、#include<stdio.h>#include<string.h>int main(void){char str[12]={'s','t','r','i','n','g'};printf("%d\n",strlen(str));return 0;}A.7B.6C.12D.11正确答案:B解析:B、数组str空间大小为12,而初值列表中有6个字符,还有12-6个字符空间,全为字符型数据默认值'\0',即相当于包含完整字符串"string" 。
数组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语言数组考试题及答案一、选择题1. 以下哪个选项是正确的数组声明方式?A. int a[5] = {1, 2, 3, 4, 5};B. int a = [5] = {1, 2, 3, 4, 5};C. int a[5] = {1, 2, 3};D. int a = {1, 2, 3, 4, 5};答案:A2. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 以下哪个表达式是合法的?A. a[10]B. a[-1]C. a[3.5]答案:D3. 假设有数组int a[5] = {1, 2, 3, 4, 5}; 以下哪个表达式可以得到数组a的元素个数?A. sizeof(a) / sizeof(int)B. sizeof(a) / sizeof(char)C. sizeof(a) / sizeof(float)D. sizeof(a) / sizeof(double)答案:A4. 以下哪个选项是正确的二维数组声明方式?A. int a[3][2] = {{1, 2}, {3, 4}, {5, 6}};B. int a[3][2] = {1, 2, 3, 4, 5, 6};C. int a[3][2] = {{1, 2}, {3, 4, 5}, {6, 7}};D. int a[3][2] = {1, 2, 3, 4, 5, 6, 7, 8};5. 对于二维数组int a[3][2] = {{1, 2}, {3, 4}, {5, 6}}; 以下哪个表达式可以得到元素a[1][1]的值?A. a[1][1]B. a[1] + 1C. *(a[1] + 1)D. a[1] * 1答案:A二、填空题1. 假设有数组int a[5] = {10, 20, 30, 40, 50}; 则a[0]的值是______。
答案:102. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 则a[9]的值是______。
数组练习题及答案问题1:数组的基本操作题目:编写一个程序,实现以下功能:1. 初始化一个整型数组,大小为10,所有元素初始化为0。
2. 将数组中的元素依次设置为1到10。
3. 输出数组中的所有元素。
答案:```c#include <stdio.h>int main() {int arr[10] = {0};for (int i = 0; i < 10; i++) {arr[i] = i + 1;}for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}return 0;}```问题2:数组的反转题目:编写一个函数,实现对整数数组的反转。
答案:```cvoid reverseArray(int arr[], int size) {int start = 0;int end = size - 1;while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}}```问题3:数组的查找题目:编写一个函数,实现在数组中查找特定元素的索引,如果找到返回该元素的索引,如果未找到返回-1。
答案:```cint findElement(int arr[], int size, int element) {for (int i = 0; i < size; i++) {if (arr[i] == element) {return i;}return -1;}```问题4:数组的排序题目:使用冒泡排序算法对整数数组进行排序。
答案:```cvoid bubbleSort(int arr[], int size) {for (int i = 0; i < size - 1; i++) {for (int j = 0; j < size - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}```问题5:数组的动态扩展题目:编写一个函数,实现对数组的动态扩展,使其能够存储更多的答案:```cvoid dynamicArrayExpansion(int *arr, int *size, int capacity, int newElement) {if (*size >= capacity) {int newCapacity = capacity * 2;int *newArr = (int *)malloc(newCapacity *sizeof(int));for (int i = 0; i < *size; i++) {newArr[i] = arr[i];}free(arr);arr = newArr;capacity = newCapacity;}arr[(*size)++] = newElement;}```结束语:这些练习题涵盖了数组的基本操作、查找、排序和动态扩展等常见问题,希望能够帮助您更好地理解和掌握数组的使用。
C程序设计(数组)12.23【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是 C 。
A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式【题2】C语言中,数组名代表BA.数组全部元素的值B.数组首地址C.数组第一个元素的值D.数组元素的个数【题3】以下对一维整型数组a 的正确说明是。
A)int a(10); B)int n=10,a[n];C) int n; D)#define SIZE 10 scanf(“%d”,&n);int a[SIZE];int a[n];【题4】合法的数组定义是DA.int a[ ]=”string”;B.int a[5]={0,1,2,3,4,5};C.char a=”string”;D.char a[ ]={0,1,2,3,4,5}; 【题5】若有定义和语句:char s[10]; s=”abcd”; printf(“%s\n”,s); 则结果是(以下u代表空格)DA.输出abcd B.输出aC.输出abcd u u u u u D.编译不通过【题6】有以下语句,则下面是正确的描述Bstatic char x [ ]=“12345”;static char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’};A.x数组和y数组的长度相同。
AB.x数组长度大于y数组长度。
C.x数组长度小于y数组长度D.x数组等价于y数组。
【题7】若有说明:int a[10];则对a 数组元素的正确引用是 D 。
A)a[10] B)a[3.5] C)a(5) D)a[10-10]【题8】在C 语言中,一维数组的定义方式为:类型说明符数组名C ;A)[整型常量表达式] B)[整型表达式]C)[整型常量] 或[整型表达式] D)[常量]【题9】以下能对一维数组a 进行正确初始化的语句是C。
A)int a[10]=(0,0,0,0,0); B)int a[10]={};C)int a[]={0}; D)int a[10]=”10*1”;【题10】对以下说明语句的正确理解是 B 。
c语言数组练习题及答案第一题:在数组a中,存放有n个学生的成绩.试编一函数:将低于平均分的学生人数m由函数值返回,将低于平均分的分数由数组b带回. int fun(int a[],int n,int b[]) {int i,m=0,aver=0;for(i=0;i<n;i++) aver+=a[i];aver/=n;for(i=0;i<n;i++)if(a[i]<aver) b[m++]=a[i];return m;}第二题:试编一函数:求出1000之间能被7或11整除,但不能同时被7或11整除的所有整数的个数n由函数值返回,并将符合条件的数放在数组a中带回. int fun(int a[]){int i,n=0;for(i=1;i<1000;i++)if((i%7==0&&i%11!=0)||(i%7!=0&&i%11==0)) a[n++]=i;return n;}第三题:试编一函数:将大于整数m且紧靠m的k个素数存入数组a中. void fun(int m,int k,int a[]) {int i,n,data,flag;data=m+1; n=0;while(n<k){flag=1;for(i=2;i<=data/2;i++)if(data%i==0){flag=0; break;}if(flag) a[n++]=data;data++;}}第四题:试编一函数:在数组a中有n个整数,要求把下标从0到p(p小于等于n-1)的数平移到数组的最后.如:原始内容: 1,2,3,4,5,6,7,8,9,10; 当p=4时:移后内容: 6,7,8,9,10,1,2,3,4,5void fun(int a[],int n,int p) {int i,j,t;for(i=0;i<=p;i++){t=a[0];for(j=1;j<n;j++) a[j-1]=a[j];a[n-1]=t;}}第五题:试编一函数:在具有n个数据的数组a中,求出次最大值的下标并由函数值返回.int fun(int a[],int n){int i,j,max,may;if(a[0]>a[1]){max=0; may=1;}else {max=1; may=0;}for(i=2;i<n;i++)if(a[i]>a[max]){may=max;amx=i;}else if(a[i]>a[may]) may=i;return may;}第六题:在数组a中有n个四位数.试编一函数,要求按每个数的后三位的大小进行升序排列,当后三位等相同时,则对这些数值按原始四位数据进行降序排序.将排序后的前10个数存入数组b中.(提示:可采用选择排序)int fun(int a[],int n,int b[]) {int i,j,k,t,m=10;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(a[j]%1000<a[k]%1000) k=j;else if(a[j]%1000==a[k]%1000 && a[j]>a[k]) k=j;if(k!=i){t=a[i]; a[i]=a[k]; a[k]=t;}}for(i=0;i<m;i++) b[i]=a[i];return m;}第七题:在三位数(100至999)中寻找符合下面条件的整数.它即是完全平方数,又有两位数字相同.(如:144,676;)并将符合条件数的个数n由函数值返回,符合条件的数存入数组a中返回.int fun(int a[]){int i,j,hun,ten,data,n=0;for(i=10;i<32;i++){j=i*i;if(j>=100&&j<=999){hun=j/100;ten=j%100/10;data=j%10;if(hun==ten||ten==data||data==hun) a[n++]=j;}}return n;}第八题:判断一个长整型数是否为回文数(回文数是指其数字左右对称的整数).当该数是回文数时,函数值返回1,否则返回0.(提示:利用逻辑量flag进行操作). intfun(long m){int i=0,n=0,flag=1,a[20];while(m){a[n]=m%10; m=m/10; n++;}while(i<=n/2 && flag)if(a[i]!=a[--n] flag=0;else i++;return flag;}第九题:在数组a中存有n个数据,试编一函数:依次从数组中取出一个数据,如查该数连续大于该数以后的5个数且该数是奇数,统计出满足此条件数的个数m由函数值返回,并把这些数按从小到大的顺序存入数组b中.int fun(int a[],int n,int b[]) {int i,j,flag,m=0;for(i=0;i<n-5;i++){for(j=i+1;j<=i+5;j++)if(a[i]>a[j]) flag=1;else {flag=0; break;}if(flag==1 && a[i]%2==1) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]>b[j+1]){flag=b[j]; b[j]=b[j+1]; b[j+1]=flag;}return m;}第十题:在数组a中有n个四位数,试编一函数:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数m由函数值返回,再把所有满足此条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序排序.int fun(int a[],int n,int b[]) {int i,j,m,thou,hun,ten,data;for(i=0;i<n;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;if(thou+data==hun+ten) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]<b[j+1]){data=b[j]; b[j]=b[j+1]; b[j+1]=data;}}第十一题:在数组a中有n=100个人围坐一圈并按顺时针方向从1到n编号,从第s=1个人开始进行从1到m=10的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止,现要求将出圈次序重新存入数组a中.void fun(int a[],int n,int s,int m) {int i,j,k,l,x;i=s-1; k=0; l=n;while(l>0){k++;if(k==m){x=a[i];for(j=i+1;j<n;j++) a[j-1]=a[j];a[n-1]=x;k=0; l--;}else i++;if(i==l) i=0;}}。
C语言第六章习题一、单项选择题1.定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是【1】for(i=0;i<3;i++) printf("%d",x[i][2-i]);A)1 5 9 B)1 4 7C)3 5 7 D)3 6 92.若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为4的表达式是【2】A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c]3.下列语句的输出结果是【3】。
printf("%d\n", strlen("ats\n012\1\\"));A) 11 B) 10 C) 9 D) 84.合法的数组定义是【4】A)int a[ ]="string"; B)int a[5]={0,1,2,3,4,5};C)char s="string"; D)char a[ ]={0,1,2,3,4,5};5.设int型变量占两个字节的存储单元,若有定义int x[10]={1,3,5};则数组x在内存中所占的字节数是【5】。
A)3 B)6 C)10 D)206.在C语言中引用数组元素时,下标的数据类型允许使用【6】。
A)整型常量B)实型常量或表达式C)整型常量或表达式D)任何类型的表达式7.下面程序的输出结果是【7】。
int i,a[10];for(i=9;i>=0;i--)a[i]=10-i;printf("%d%d%d",a[2],a[5],a[8]);A)258 B)741 C)852 D)3698.若定义:int a[][4]={1,2,3,4,5,6,7,8,9}; 则数组a的第一维的大小是【8】。
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、下面对数组的描述错误的是()A.数组是一种数据结构,它由相同类型的相关数据项组成B.数组是固定长度的实体,一旦创建,就会保持长度不变C.数组是值类型D.数组的元素可以是值类型或引用类型正确答案:C2、C#数组有三种形式,它们是:()A.一维数组、二维数组、三维数组B.整形数组、浮点型数组、字符型数组C.一维数组、二维数组、多维数组D.一维数组、多维数组、交错数组正确答案:D3、数组scores定义如下:int[] scores=new int[5]{65,71,90,68,80};则scores[1]=()A.71B.未知,编译报错C.80D.65正确答案:A4、下面声明和创建数组的语句错误的是()A.int[] n={1,2,3,4,5};B.int[] array = new int[3] {1,2};C.int[] a=new int[12];D.int[] c;c=new int[12];正确答案:B5、关于多维数组的描述正确的是()A.交错数组各行长度必须相同B.矩阵数组用行和列的形式表示表信息,每行的列数可以不同C.二维数组用来表示值表,它将信息存放在行和列中,为了确定某个表元素,必须指定两个索引D.用arrayName[row,column]形式可以访问到交错数组中的元素正确答案:C6、在调用方法时,如果想给方法传递任意个数的参数时,应选哪个关键字()A.paramsB.refC.无法实现D.any正确答案:A7、有关对foreach语句描述不正确的是()A.其中type和identifier分别表示迭代变量的类型和名称,arrayName表示要迭代的数组B.foreach语句的语法为:foreach(type identifier in arrayName){statement;}C.可以在foreach语句体中改变迭代变量的值D.foreach语句只能用来访问数组元素正确答案:C8、有一个定义了变长实参的方法,其方法头为:public static double getAverage(params double[] numbers){…}下面调用该方法正确的是:()A.以上写法都正确B.double d2= getAverage (10.0,20.0,30.0);C.double[] arrayDouble={1.0,2.0,3.0,4.0};double d4= getAverage(arrayDouble);D.double d1= getAverage (1);正确答案:A9、下面代码是实现数组array冒泡排序的片段,划线处应填入() int[] array = { 60, 56, 38, 45 };int temp;for (int i = 0; i < 3; i++){for (int j = 0; j < __________; j++){if (array[j] < array[j + 1]){temp = array[j];array[j] = array[j + 1];array[j + 1] = temp; }}}A.3-iB.i+1C.iD.4-i正确答案:A10、下面程序的输出结果是()string str = "a123bc456d";string result = "";for (int i = 0; str[i] >= 'a' && str[i] <= 'z'; i += 1) {result = str[i] + result;Console.WriteLine(result);}A.编译出错,无法运行B.123456C.aD.abcd正确答案:C。
C程序设计数组测试题
《C程序设计数组》试题
1、一批具有同名的同属性的数据就是。
2、若有定义:int a[10];则数组a的长度是,含有个元素。
3、若有定义:int a[ ]={1,3,5,7,9};则数组a的下标值是。
4、假定int类型变量占用两个字节,其定义:int x[10]={0,2,4};,则数组x在内存中
所占字节数是。
5、在C语言中,二维数组在内存中的存放顺序是。
6、有定义语句“int a[ ][3]={1,2,3,4,5,6};”,则a[1][0]的值是,a[0][1]的
值是,行下标的值是。
7、若有定义:double x[3][5];,则x数组中行下标的下限为,列下标的上限
为。
8、若有定义float a[3][5];则a数组有行列,共有个元素,
假设存储一个float型数据占4个字节,则a数组占的字节数是。
9、若有定义:int a[3][4]={{1,2}{0},{4,6,8,10}}。
则初始化后,a[0][2]得到的初值是a[1][2]得到的初值是,a[2][1]得到的初值是。
10、字符串的结束标志是。
11、的作用将一个字符串(以’\0’结束的字符序列)输出到终端,的
作用是从终端输入一个字符串到字符数组,并且得到一个函数值。
12、字符串连接函数,字符串复制函数是,字符串比较函数
是,测试字符串长度的函数是,函数的作用是将字符串中大写字母转换成小写字母,函数的作用是将字符串中小写字母转换成大写字母。
13、执行char str[10]=“China\0”;strlen(str)的结果是。
14、若有定义:char str[ ]=”I love China!”;则a[4]的值是,a[10]的值
是。
1、以下对一维数组a的正确说明是。
A、int a(10);
B、int n=10,a[n];
C、int n;scanf(“%d”,&n);int a[n]
D、int a[10];
2、以下不正确的定义语句是。
A、double a[5]={2.0,4.0,6.0,8.0,10.0}
B、int b[5]={0,1,3,5,7,9}
C、char c[ ]{‘1’,’2’,’3’,’4’,’5’}
D、char d[]={‘\x10’,’\xa’,’\x8’}
3、在定义“int a[10];”之后,对a元素的引用正确的是。
A、a[10]
B、a[6,3]
C、a(6)
D、a[10-10]
4、在定义“int a[10];”之后,对a元素的引用正确的是。
A、a[10]
B、a[6,3]
C、a(6)
D、a[10-10]
5、以下对一维数组a全部元素进行正确初始化的是。
A、int a[10]=(0,0,0,0);
B、int a[10]={};
C、int a[]={0};
D、int a[10]={2*10};
6、若有说明:int a[3][4];。
则对数组元素的非法引用的是。
A、a[0][2*1]
B、a[1][3]
C、a[4-2][0]
D、a[0][4]
7、在定义“int a[5][4];”之后,对a数组的数组元素的正确引用是。
A、a(1,2)
B、a[5][0]
C、a[0][0]
D、a[0,0]
8、以下不能对二维数组a进行正确初始化的语句是。
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};
9、下面是对s的初始化,数组长度是4的是。
A、char s[]={“abc”};
B、char s[]{‘a’,’b’,’c’}
C、char s[]=””
D、char s[]=”abcdef”
10、有下面程序段:
char a[3],b[]=”Chian”;
a=b; printf(“%s”,a);则。
A、运行时输出China
B、运行时输出Ch
C、运行时输出Chi
D、编译出错
11、判断字符串a是否等于b,应当使用。
A、if(a==b)
B、if(a=b)
C、if(strcpy(a,b))
D、if(strcmp(a,b))
12、下列程序的运行结果是
char c[5]={‘a’,’b’,’\0’,’c’,’\0’};
二、单项选择题(每题1分,共15分)一、填空题(每空1分,共30分)
printf(“%s”,c);
A、‘a’’b’
B、ab
C、ab□c
D、ab□(其中□表示1个空格)
13、如有定义语句int a[]={1,8,2,8,3,8,4,8,5,8}; ,则数组a的大小是________.
A) 10 B) 11 C) 8 D) 不定
14、运行下面程序段的输出结果是________.
char s1[10]={'S','e','t','\0','u','p','\0'};
printf("%s",s1);
A) Set B) Setup C) Set up D) 'S''e''t'
15、以下程序段的输出结果是________.
char s[ ]="an apple";
printf("%d\n",strlen(s));
A) 7 B) 8 C) 9 D) 10
1、字符数组可以存放字符串()
2、字符数组的字符串可以整体输入、输出()
3、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值()
4、不可以用关系运算符对字符数组中的字符串进行比较()
5、数组的大小是可变的()
6、数组元素的类型必须相同()
7、字符串“That”小于“The”( )
8、对于数值型数组只能引能数组元素而不能一次整体调用整个数组全部元素的值
()
9、C语言不允许对数组的大小作动态定义()
10、若有初始化语句:int a[3][4]={0};,则说明只有a[0][0]可得到初值0()
11、在对全部一维数组元素初值时,由于数据的个数已经确定,可以不指定数组长度
()
12、对于二维数组,如果对全部元素都赋初值,则定义数组时对第1维的长度可以不
指定,但第2维的长度不能省()
13、puts函数只能输出一个字符串()
14、gets函数可以输入2
个字符串()
15、strlen函数的返回值为字符串的实际长度,包括’\0’在内()
1、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\n”,s);}
该程序的输出结果是。
3、main()
{int a[5],i;
for(i=1;i<5;i++)a[i]=i;
for(i=1;i<5;i++)printf(“%5d”
,a[i]);}
该程序的输出结果是。
5、void main()
{ int i,a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]); }
有一个3行4列的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在的行号和列号。
#include
main()
{int i,j,row,col,min;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,0,5}};
min= ;row= ;col= ;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]<="" p="">
printf(“min=%d,row=%d,col=%d\n”,min,row,col);}
三、判断题(每题1分,共15分)
四、程序运行结果题(每题5分,共30分)
班
级
姓
名
考
号
五、程序补充完整题(共10分)。