C、C++程序设计:一维数组单元测试与答案
- 格式:docx
- 大小:13.12 KB
- 文档页数:3
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语言数组练习及答案第四部分数组4.1 选择题1. 以下关于数组的描述正确的是(c )。
A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是(d )。
a(10); B. int n=10,a[n];n; D. #define SIZE 10scanf("%d",&n); int a[SIZE];int a[n];3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(c )。
A. 整型常量B. 整型表达式C. 整型常量或整型表达式D. 任何类型的表达式4. 以下对一维数组m进行正确初始化的是(c )。
A. int m[10]=(0,0,0,0) ;B. int m[10]={ };C. int m[ ]={0};D. int m[10]={10*2};5. 若有定义:int bb[ 8];。
则以下表达式中不能代表数组元bb[1]的地址的是(c )。
A. &bb[0]+1B. &bb[1]C. &bb[0]++D. bb+16. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是(d )。
A. 3B. 6C. 10D. 207. 若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为4的表达式是(d )A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c]8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入(a )。
#include<>main(){int a[10],i=0;while(i<10) scanf("%d",________ );┇}A. a+(i++)B. &a[i+1]C. a+iD. &a[++i]9. 执行下面的程序段后,变量k中的值为(a )。
一维数组练习题1、以下对一维数组a进展正确初始化的是OA) int a[10]=(0,0z0z0,0); B) int a[10]={ };C) int a[ ] = {0}; D} int a[10]={ 10*2};2、以下一维数组a的正确定义是oA) int a(10); B) int n=10,a[n];C) int n; D) #define SIZE 10scanf("%d"z8ιn);int a[SIZE];int a[n];3、执行下面的程序段后,变量k中的值为oint k=3z s[2];s[O]=k; k=s[l]*10;A)不定值B) 33C) 30 D) 104、以下程序执行后的输出结果是omain() <int a z b[5];a=0; b[0]=3; printf("%d z%d∖n",b[O],b[l]); }A) 3z0 B) 3 0C) 0,3 D) 3,不定值5、确定数组a的赋值状况如下所示,那么执行语句a[2]++;后a[l]和a[2]的值分别是oa[0] a[U a[2] a[3] a[4]I II 10 II_______ L 20 I II I I30 I 40 I 50 II I IA) 20 和30 B) 20 和31C) 21 和30 D) 21 和316、以下程序输出a数组中的最小值及其下标,在划线处应填入的是. main() < int i z p=0z a[10];for(i=0;i<10;i++) scanf("%d"r8ιa[i]);for(i=l;i<10;i + + )if(a[>]<a[p]);printf("%d,%d∖n",a[p],p);A) i=P C) p=j B) a[p]=a[∏D) P=i7、以下程序的输出结果是omain(){ int i,p=0,a[10]={l,5,9,0,∙3,8,7,0,l,2};for(i=l;i<10;i++)if(a[i]<a[p]) p=i;printf("%d z%d∖n",a[p]z p);)A) -3z4 B) 0,1 C) 9z2 D) 2,98、有如下说明:int a[10]=<0,l,2,3,4,5,6,7,8,9};那么数值不为9的表达式是oA) a[10-l] C) a[9]-0 B) a[8]D) a[9]-a[0]9、有如下程序main(){ int n[5]={0,0,0},i,k=3;for(i=0;i<k;i++) n[i]=i+l;printf("%d∖n",n[k]);}该程序的输出结果是O A)不确定的值C)2 B) 4 D) O10、以下程序的输出结果是Omain()( int i,x[9]={9,8,7,6,5,4,3,2,l};for(i=0;i<4;i+=2) printf("%d "z x[i]);}A) 5 2 B) 5 1C) 5 3 D)9 711、以下程序的功能是:从键盘上输入假设干个学生的成果,统计计算出平均成果,并输出低于平均分的学生成果,当输入负数时完毕。
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的初始化,错误的是_。
C程序设计(数组)习题与答案C程序设计(数组)习题与答案数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。
掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。
1. 习题一:计算数组元素的和题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组int sum = 0; // 用于存储和的变量// 遍历数组,累加每个元素的值for (int i = 0; i < 5; i++) {sum += arr[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 习题二:查找数组中的最大值题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[7] = {4, 7, 2, 9, 1, 5, 8}; // 定义一个包含7个元素的整型数组int max = arr[0]; // 假设第一个元素为最大值// 遍历数组,比较每个元素的值与当前最大值的关系for (int i = 1; i < 7; i++) {if (arr[i] > max) {max = arr[i];}}printf("数组中的最大值为:%d\n", max);return 0;}```3. 习题三:查找数组中的特定元素题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[6] = {3, 6, 9, 2, 5, 8}; // 定义一个包含6个元素的整型数组 int target = 2; // 指定要查找的元素int found = 0; // 用于标记是否找到目标元素的变量// 遍历数组,比较每个元素的值与目标值的关系for (int i = 0; i < 6; i++) {if (arr[i] == target) {found = 1;break;}}if (found) {printf("数组中存在目标元素:%d\n", target);} else {printf("数组中不存在目标元素:%d\n", target);}return 0;}```4. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。
c语言一维数组例题当涉及到C语言的一维数组例题时,有很多不同的问题和示例可以提供。
下面是一些可能的问题和对应的回答。
1. 请解释一维数组是什么?一维数组是一种数据结构,用于存储相同类型的元素。
它由连续的内存单元组成,每个元素都有一个唯一的索引,可以通过索引访问和操作数组中的元素。
2. 如何声明和初始化一维数组?在C语言中,可以使用以下语法声明和初始化一维数组:c.数据类型数组名[数组大小] = {元素1, 元素2, ...};例如:c.int numbers[5] = {1, 2, 3, 4, 5};3. 如何访问一维数组中的元素?可以使用索引来访问一维数组中的元素。
索引从0开始,最大索引为数组大小减1。
例如,要访问上面声明的数组中的第三个元素,可以使用以下语法:c.int thirdElement = numbers[2];4. 如何在一维数组中查找特定的元素?可以使用循环结构遍历一维数组,并通过条件判断来查找特定的元素。
以下是一个示例代码,查找数组中是否存在某个特定的元素:c.int searchElement(int array[], int size, int target) {。
for (int i = 0; i < size; i++) {。
if (array[i] == target) {。
return i; // 返回元素在数组中的索引。
}。
}。
return -1; // 如果未找到,返回-1。
}。
5. 如何对一维数组进行排序?可以使用各种排序算法对一维数组进行排序,例如冒泡排序、插入排序、选择排序等。
以下是一个使用冒泡排序算法对整型数组进行升序排序的示例代码:void bubbleSort(int array[], int size) {。
for (int i = 0; i < size 1; i++) {。
for (int j = 0; j < size i 1; j++) {。
c语言一维数组上机考试题目
以下是一些关于C语言一维数组的常见上机考试题目:
1. 编写一个程序,输入一个整数n,求出1到n之间所有偶数的和。
2. 编写一个程序,输入一个整数n,求出1到n之间所有数字的阶乘之和。
3. 编写一个程序,输入一个整数n,求出1到n之间所有数字的立方之和。
4. 编写一个程序,输入一个整数n,求出1到n之间所有数字的平方之和。
5. 编写一个程序,输入一个整数n,求出1到n之间所有数字的倒数之和。
6. 编写一个程序,输入一个整数n,求出1到n之间所有数字的绝对值之和。
7. 编写一个程序,输入一个整数n,求出1到n之间所有数字的因子之和。
8. 编写一个程序,输入一个整数n,求出1到n之间所有数字的质因子之和。
9. 编写一个程序,输入一个整数n,求出1到n之间所有数字的奇数因子之和。
10. 编写一个程序,输入一个整数n,求出1到n之间所有数字的因子个数之和。
以上题目只是示例,实际上关于C语言一维数组的上机考试题目还有很多其他类型。
考生应该掌握一维数组的基本概念和操作,并且能够灵活运用数组来解决问题。
C语言程序设计练习题参考答案第四章(1)一维数组C语言程序设计练习题参考答案第四章 (1) 一维数组/* 4.11 fibonacci数列,前15项 1,1,2,3,5,。
*/ #include "stdio.h"void main(){int f[15]={1,1}, i;for(i=2;i<=14;i++) /* 计算 */f[i]=f[i-2]+f[i-1];printf("fibonacci数列,前15项\n"); /* 输出 */for(i=0;i<=14;i++){printf("%5d",f[i]);if((i+1)%5==0)printf("\n");}}/* 4.12 数组元素前移动一个位置 */#include "stdio.h" void main(){int a[10]={0,1,2,3,4,5,6,7,8,9};int i,t;printf("\n移动之前:\n");for(i=0;i<=9;i++)printf("%3d",a[i]);/* 移动 */t=a[0];for(i=0;i<=9;i++)a[i]=a[i+1];a[9]=t;printf("\n移动之后:\n");for(i=0;i<=9;i++)printf("%3d",a[i]);}/* 4.13 有序数列中插入若干个数,仍然保持有序 */#include "stdio.h" void main(){int a[100]={1,4,8,10};int i,k,x,count=4;/* i,k 循环变量, x 输入整数,count 有多少整数*/printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n"); scanf("%d",&x);while(x!=-1){/* 寻找插入位置 */for(i=0;i<count;i++)< p="">/* 找到插入位置 */if(a[i]>=x){/* 移动 */for(k=count;k>i;k--)a[k]=a[k-1];/* 插入 */a[i]=x;break;}}if(i>=count)a[i]=x;count=count+1;printf("\n插入之后的数组为:\n");for(i=0;i<count;i++)< p="">printf("%4d",a[i]);printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n"); scanf("%d",&x);}}/* 4.15 将十进制数转换成二进制数,并按位存放到数组中。
1.编写程序,找出10个数中最大的数以及最大数所在的下标。
#include<iostream>using namespace std;int main(){ int a[10],max,xiabiao,i;for(i=0;i<10;i++)cin>>a[i];max=a[0];for(i=1;i<10;i++)if(max<a[i]){ max=a[i];xiabiao=i; }cout<<"最大数为:"<<max<<"其下标为:"<<xiabiao<<endl; return 0;}子函数实现:#include<iostream>using namespace std;void fun(int b[10]); ///函数声明int main(){int a[10],i;for(i=0;i<10;i++)cin>>a[i];fun(a); //函数调用return 0;}void fun(int b[10]) //函数定义{ int max,i,xiabiao;max=b[0];for(i=1;i<10;i++)if(max<b[i]){ max=b[i];xiabiao=i;}cout<<"最大数为:"<<max<<"其下标为:"<<xiabiao<<endl;}2. 编写程序,找出10个数中最大的数和最小数,将最大数与第一个数交换位置,最小数与最后一个数交换位置。
#include<iostream>using namespace std;int main(){ int a[10],i;for(i=0;i<10;i++)cin>>a[i];int max,min,r,t,temp;max=min=a[0];r=t=0;for(i=0;i<10;i++){if(max<a[i]) {max=a[i];r=i;}if(min>a[i]) {min=a[i];t=i;}}temp=a[0];a[0]=a[r];a[r]=temp;temp=a[9];a[9]=a[t];a[t]=temp;cout<<"最大值为:"<<max<<"最小值为:"<<min<<endl;cout<<"交换后数组为"<<endl;for(i=0;i<10;i++)cout<<a[i]<<" ";cout<<endl;return 0;}子函数实现#include<iostream>using namespace std;void fun(int b[10]); //函数声明int main(){ int a[10],i;for(i=0;i<10;i++)cin>>a[i];fun(a); // 函数调用cout<<"交换后数组为"<<endl;for(i=0;i<10;i++)cout<<a[i]<<" ";cout<<endl;return 0;}void fun(int b[10]) //函数定义{ int max,min,r,t,i,temp;max=min=b[0];for(i=0;i<10;i++){if(max<b[i]) {max=b[i];r=i;}if(min>b[i]) {min=b[i];t=i;}}temp=b[0];b[0]=b[r];b[r]=temp;temp=b[9];b[9]=b[t];b[t]=temp;cout<<"最大值为:"<<max<<"最小值为:"<<min<<endl;}3. 将一个数组中的值按逆序重新存放。
一、单选题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。
一、单选题
1、执行下面的程序段后,变量k中的值为()。
int k=3, s[2];
s[0]=k; k=s[1]*10;
A.30
B.不定值
C.1
D.33
正确答案:B
2、假定int类型变量占用4个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是()
A.3
B.40
C.10
D.12
正确答案:B
3、以下定义语句中,错误的是()。
A.int a[2]={1,2};
B. int n=2, a[n]={1,2};
C. int a[5]={1,2};
D. int a[]={1,2};
正确答案:B
4、以下对一维数组a进行正确初始化的是()。
A.int a[5]=(0,0,0,0,0);
B.int a[5]={1,2,3,4,5,6};
C.int a[5]={0};
D.int a[5]=1,2,3,4,5;
正确答案:C
5、有如下说明: int a[10]={0,1,2,3,4,5,6,7,8,9}; 则数值不为9的表达式是()。
A.a[8]
B.a[9]-a[0]
C.a[10-1]
D.a[9]
正确答案:A
二、判断题
1、使用数值型数组时,不可以一次引用整个数组,只能逐个引用元素。
正确答案:√
2、C语言中,数组名是一个常量,是数组首元素的内存地址,可以重新赋值。
正确答案:×
3、C语言中,数组元素在内存中是顺序存放的,它们的地址是连续的。
正确答案:√
三、填空题
1、假设有定义 int a[10]={1,3,5,7}; ,则7是元素()的值。
正确答案:a[3]
2、数组名是一个地址(),由系统自动为其分配,不能人为修改,代表了数组在内存中存放的首地址。
(提示:填“常量”或“变量”)
正确答案:常量。