c语言第6章数组练习题

合集下载

C语言第六章_数组_2

C语言第六章_数组_2

if (a[i]>a[i+1])
{temp=a[i];a[i]=a[i+1];a[i+1]=temp;14}
#include <stdio.h> main(){ /*对10个整数排序*/
int a[10]={9, 8, 5, 4, 2, 0, 6, 1, 3, 7}, i, k; for (k=1;k<10;k++)
f0=1 (n=0m) ain(){
f1=1
(n=1) int i; long f [20]={1,1};
0 f1n=fn-1f+[0f]n-2 (nfo2r) (i=2;i<20;i++)
1
1
f[1]
2
2
f[2]
f[i]=f[i-2]+f[i-1];
3
3
f[3]
for(i=0;i<20;i++)
4
数组是具有一定顺序的若干同数据类型变 量的集合体。数组要有名称,要有规模。
一.一维数组定义
类型说明符 数组名[常量];
例如:int a[6]; a = = &a[0]
a
内存映象:编译时分配一片连续的内 存空间,数组名为该空间的首地址— —常量地址。
0 a[0]
1 a[1]
2 a[2]
3 a[3]
1
4 a[4]
4
一行一行地存储所有的数组 5
a[0][1] a[0][2] a[0][3] a[1][0] a[1][1]
元素,数组名为该空间的首 6 a[1][2]
地址——地址常量。
7 a[1][3]
8

第六~八章 概念练习题-附参考答案

第六~八章 概念练习题-附参考答案

第六~第八章基本概念练习题第6章数组一、选择题。

1. 以下对一维数组a的正确定义是:A)char a(10);B) int a[];C)int k=5,a[k];D)char a[3]={‘a’,’b’,’c’};2.以下能对一维数组a进行初始化的语句是: ( )A. int a[5]=(0,1,2,3,4,)B. int a(5)={}C. int a[3]={0,1,2}D. int a{5}={10*1};3.在C语言中对一维整型数组的正确定义为。

A)int a(10); B)int n=10,a[n];C)int n;a[n]; D)#define N 10int a[N];4. 若二维数组a有m列,则在a[i][j]之前的元素个数为A. j*m+iB. i*m+jC. i*m+j-1D. i*m+j+1*5. 下列说法中错误的是A 构成数组的所有元素的数据类型必须是相同的B 用指针法引用数组元素允许数组元素的下标越界C 一维数组元素的下标依次是1、2、3……·D 定义数组时的长度可以是整型常量表达式6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是A) 3 B) 6 C) 10 D) 207.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( )A. 2B. 3C. 4D.无确定值8.以下定义语句中,错误的是( )A) int a[]={1,2}; B) char *a;C) char s[10]=“test”; D) int n=5,a[n];9.下面程序段的输出结果是: ( )int i;、int 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) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9二.分析题。

第六~八章 概念练习题-附参考答案

第六~八章 概念练习题-附参考答案
A)auto B)static C)extern D)register
11.若有函数定义:
int func()
{
static int m=0;
return m++;
}
以下程序段运行后屏幕输出为()。
int i;
for(i=1;i<=4;i++)
func();
printf("%d",func());
A.0 B.1C.4 D.5
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的均可以嵌套
5.以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其它函数之前
D)所有被调用的函数一定要在调用之前进行定义
6.用数组名作为函数调用时的实参时,传递给形参的是。
9.下列说法中正确的是:()
A.局部变量在一定范围内有效,且可与该范围外的变量同名。
B如果一个源文件中,全局变量与局部变量同名,则在局部变量范围内,局部变量不起作用。
C.局部变量缺省情况下都是静态变量。
D.函数体内的局部静态变量,在函数体外也有效。
10.未指定存储类别的变量,其隐含的存储类别为()。
main()
{ char s[]=“ABCD”, *P;
for(p=s+1; p<s+4; p++) printf (“%s\n”,p);}
该程序的输出结果是
A) ABCDB) AC) BD)BCD
BCDBCCD
CDCDD
DD

C语言 第六章 数组

C语言 第六章 数组
2.
6
6.1 排序问题
3. 初始化
类型名 数组名[数组长度]={初值表}; 初值表中依次放着数组元素的初值。例如: int a[10]={1,2,3,4,5,6,7,8,9,10}; 静态存储的数组如果没有初始化,系统自动给所有的数组元素赋0。 即 static int b[5]; 等价于 static int b[5]={0,0,0,0,0}; 初始化也可以只针对部分元素,如 static int b[5]={1,2,3}; 只对数组b的前3个元素赋初值,其余元素的初值为0。又如 int f[20]={0,1}; 对数组f的前两个元素赋初值,其余元素的值 不确定。
18
6.2 矩阵中最大值的位置
4. 使用二维数组编程
例7:定义一个3*2的二维数组a,数组元素的值由下式给 出,按矩阵的形式输出a。a[i][j]=i+j(0≤i ≤2, 0≤j ≤1), 见文件p131ex7-6.cpp
i
j
第1次 第2次 第3次 第4次 第5次
第6次
0 0 1 1 2
2
0 1 0 1 0
9
6.1 排序问题
4. 使用一维数组编程
例4:输入一个正整数n(1<n≤10), 再输入n个整数,将它们存入 数组a中。 ① 输出最小值和它所对应的下标。 ② 将最小值与第一个数交换,输 出交换后的n个数。 数组的长度在定义时必须确定, 如果无法确定需要处理的数据 数量,至少也要估计其上限, 并将该上限值作为数组长度。 因为n ≤10,数组长度就取上 限10。此外,如果用变量 index记录最小值对应的下标, 则最小值就是a[index]。 见p124ex7-4.cpp
8
6.1 排序问题
4. 使用一维数组编程

C语言程序设计第六章数组习题及答案

C语言程序设计第六章数组习题及答案

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语言程序设计 – 第 06 章课后习题

C语言程序设计 – 第 06 章课后习题

C语言程序设计– 第六章课后习题电子13-02班王双喜一、选择题1. C语言中一维数组的定义方式为:类型说明符数组名(C)A. [整型常量]B. [整型表达式]C. [整型常量]或[整型常量表达式]D. [常量表达式]2. C语言中引用数组元素时,下标表达式的类型为(C)A. 单精度型B. 双精度型C. 整型D. 指针型3. 若有定义:int a[3][4];,则对a数组元素的非法引用是(D)A. a[0][3*1]B. a[2][3]C. a[1+1][0]D. a[0][4](解释:A、B、C均正确,D看起来引用不太妥当,但其亦有其意义(a[0][4]等价于a[1][0]))4. 若有定义:int a[][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};,则a数组的第一维大小是(C)A. 1B. 2C. 3D. 4(解释:共9个元素,除以3即可得第一维大小是3;若有余数,则应加1)5. 若有定义:int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};,则值为5的表达式是(C)A. a[5]B. a[a[4]]C. a[a[3]]D. a[a[5]]6. 要求定义包含8个int类型元素的一维数组,以下错误的定义语句是(A)A. int N = 8;int a[N]; B. #define N 3while (a[2*N+2];C. int a[] = {0, 1, 2, 3, 4, 5, 6, 7};D. int a[1+7] = {0};(解释:数组的大小必须是整型常量或整型常量表达式)7. 若二维数组a有m列,则在a[i][j]前的元素个数为(A)A. i * m + jB. j * m + iC. i * m + i - 1D. i * m + j - 18. 下面是对数组s的初始化,其中不正确的是(D)A. char s[5] = {"abc"};B. char s[5] = {'a', 'b', 'c'};C. char s[5] = "";D. char s[5] = "abcdef";(解释:D中元素个数太多,算上'\0'共六个,非法)9. 下面程序段的运行结果是(B)char c[] = "\t\v\\\0will\n";printf("%d", strlen(c));A. 14B. 3C. 9D. 字符串中有非法字符,输出值不确定(解释:字符串中第四个是'\0'即结束标志,因此字符串长度是3)10. 判断字符串s1是否等于s2,应当使用(D)A. if (s1 == s2)B. if (s1 = s2)C. if (strcpy(s1, s2))D. if (strcmp(s1, s2) == 0)(解释:对于字符串来讲,其名字的内容是该字符串的起始地址,不能通过比较名字来比较相等,而应该用专用的函数进行逐字符匹配)二、写出程序的执行结果1. 程序一:# include <stdio.h>main(){int a[3][3] = {1, 3, 5, 7, 9, 11, 13, 15, 17};int sum = 0, i, j;for (i = 0; i < 3; i++)for (j = 0; j < 3; j++){a[i][j] = i + j;if (i == j) sum = sum + a[i][j];}printf("sum = %d", sum);}执行结果:打印sum = 6.(解释:a中各个元素的值是其行和列数字之和,sum内保存a中对角线元素之和,即sum = 0 + 2 + 4)2. 程序二:# include <stdio.h>main(){int i, j, row, col, max;int a[3][4] = {{1, 2, 3, 4}, {9, 8, 7, 6}, {-1, -2, 0, 5}};max = a[0][0]; row = 0; col = 0;for (i = 0; i < 3; i++)for (j = 0; j < 4; j++)if (a[i][j] > max){max = a[i][j];row = i;col = j;}printf("max = %d, row = %d, col = %d\n", max, row, col);}执行结果:打印max = 9, row = 1, col = 0.(解释:此程序的功能是逐行逐列扫描元素,总是将最大的元素赋给max,并保存该元素的行数和列数;因此执行完毕后,max是最大的元素(9),row是其行数(1),col是其列数(0))3. 程序三:# include <stdio.h>main(){int a[4][4], i, j, k;for (i = 0; i < 4; i++)for (j = 0; j < 4; j++)a[i][j] = i - j;for (i = 0; i < 4; i++){for (j = 0; j <= i; j++)printf("%4d", a[i][j]);printf("\n");}}执行结果:第一行打印0;第二行打印1 0;第三行打印2 1 0;第四行打印3 2 1 0。

c语言练习题6(数组与链表,有答案)

c语言练习题6(数组与链表,有答案)

1、(1)数据结构中,与所使用的计算机无关的是数据的_C_______。

A)存储结构B)物理结构C)逻辑结构D)物理和存储结构评析:数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。

数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。

2、栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是____D____。

A)ABCED B)DBCEA C)CDABE D)DCBEA评析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、c、D,则表明这4个元素中D是最后进栈,B、c处于中间,A最早进栈。

所以出栈时一定是先出D,再出c,最后出A。

3、线性表的顺序存储结构和线性表的链式存储结构分别是____B____。

A)顺序存取的存储结构、随机存取的存储结构B)随机存取的存储结构、顺序存取的存储结构C)随机存取的存储结构、随机存取的存储结构D)任意存取的存储结构、任意存取的存储结构评析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)。

LOC(a1)+(i-1)L计算得到,从而实现了随机存取。

对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。

4、在单链表中,增加头结点的目的是____A__。

A)方便运算的实现B)使单链表至少有一个结点C)标识表结点中首结点的位置D)说明单链表是线性表的链式存储实现评析:头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点目的是为了便于运算的实现。

5、数据处理的最小单位是___C_____。

A)数据B)数据元素C)数据项D)数据结构评析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。

数组c语言试题库及答案

数组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、0 43、0 64、&a[i] i%4==0 printf("\n");5、i+j==3_ a[i][j]6、127、a[i][j]+b[i][j] printf(“\n ”)8、按行存放9、( a[i]>a[j])10、将串str2复制到串str1中后再将串str3连接到串str1之后三、阅读题1、如右图所示2、AQM3、AzyD4、91985、如右图所示6、927、1,2,5,7,8、29、v1=5,v2=8,v3=6,v4=110、a*b*c*d*四、编程题1(1)选择法排序#include <stdio.h>void main( ){int i,j,n=10,p,a[10];int temp;for(i=0;i<n;i++) scanf("%d",&a[i]);//输入十个数printf("\n 原始的一维数组是:\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出原始的一维数组序列 */ for(i=0;i<n-1;i++){ p=i; /*假定第i 趟中最小数的位置是i*/for(j=i+1;j<n;j++)if(a[j]<a[p]) p=j;if(i!=p) {temp=a[i];a[i]=a[p];a[p]=temp;}}printf("\n排序后的一维数组:\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出排序后的一维数组序列*/}(2)比较法排序#include<stdio.h>void main( ){int i,j,n=10,p,a[10];int temp;for(i=0;i<n;i++) scanf("%d",&a[i]);//输入十个数printf("\n 原始的一维数组是:\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出原始的一维数组序列*/for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j]) {temp=a[i];a[i]=a[j];a[j]=temp;}printf("\n排序后的一维数组:\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出排序后的一维数组序列*/}2、以在十个数据(由小到大排列的十个数)中插入一个数为例#include <stdio.h>void main( ){int a[11],i,n=10,k; int point;printf("\n 请输入原始数据:\n");for(i=0;i<n;i++) scanf("%d",&a[i]); /*输入原始数据,输入的数据要从小到大*/ printf("\n 原始数据是:\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出原始的一维数组序列*/printf("\n请输入要插入的数");scanf("%d",&k); /*输入要插入的数据*/for(i=0;i<n;i++)if(a[i]>k) {point=i; break;}if(i!=n){for(i=n;i>point;i--) a[i]=a[i-1];a[point]=k;} /*从后向前方式*/elsea[n]=k;printf("插入后的数是:\n");for(i=0;i<n+1;i++) printf("%4d ",a[i]); /* 输出插入后的一维数组序列*/}3、#include <stdio.h>int main(){int i,j,upp,low,dig,spa,oth;char text[3][80];upp=low=dig=spa=oth=0;for (i=0;i<3;i++){ printf("please input line %d:\n",i+1);gets(text[i]);for (j=0;j<80 && text[i][j]!='\0';j++){if (text[i][j]>='A'&& text[i][j]<='Z')upp++;else if (text[i][j]>='a' && text[i][j]<='z')low++;else if (text[i][j]>='0' && text[i][j]<='9')dig++;else if (text[i][j]==' ')spa++;elseoth++;}}printf("\nupper case: %d\n",upp);printf("lower case: %d\n",low);printf("digit : %d\n",dig);printf("space : %d\n",spa);printf("other : %d\n",oth);return 0;}5、以5个数逆序存放为例,将n值修改,则可实现n个数逆序存放#include <stdio.h>#define n 5 //n为符号常量,值为5void main( ){int i,a[n],t;for(i=0;i<n;i++)scanf("%d",&a[i]);//输入n个数for(i=0;i<n/2;i++)//将a[0]与a[4]交换,a[1]与a[3]交换,a[i]与a[n-1-i]交换{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}for(i=0;i<n;i++)//输出n个数printf("%5d",a[i]);printf("\n");}6、杨辉三角#include <stdio.h>void main( ){int i,j,a[10][10];for(i=0;i<10;i++)for(j=0;j<=i;j++)if(j==0||i==j)a[i][j]=1;else a[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;i<10;i++){for(j=0;j<=i;j++)printf("%5d",a[i][j]);printf("\n");}}7、提高题:编写程序:#include <stdio.h>#include <string.h>void main (){char s1[80]={0},s2[80]={0};char a;int i,j,k;printf("请输入一段字符s1\n");gets(s1);printf("======================(1)============================\n"); for(i=0;s1[i];i++);printf("%s的长度:%d\n",s1,i);printf("======================(2)============================\n"); for(j=0;s1[j];j++){s2[j]=s1[j];}printf("将一个字符串S1的内容复制给另一个字符串S2:\n");puts(s2);printf("i:%d\n",i);printf("======================(3)============================\n"); for(k=0;k<=j;k++){s1[i]=s2[k];i++;}printf("将两个字符串S1和S2连接起来,结果保存在S1字符串中:\n"); puts(s1);printf("======================(4)============================\n"); printf("请输入要寻找的字母:");scanf("%c",&a);for(i=0;s1[i];i++){if(s1[i]==a)break;}if(!s1[i])printf("\n-1\n");else printf("\n%c在第%d个位置\n",a,i+1);8、与第5题同9、Fibonacci数列前20项数值#include <stdio.h>int main( ){int i; long f[20];f[0]=1;f[1]=1;for(i=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<20;i++){if(i%5==0) printf("\n");//每行五个元素printf("%10ld",f[i]);}}10、输入10个元素,统计奇数的个数#include <stdio.h>void main( ){int i,num[10],count=0;for(i=0;i<10;i++){printf("请输入第%d个数: ",i+1); /*给予输入提示*/scanf("%d",&num[i]);if(num[i]%2!=0) count++;}printf("奇数个数是:%d\n",count );}11、下面程序的功能是从键盘输入一行字符,统计其中有多少单词。

c语言练习题-第六章数组练习题.doc

c语言练习题-第六章数组练习题.doc
(21)若有定义语句:int m[]={5,4,3,2,1},i=4;,»J F面对m数组元素的引用中错误的是
A)m[-i]B)m[2*2]C)m[m[O]]D)m[m[i]]
(24)若有定义语句:char s[10]=,,1234567\0\0 ”;,则strlen(s)的值是
A)7B)8C)9D)10
B)赋值语句max=MIN;中,不应该给max赋MIN值
C)语句if(max<x[i]) max=x[i];中判断条件设置错课
D)赋值语句max=MIN;放错了位置
(28)冇以下程序
#include <stdio.h>
#include <string.h>
main()
{ char str[][20]={"One*World",,,One*Dream!"},*p=str[1 ];
void fun(int a[N], int k)
{ int i;
for(i=k;i<N;i++)a[ [11] ]=a[i];i-1
for(i=0;iv4;i++)
switch(i%2)
{ case 0:
switch(a[i]%2)
{ case O:a[i]++;break;
case 1:a[i]-;
} break;
case 1 :a[i]=0;
}
for(i=0;iv4;i++)
printf(”%d”,a[i]);
printf(“\rT);
int b[3]={0},i;
for(i=0;iv3;i++) b[i]=a[i][2]+a[2][i];

数组练习题及答案

数组练习题及答案

数组练习题及答案问题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语言第六章数组习题

C语言第六章数组习题

第六章数组6.1 选择题[题6.1]在C语言中,引用数组元素时,其数组下标的数据类型允许是_____.A)整型常量 B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式[题6.2]以下对一维整型数组a的正确说明是_____。

A)int a(10); B)int n=10,a[n];C)int n; D)#define SIZE 10scanf("%d,&n); int a[SIZE];int a[n];[题6.3]若有说明:int a[l0];则对a数组元素的正确引用是_____。

A) a[10] B)a[3.5] C)a(5) D)a[10-10][题6.4]在C语言中,一维数组的定义方式为:类型说明符数组名_____。

A)[常量表达式] B)[整型表达式]C)[整型常量]或[整型表达式] D)[整型常量][题6.5]以下能对一维数组a进行正确初始化的语句是_____。

A)int a[l0]=(0,0,0,0,0); B)int a[l0]={};C)int a[]={0}; D)int a[10]={10*1};[题6.6]以下对二维数组a的正确说明是_____。

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数组元素的正确引用是_____。

A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1)[题6.8]若有说明:int a[3][4];则对a数组元素的非法引用是_____。

A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4][题 6.10]以下不能对二维数组a进行正确初始化的语句是_____。

A)int a[2][3]={0};B)int a[][3]={{1,2},{0}};C)int a[2][3]={{l,2},{3,4},{5,6}};D)int a[][3]={1,2,3,4,5,6};[题 6.11]若有说明:int a[3][4]={0};则下面正确的叙述是_____。

C语言(数组)习题与答案

C语言(数组)习题与答案

一、单选题1、下列描述中不正确的是()A.字符串的结束符是B.可以对字符型数组进行整体输入、输出。

C.字符型数组中能存放字符串。

D.字符串函数声明在ctype.h中。

正确答案:D2、下面是有关C语言字符数组的描述,其中错误的是()A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组只能存放字符串D.字符数组中的内容不一定是字符串正确答案:C3、下面是对数组s的初始化操作,其中不正确的是()A.char s[5]="B.char s[5]={'a'};C.char s[5]={"a"};D.char s[5]= "abcdef";正确答案:D4、下面叙述正确的是()A.字符串“123 “与“123”相等。

B.字符串“123”小于字符串C.两个字符串所包含的字符个数不相同时,才能进行大小比较。

正确答案:BD.字符个数多的字符串比字符个数少的字符串大。

5、下面程序段的输出结果是()char a[7]=''123456w;char b[4]=〃ABC〃;strcpy(a z b);printfC'%c w z a[5]);A.\0B.C.5D.6正确答案:D6、以下对二维数组a的正确说明是一。

A.double a[l][4];B.float a(3)(4);C.floatf a(3,4);D.int a[3][];正确答案:A7、以下能对二维数组a进行正确初始化的语句是A. Int a[][3]={{l/2,3},(4,576}};B.int a⑵口={{1,0,1},{5,2,3}};C.int a ⑵[4]={{1,2,3},{4,5},{6}};D. int a[][3={{l/0/l},{},{l,l});正确答案:A8、若有说明:int a[3][4]={0};则下面正确的叙述是A.数组a中各元素都可得到初值,但其值不一定为0。

C语言习题(6)

C语言习题(6)

C语言习题(6)第六章数组一.填空题1.C语言数组的下标总是从开始,不可以为负数;构成数组各个元素具有相同的。

2.在C语言中,二维数组的元素在内存中的存放顺序是。

3.若有定义:double x[3][5],则x数组中行下标的下限为,列下标的上限为。

4.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]的值为,a[2][1]得到的值为。

5.若有定义int a[][4]={1,2,3,4,5,6,7,8,9},则数组a第一维的大小为。

6.设char str[100]=”Hangzhou”;则数组str所在内存空间应为字节。

7.下列程序的输出结果是。

char str[ ][10]={”abcd”,”1234”,”efgh”,”5678”};int k=1;printf(“%s”,str[k++]);8.欲将字符串S1复制到字符串S2中,其语句是。

9.如果在程序中调用了strcat函数,则需要预处理命令;如果调用了gets函数,则需要预处理命令。

10.字符串是以为结束标志的一维字符数组。

有定义:char a[]=”China”;则a数组的长度是。

11.数组在内存中占用一段连续的存储空间,该存储空间的首地址用表示。

12.调用strlen(“abcd\0ef\0g”)的返回值为。

二.选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是。

A)整型常量B)整型表达式C)整型常量或整型表达式C)任何类型的表达式2.以下对一维整型数组a的正确说明是。

A)int a(10) ; B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];3.若有定义:int a[10],则对数组a元素的正确引用是。

A)a[10] B)a[3.5] C)a(5) D)a[10-10]4.若有定义:int a[3][4],则对数组a元素的正确引用是。

第 6 章 数组补充练习

第 6 章 数组补充练习

第六章数组资料来源:/一、选择题:1. 在c语言中,一维数组的定义方式为:类型说明符数组名()。

A.常量表达式B.整型表达式 C.整型常量或整型表达式D.整型常量2. 以下对一维整型数组a的正确说明是。

A. int a(10);B. int n=10,a[n];C. int n;D. #define SIZE 10scanf(“%d”,&n); int a[SIZE];int a[n];3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是().A.整型常量或整型表达式B.整型常量C.整型表达式D.任何类型的表达式4. 若有说明:int a[10];则对a数组元素的正确引用是。

A. a[10]B. a[3.5]C. a(5)D. a[10-10]5. 以下能对一维数组a进行不正确初始化的语句是()A.int a[]={0};B.int a[10]={0,0,0,0};C.int a[10]={};D.int a[10]={10*1};6. 对以下说明语句的正确理解是。

int a[10]={6,7,8,9,10};A. 将5个初值依次赋给a[1]至a[5]B. 将5个初值依次赋给a[0]至a[4]C. 将5个初值依次赋给a[6]至a[10]D. 因为数组长度与初值的个数不相同,所以此语句不正确7. 下面程序(每行程序前面的数字表示行号)。

1 main()2 {3 float a[10]={0.0};4 int i;5 for(i=0;i<3;i++) scanf(“%d”,&a[i]);6 for(i=1;i<10;i++) a[0]=a[0]+a[i];7 printf(“%f\n”,a[0]);8 }A. 没有错误B. 第3行有错误C. 第5行有错误D. 第7行有错误8. 下面程序中有错误的行是(每行程序前面的数字表示行号)。

1 main()2 {3 float a[3]={1};4 int i;5 scanf(“%d”,&a) ;6 for(i=1;i<3;i++) a[0]=a[0]+a[i];7 printf(“a[0]=%d\n”,a[0]);8 }A. 3B. 6C. 7D. 59. 定义如下变量和数组:int k;int a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是。

c语言数组练习题及答案

c语言数组练习题及答案

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语言课后习题答案精解第六章

河南理工大学C语言课后习题答案精解第六章

a[1][1] a[1][2] a[1][3] 1 0 -1
a[2][1] a[2][2] a[2][3] 2 1 0
a[3][1] a[3][2] a[3][3]
0 1 2
0 1
0
第六章 数组
2. 写出程序的运行结果
(4) 程序四:
#include <stdio.h> main( ) { int i, s; i的ASCII码为105 char s1[100], s2[100]; printf(“input string1:\n”); n的ASCII码为110 gets(s1); printf(“input string2:\n”); gets(s2); s=-5 i=0; while((s1[i]==s2[i]) && (s1[i]!=„\0‟)) i++; if((s1[i] ==„\0‟) && (s2[i]==„\0‟)) s=0; 输入数据: aid else s=s1[i]-s2[i]; printf(“%d\n”,s); and }
B.a[a[4]]
C. a[a[3]]
D. a[a[5]]
第六章 数组
1. 选择题 (6) 要求定义包含8个int类型元素的一维数组,以下错误的定义 语句是 A A. int N=8; B. #define N 3 int a[N]; int a[2*N+2]; C. int a[ ]={0,1,2,3,4,5,6,7} D. int a[1+7]={0}
第六章 数组
3. 程序填空 (3)把一个整数转换成 #include <stdio.h> #define M 80 void main() { long int n=1234567; char s[M]; int j=0; while ( n!=0 ) { s[j]= n%10+’0’; n/=10; j++; } s[j]='\0' ; printf("\n%s",s); }

C语言程序设计第6章 练习题

C语言程序设计第6章 练习题

一、单项选择题题目1在下面的函数声明语句中存在着语法错误的就是( )。

a、AA(int, int)b、AA(int a; int b)c、AA(int a, int)d、AA(int a, int b)题目2如果一个函数定义仅允许为所在的程序文件调用,则应在该函数定义的最前面添加的关键字为( )。

a、externb、staticc、defaultd、auto题目3假定一个函数定义为“extern char* f1(char*x){return x;}”,表示该函数作用域的关键字为( )。

a、externb、charc、intd、char*题目4假定一个函数的原型语句为“int ff(int* x);”,一个整型数组为a[10],则下面函数调用表达式不正确的就是( )。

a、ff(a)b、ff(a[0])c、ff(&a[0])d、ff(a+3)题目5假定一个函数原型语句为“int f1(int a[],int n);”,与数组参数等价的表示为( )。

a、int** ab、int& ac、int* ad、int a题目6假定一个函数的参数说明为const int a,则在函数体中不能进行的操作就是( )。

a、a==0b、a=10c、printf("%d",a)d、intx=a题目7在函数体中定义的变量具有( )。

a、文件作用域b、局部作用域c、函数作用域d、全局作用域题目8在函数外定义的变量,若带有作用域关键字static,则它具有( )。

a、全局作用域b、文件作用域c、函数作用域d、局部作用域题目9在函数体中定义一个静态变量时,选用的存储属性关键字为( )。

a、staticb、registerc、externd、auto题目10假定一个函数原型为“void ff(int a[],int n)”,则对应的函数指针类型为( )。

a、*ff(int[],int)b、void(*ff)(int*a,int)c、void*ff(int*a,int)d、int (*ff)(int*a,int)二、判断题题目11函数定义格式中的参数表被称为实参表。

c语言程序设计第五版课后答案谭浩强第六章习题答案

c语言程序设计第五版课后答案谭浩强第六章习题答案

c语⾔程序设计第五版课后答案谭浩强第六章习题答案第六章:利⽤数组处理批量数据1. ⽤筛选法求100之内的素数【答案解析】素数:约数为1和该数本⾝的数字称为素数,即质数筛选法:⼜称为筛法。

先把N个⾃然数按次序排列起来。

1不是质数,也不是合数,要划去。

第⼆个数2是质数留下来,⽽把2后⾯所有能被2整除的数都划去。

2后⾯第⼀个没划去的数是3,把3留下,再把3后⾯所有能被3整除的数都划去。

3后⾯第⼀个没划去的数是5,把5留下,再把5后⾯所有能被5整除的数都划去。

这样⼀直做下去,就会把不超过N 的全部合数都筛掉,留下的就是不超过N的全部质数。

因为希腊⼈是把数写在涂腊的板上,每要划去⼀个数,就在上⾯记以⼩点,寻求质数的⼯作完毕后,这许多⼩点就像⼀个筛⼦,所以就把埃拉托斯特尼的⽅法叫做“埃拉托斯特尼筛”,简称“筛法”。

(另⼀种解释是当时的数写在纸草上,每要划去⼀个数,就把这个数挖去,寻求质数的⼯作完毕后,这许多⼩洞就像⼀个筛⼦。

)【代码实现】//⽤筛选法求100以内的素数#include<stdio.h>int main(){int i, j, k = 0;// 将数组汇总每个元素设置为:1~100int a[100];for (i = 0; i < 100; i++)a[i] = i+1;// 因为1不是素数,把a[0]⽤0标记// 最后⼀个位置数字是100,100不是素数,因此循环可以少循环⼀次a[0] = 0;for (i = 0; i < 99; i++){// ⽤a[i]位置的数字去模i位置之后的所有数据// 如果能够整除则⼀定不是素数,该位置数据⽤0填充for (j = i + 1; j < 100; j++){if (a[i] != 0 && a[j] != 0){//把不是素数的都赋值为0if (a[j] % a[i] == 0)a[j] = 0;}}}printf(" 筛选法求出100以内的素数为:\n");for (i = 0; i < 100; i++){//数组中不为0的数即为素数if (a[i] != 0)printf("%3d", a[i]);}printf("\n");return 0;}【运⾏结果】2. ⽤选择法对10个整数排序【答案解析】选择排序原理:总共两个循环,外循环控制选择的趟数,内循环控制具体选择的⽅式。

C语言练习题库----数组

C语言练习题库----数组

C语⾔练习题库----数组有如下语句 int a[10] = {1,2,3,4,5,6,7,8,9,10};int *p = a;则数值为9的表达式是______*p+9 b) *(p+8) c) *p+=9 d) p+7解析:B数组的下标是从 0 开始的,9 在 a [ 8 ] 这个位置上,p当前指向 a [ 0 ] ,所以需要向后移动8位,a和c 都是移动9位,d是地址偏移 7 位 .若有定义语句:int a[3][6];按在内存中存放的顺序,a数组的第10个元素是_____a[0][3] b) a[1][4] c) a[0][4] d) a[1][3]解析:D这个⼆维数组的正确理解⽅式应该是:定义了⼀个名字为a的数组,a数组⾥⾯有三个元素,每个元素包含6个int类型的变量,数组的第⼗个元素应该是a[0][6]之后的a[1][3],这个知识点的考察点在于要认识⼆维数组中的元素和指针都是怎么存储和指向的,指针是如何偏移的。

以下数组定义中错误的是______A. int x[][3] = {0};B. int x[2][3] = {{1,2}, {3,4}, {5, 6}};C. int x[][3] = {{1,2,3}, {4,5,6}};D. int x[2][3] = {1,2,3,4,5,6};解析:B第⼀个中括号表⽰数组当中元素的个数,第⼆个中括号表⽰每个元素中(类似⼀维数组的)变量的个数。

在定义⼆维数组的时候第⼆个中括号(元素的个数)是必须被定义的。

B中等号右边的正确定义应该是a[][2].若有说明:int i,j=2, *p=&i;, 则能完成i=j赋值功能的语句是_____A)*p=*&j; B)i=*p C)i+&j; D)i=**p;解析: A下列程序的运⾏结果是______int main(){int a[5][2] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};int* p = a; //p指向0 ,偏移量是int字节int (*p2)[2] = &a[1]; // p2指向{2,3}中的⾸地址,偏移量是int*[2]字节(两个int字节)++p; //p向后偏移⼀个int字节指向1++p2; //p2向后偏移两个int字节指向4printf("%d\n", *p);printf("%d\n", **p2);printf("%d\n", p2[1][2]); //p2 先向后偏移⼀个int*2字节(两个int) p2[1]再向后偏移两个int字节得到p2[1][2] 指向8return 0;}下⾯的程序输出结果为________#include <stdio.h>int main(){int a[] = {10,20,30,40,50};int *p = (int*)(&a+1); // &a的含义为a[]的地址,偏移量为5个int *p指向50后⾯的⼀个元素printf("%d %d\n",*(a+1),*(p-1)); // a为⾸元素的地址,偏移量为⼀个,所以指向20 p-1指向50的地址,间接引⽤后的结果为50 return 0;}。

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

for(i=0;i<3;i++) p[i]=a[i*(i+1)];
for(i=0;i<3;i++) k+=p[i]*2;
printf("%d\n",k);
}
A.20
B.21
C.22
D.23
15.以下程序运行后输出结果是()。
main()
{
intn[3],i,j,k;
for(i=0;i<3;i++)
n[i]=0;
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
D.369
30.下述对 C语言字符数组的描述中正确的是 ()。
A.任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续
C.00110
13.以下程序运行后,输出结果是()。
main()
{
inta[10],a1[]={1,3,6,9,10},a2[]={2,4,7,8,15},i=0,j=0,k;
for(k=0;k<4;k++)
if(a1[i]<a2[j]) a[k]=a1[i++];
else
a[k]=a2[j++];
charx[]="abcdefg";
chary[]={'a','b','c','d','e','f','g'};
则正确的叙述为()。
A.数组 x和数组 y等价
B.数组 x和数组 y的长度相同
C.数组 x的长度大于数组 y的长度
D.数组 x的长度小于数组 y的长度
35.若有数组定义: chararray[]="China";则数组 array所占的空间为()。
}
A.11
B.19
C.13
27.有以下程序
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);
}
该程序的输出结果是()。
A.18
B.19
D.chara[]={0,1,2,3,4,5};
33.下列语句中,不正确的是()。
A.staticchara[2]={1,2};
B.staticchara[2]={'1','2'};
C.staticchara[2]={'1','2','3'};
D.staticchara[2]={'1'};
34.若给出以下定义:
}
A.0650
B.1470
C.5430
D.输出值不定
26.以下程序运行后,输出结果是()。
main()
{
intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
for(i=0;i<4;i++) s+=aa[i][1];
printf(“%d\n”,s);
B.charstr[10];str="Hello!";
C.charstr[10];strcpy(str,"Hello!");
D.charstr[10]="Hello!";
32.合法的数组定义是()。
A.inta[]="string";
B.inta[5]={0,1,2,3,4,5};
C.int s="string";
则数值为 4的表达式是()
A.a[g-c]
B.a[4]
C.a['d'-'c']
D.a['d'-c]
8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入()。
#include<stdio.h>
main()
{
inta[10],i=0;
while(i<10) scanf("%d",________);
A.inta(10);
B.intn=10,a[n];
C.intn;
D.#define SIZE 10
scanf("%d",&n);
int a[SIZE];
inta[n];
3. 在 C语言中,引用数组元素时,其数组下标的数据类型允许是()。
A.整型常量
B.整型表达式
C.整型常量或整型表达式
D.任何类型的表达式
printf("%d%d%d",a[2],a[5],a[8]);
}
A.258
B.741
C.852
11.以下程序运行后,输出结果是()。
main()
{
int n[5]={0,0,0},i,k=2;
for(i=0;i<k;i++) n[i]=n[i]+1;
printf("%d\n",n[k]);
}
A.不确定的值
占存储空间
B.一维数组的元素在引用时其下标大小没有限制
C.任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的
方式占用存储空间
D.一维数组的第一个元素是其下标为 1的元素
31.不能把字符串:Hello!赋给数组 b的语句是()。
A.charstr[10]= {'H','e','l','l','o','!'};
A.n[2][5] B.n[2][4]
C.n[1][3]
D.n[1][4]
23.若二维数组 c有 m列,则计算任一元素 c[i][j]在数组中的位置的公式为()。
(假设 c[0][0]位于数组的第一个位置)
A.i*m+j
B.j*m+i
C.i*m+j-1
D.i*m+j+1
24.若有以下定义语句,则表达式“x[1][1]*x[2][2]”的值是()。
main()
{
int i,a[10],x,flag=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
for(i=0;i<10;i++) if _______
{flag=i+1; break;}
printf("%d\n", flag);
}
A.x!=a[i]
}
39.运行下面的程序,如果从键盘上输入:
ab<回车>
c<回车>
def<回车>
则输出结果为()。
A.a
B. a
C.ab
D.abcdef
b
b
c
c
c
d
d
d
e
f
#include<stdio.h>
#define N 6
main()
{
char c[N];
int i=0;
for( ;i<N;c[i]=getchar(),i++);

}
A.a+(i++)
B.&a[i+1]
C.a+i
D.&a[++i]
9. 执行下面的程序段后,变量 k中的值为()。
int k=3,s[2];
s[0]=k; k=s[1]*10;
A.不定值
B.33
C.30
10.以下程序的输出结果是()
main()
{
int i,a[10];
for(i=9;i>=0;i--) a[i]=10-i;
}
A.ABC
B.ABC9
C.123456ABC
for(i=0;i<N;i++) putchar(c[i]);
printf("\n");
}
40.运行下面的程序,如果从键盘上输入:ABC时,输出的结果是()。
#include<string.h>
main()
{
charss[10]="12345";
strcat(ss,"6789");
gets(ss);printf("%s\n",ss);
4. 以下对一维数组 m进行正确初始化的是()。
A.intm[10]=(0,0,0,0) ;
B.intm[10]={};
C.intm[]={0};
D.intm[10]={10*2};
5. 若有定义:int bb[8];。则以下表达式中不能代表数组元 bb[1]的地址的是()。
A.&bb[0]+1
B.&bb[1]
相关文档
最新文档