一维、二维数组及应用程序设计习题

一维、二维数组及应用程序设计习题

1、 【字符统计问题】

题目描述:试统计用户键盘输入的一串英文字符中每种英文字符个数。

题目要求:⑴相同英文字符的大小写形式视为同一种统计对象;⑵遇到任意非英文字符时统计终止;⑶输出数据时每行仅输出10个数据。

输入数据:abcdeABCDElKlhmn2

输出数据:A(2) B(2) C(2) D(2) E(2) F(0) G(0) H(1) I(0) J(0)

K(1) L(0) M(1) N(1) O(0) P(0) Q(0) R(0) S(0) T(0) U(0) V(0) W(0) X(0) Y(0) Z(0)

2、 【约瑟夫(猴子选大王)问题】

题目描述:有M(1000以内)个猴子围成一圈,每个有一个编号,编号从1到M 。打算从中选出一个大王。经过协商,决定选大王的规则如下:从第一个开始,每隔N(任意正整数)个,数到的猴子出圈,最后剩下来的就是大王。

题目要求:从键盘输入M 、N(均为正整数),试编程计算哪一个编号的猴子将成为大王。 输入数据:15 3 输出数据:5 200 55 93 3、 【行列互换问题】

题目描述:试编程将一个二维数组行和列元素互换,存到另一个二维数组中。例如:

A =

B = 4、 【矩阵初始化问题】

题目描述:矩阵是线性代数中的重要概念及研究工具,在计算机算法设计中,我们常常选用二维数组之类的数据结构来描述矩阵。下图是两个4×4的下三角方阵(即行列相等)初始化后的状态,请编程输出任意方阵(用户从键盘输入方阵的行列值)的这类初始化状态。

A 4×4 =

B 4×4 =

5、 【杨辉三角问题】

题目描述:杨辉三角(出自其1261年所著的《详解九章算法》,也叫贾宪三角或帕斯卡三角),它可以简单解释为由两个未知数和的幂次方运算后按某个未知数的降幂排列(或另一未知数的升幂排列)后的系数表(二项式定理)。比如(x+y)0

=1,系数为(1);(x+y)1

=x+y ,系数为(1、1);(x+y)2

=x 2

+2xy+y 2

,系数为(1、2、1);(x+y)3

=x 3

+3x 2

y+3xy 2

+y 3

,系数为(1、3、3、1)以及四次、五次、……等运算后所得的系数表,如下图(仅举5行):

题目要求:⑴利用一维数组试求用户给定行数的杨辉三角形;⑵利用二维数组试求用户给定行数的杨辉三角形(请尽力严格按照上图要求的输出格式)。

输入数据:5 输出结果:如上图如示。

1 2 3

4 5 6

1 4

2 5

3 6

1

1 1

1 2 1

1 3 3 1 1 4 6 4 1

1 0 0 0

2

3 0 0

4

5

6 0

7 8 9 10

0 0 0 7 0 0 4 8 0 2 5 9 1 3 6 10

一维数组程序设计习题参考答案

2、数组元素的移动问题

#include

void main()

{

int i,a[10],b[10];

for (i=0;i<10;i++)

cin>>a[i];

for (i=0;i<10;i++)

b[i]=a[(i+1)%10];

for (i=0;i<10;i++)

cout<

}

3、斐波那契数列问题

#include

void main()

{

int i,a[20];

a[0]=1;a[1]=1;

for (i=2;i<20;i++)

a[i]=a[i-1]+a[i-2];

for (i=0;i<20;i++)

cout<

}

4、求和问题

#include

void main()

{

int i;

long int x[10]={1,8,5,7,2,99,34,67,2589,19}; long int y[10]={2,22,14,3,7,9,11,8,132,30}; long int s=0;

for (i=0;i<10;i++)

s+=x[i]*y[i];

cout<<"s="<

}

5、进制转换问题

#include

void main()

{

long int x;

int i=0,j;

int a[20];

cout<<"x=";

cin>>x;

while (x)

{

a[i]=x%2; x/=2;

i++;

}

for (j=i-1;j>=0;j--)

cout<

}

6、圆环找数问题

#include

void main()

{

int i,j,max=1,s=0;

int

a[]={11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7 ,13,15};

for (i=0;i

{ s=a[i]+a[(i+1)%20]+a[(i+2)%20]+a[(i+3)%20];

if (s>max) { max=s;j=i;}

}

cout<<"max="<

"<<"j="<

}

7-1、排序问题(交换排序法)

#include

void main()

{

int i,j,t,a[10];

for (i=0;i<10;i++)

cin>>a[i];

for (i=0;i<9;i++)

for (j=i+1;j<10;j++)

if (a[i]>a[j])

{

t=a[i];a[i]=a[j];a[j]=t;

}

for (i=0;i<10;i++)

cout<

}

7-2、排序问题(选择排序法)

#include

void main()

{

int i,j,k,t,a[10];

for (i=0;i<10;i++)

cin>>a[i];

for (i=0;i<9;i++)

{

k=i;

for (j=i+1;j<10;j++)

if (a[k]>a[j]) k=j;

if (k!=i)

{

t=a[i];a[i]=a[k];a[k]=t;

}

}

for (i=0;i<10;i++)

cout<

}

8、筛选法求素数问题(程序不是最优)

#include

void main()

{

int i,j,k=0,a[101];

for (i=2;i<101;i++)

a[i]=1;

for (i=2;i<101;i++)

if (a[i]==1)

for (j=i+1;j<101;j++)

if (j%i==0) a[j]=0;

for (i=2;i<101;i++)

if (a[i])

{

cout<

k++;

if (k%5==0)

cout<

}

}

C语言程序设计习题5

习题5参考解答 1.数组是相同数据类型的集合,分为一维数组、二维数组及多维数组。在什么情况下使用数组?在什么情况下使用一维数组? 解:当需要处理的数据为相同类型的数据的集合时,可以使用数组。如果这些数据的描述用一个量就可以,这时就用一维数组。例如,一组学生的学号,就可以使用一维数组。 2.数组元素又称为下标变量,数组元素的下标有何意义? 解:下标的意义是对数组的各个数组元素进行标识和区分。由数组名和下标结合起来形成数组元素的名字。 3.使用字符数组来存储字符串应注意什么问题? 解:需要注意的问题是字符数组在存储字符串时是以'\0'作为结束标记的。这个'\0'是系统自动加上的。所以字符数组的长度需要比它要存储的字符串的长度至少多1。例如,要存储字符串"abcd",因为它的长度为4,所以存储它的字符数组的长度至少为5。 4.常用的字符处理函数有哪些?

解:常用的字符处理函数有以下8个。 (1)puts(字符串):作用为将一个字符串输出到终端。 (2)gets(字符数组):作用为从终端输入一个字符串到字符数组,并且得一个函数值。 (3)strcat(字符串1,字符串2):作用为进行字符串的连接。 (4)strcpy(字符串1,字符串2):作用为进行字符串的复制。 (5)strcmp(字符串1,字符串2):作用为进行字符串的比较。 (6)strlen(字符串):作用为求字符串的长度。 (7)strlwr(字符串):作用为将字符串中的大写字母转换成小写字母。 (8)strupr(字符串):作用为将字符串中的小写字母转换成大写字母。 5.随机产生10个两位整数存储到一个一维数组中,找出其中的最大数。 解: #include

数组编程练习(带答案)

数组编程练习 1、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 解: #include #include #define N 10 int main() { int a[N],i; for(i=0;i #include #define N 10 int main() { int a[N],i,max,min,sum; float ave; for(i=0;imax) { max=a[i]; } if(a[i] #include #define N 10 int main() { int a[N],i,j,t; for(i=0;i

一维、二维数组及应用程序设计习题

一维、二维数组及应用程序设计习题 1、 【字符统计问题】 题目描述:试统计用户键盘输入的一串英文字符中每种英文字符个数。 题目要求:⑴相同英文字符的大小写形式视为同一种统计对象;⑵遇到任意非英文字符时统计终止;⑶输出数据时每行仅输出10个数据。 输入数据:abcdeABCDElKlhmn2 输出数据:A(2) B(2) C(2) D(2) E(2) F(0) G(0) H(1) I(0) J(0) K(1) L(0) M(1) N(1) O(0) P(0) Q(0) R(0) S(0) T(0) U(0) V(0) W(0) X(0) Y(0) Z(0) 2、 【约瑟夫(猴子选大王)问题】 题目描述:有M(1000以内)个猴子围成一圈,每个有一个编号,编号从1到M 。打算从中选出一个大王。经过协商,决定选大王的规则如下:从第一个开始,每隔N(任意正整数)个,数到的猴子出圈,最后剩下来的就是大王。 题目要求:从键盘输入M 、N(均为正整数),试编程计算哪一个编号的猴子将成为大王。 输入数据:15 3 输出数据:5 200 55 93 3、 【行列互换问题】 题目描述:试编程将一个二维数组行和列元素互换,存到另一个二维数组中。例如: A = B = 4、 【矩阵初始化问题】 题目描述:矩阵是线性代数中的重要概念及研究工具,在计算机算法设计中,我们常常选用二维数组之类的数据结构来描述矩阵。下图是两个4×4的下三角方阵(即行列相等)初始化后的状态,请编程输出任意方阵(用户从键盘输入方阵的行列值)的这类初始化状态。 A 4×4 = B 4×4 = 5、 【杨辉三角问题】 题目描述:杨辉三角(出自其1261年所著的《详解九章算法》,也叫贾宪三角或帕斯卡三角),它可以简单解释为由两个未知数和的幂次方运算后按某个未知数的降幂排列(或另一未知数的升幂排列)后的系数表(二项式定理)。比如(x+y)0 =1,系数为(1);(x+y)1 =x+y ,系数为(1、1);(x+y)2 =x 2 +2xy+y 2 ,系数为(1、2、1);(x+y)3 =x 3 +3x 2 y+3xy 2 +y 3 ,系数为(1、3、3、1)以及四次、五次、……等运算后所得的系数表,如下图(仅举5行): 题目要求:⑴利用一维数组试求用户给定行数的杨辉三角形;⑵利用二维数组试求用户给定行数的杨辉三角形(请尽力严格按照上图要求的输出格式)。 输入数据:5 输出结果:如上图如示。 1 2 3 4 5 6 1 4 2 5 3 6 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 0 0 0 2 3 0 0 4 5 6 0 7 8 9 10 0 0 0 7 0 0 4 8 0 2 5 9 1 3 6 10

C语言数组试题

第4章 数组 4.1内容概述 本章主要介绍了数值数组和字符数组的定义、初始化、元素引用和数组数据的输入与输出,字符数组实现字符串、字符串函数的实现与调用。指针数组与数组指针定义、元素引用。利用一维数组实现如挑数、排序、求和等实际应用问题。利用二维数组实现矩阵的应用问题。利用字符数组实现字符串的各种操作。本章知识结构如图4.1所示。 图4.1 第4章知识结构图 考核要求:掌握一维数组、二维数组、字符数组和指针数组的定义和初始化;掌握数组元素存储地址计算;掌握数组元素的下标法、指针法引用;掌握字符数组与字符串的区别与联系;掌握有关字符串处理函数的使用方法;能利用一维数组、二维数组解决向量、矩阵等实际应用问题。 重点难点:本章的重点是一维数组、二维数组和字符数组的定义、初始化、元素引用,字符串处理函数的使用。本章的难点是字符串与字符数组的区别,指针数组和数组元素的指针法引用。 核心考点:数组的定义、初始化和数组元素的引用方法,一维数组、二维数组和字符数组的实际应用,字符串的处理方法。 4.2 典型题解析 【例4.1】以下对一维数组a 的定义中正确的是( )。 A. char a(10); B. int a[0..100]; C. int a[5]; D. int k=10;int a[k]; 解析:一维数组定义的一般形式为: 类型标识符 数组名[常量表达式] 其中,常量表达式可以是任意类型,一般为算术表达式,其值表示数组元素的个数,即数组长度。 答案:C 【例4.2】以下对一维数组的定义中不正确的是( )。 A. double x[5]={2.0,4.0,6.0,8.0,10.0}; 数组 数值数组 定义 初始化 元素引用 数组元素输入和输出 指针数组 定义 初始化 应用 字符数组 定义 初始化 元素引用 数组元素输入和输出

C程序设计(数组)习题与答案

C程序设计(数组)习题与答案C程序设计(数组)习题与答案 数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。 1. 习题一:计算数组元素的和 题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。 解题思路: ```c #include 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 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 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;

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.0 B.3 C.4 D.1 7.下面程序段的运行结果是_。(2分) #include 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 9 B.1 4 7 C.3 5 7 D.3 6 9 8.以下对数组s的初始化,错误的是_。(2分) A.char s[5] = { "abc" } ; B.char s[5] = { 'a' , 'b' , 'c' } ; C.char s[5] = "" ; D.char s[5] = "abcde" ; 9.对两个数组a和b进行如下初始化: char a[ ] = "ABCDEF" ; char b[ ] = { 'A' , 'B' , 'C' , 'D' , 'E' , 'F' } ; 则以下叙述正确的是_。(2分) A.a和b数组完全相同 B.a与b长度相同 C.a的长度比b短

C语言-数组-实验题目及答案

实验六数组程序设计 【实验目的】 1、掌握使用一维数组编程方法 2、掌握使用二维数组进行程序设计 【实验内容】 一、上机验证程序,并分析结果 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。1、#include int main() { int a[ ]={1,2,3,4,5} , i, j, s=0 ; j = 1; for ( i = 4 ; i>=0 ; i--) { s = s+ a[i] * j ; j = j * 10 ; } printf(" s= %d \n" , s ); return 0; } 二、程序改错题 1.下面程序的功能,是从键盘输入一个数组〔数组长度为10〕,查找数组中正数的个数。源代码如下,程序中存在错误,请将其改正。 #include int main()

{ int a(10);/*定义数组*/ int count,i;/* i循环变量 count 正数个数*/ for(i=0;i<=10;i++) {/*循环输入*/ scanf("%d",a[i]); } count=1; for(i=0;i<=10;i++) {/*查找正数*/ if(a(i)>0) count++; } printf("数组中正数有:%d个\n",count); return 0; } 三编写程序 1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。#include #define N 30 int main() { float score[N],sum=0,aver; int i; for(i=0;i<30;i++) { scanf("%f",&score[i]); sum=sum+score[i]; } aver=sum/30; printf("平均分为:%.2f\n",aver); for(i=0;iaver) printf("%.2f ",score[i]); printf("\n");

数组练习题

数组练习题 第六章数组 一、填空 1、执行语句:int a[10];可以给a数组分配_______个字节的存储空间。 2、在c语言中,二维数组元素在内存中是按存放的;若有定义:double x[3][5];则x 数组中行下标的下限是;列下标的上限是。 3、若有定义:int a[2][3]={2,4,6,8};则a[1][0]的值是。 4、如果要将一个字符型数组中的字符串拷贝到另一个字符型数组中,应使用的函数是_______。 5、设有n行m列的数组a,假设数组的首地址是从0开始的,则a[i][j]的地址是____。 6、假设定义数组int a[5]; 则该数组的首地址可以表示为_______和________。 7、比较两个字符串的大小的函数是________。 8、下面程序段的运行结果是。 char a[7]=“abcdef”; char b[4]=“ABC”; strcpy(a, b); printf(“%c”, a[5]); 9、下面程序的运行结果是。 main( ) { int i, f[10]; f[0]=f[1]=1; for (i=2; i<10; i++) f[i]=f[i-2]+f[i-1]; for (i=0; i<10; i++) printf("%3d", f[i]); }

10、下面程序段的运行结果是。 char c[5]={…a?, …b?, …\0?, …c?, …\0?}; printf(“%s”, c); 二、选择 1、有下面程序段 char a[3], b[ ]=“China”; a=b; printf(“%s”, a); 则。 A、运行后将输出China B、运行后将输出Ch C、运行后将输出Chi D、编译出错 2、在C语言中,引用数组元素时,其数组下标的数据类型允许是 A、整型常量C、整型常量或整型表达式 B、整型表达式D、任何类型的表达式 3、以下对一维数组a的正确说明是。 A、int a(10); C、int n=10, a[n]; B、int n; D、#define SIZE 10 scanf(“%d”, &n); int a[SIZE]; int a[n]; 4、若有说明:int a[10]; 则对a数组元素的正确引用是。 A、a[10] B、a[3.5] C、a(5) D、a[10-10] 5、以下能对一维数组a进行正确初始化的语句是。 A、int a[10]=(0, 0, 0, 0, 0); C、int a[ ]={0}; B、int a[10]={ }; D、int a[10]={10*1}; 6、对以下说明语句的正确理解是。 int a[5]={6, 7, 8, 9, 10};

《C++数组》习题

《C++数组》习题 学号姓名 一、选择题 1、下列对字符数组进行初始化的语句正确的是 A.char a[]= "Hello"; B.char a[][]= {'H','e','l','l','o'}; C.char a[5]="Hello"; D.char a[2][5]= {"Hello","World"}; 2、以下一维数组a的正确定义是 A.int a(10) ; B.int n=10,a[n]; C.int n; D.#define size 10 cin>>n; int a[size]; int a[n]; 3、以下对二维数组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); 4、执行以下程序后,s的值为 int a[]={5,3,7,2,1,5,4,lO); int s=0,k; for(k=0;k<8;k+=2) s+=*(a+k); A.17 B.27 C.13 D.无定值 5、为了判断两个字符串sl和s2是否相等,应当使用 A.if (s1==s2)

B.if (s1=s2) C.if(strcpy(S1,s2)) D.if(strcmp(s1,s2)==O) 6、有定义int a[2][5];,若a[0][1]的地址为x,则a[0][O]、a[1][3]地址分别为(假设一个整型数据占用两个字节的内存空间): A.x-2,x+14 B.x-1,x+7 C.x+1,x+7 D.x-1,x+14 7、若有定义float a[m][n];,且a[1][1]的地址为x,每个float元素占用4个字节,则a[il[j]的地址为 A.x+4*(i-1)*n+4*(j-1) B.x+(i-1)*n+(j-1) C.x+4*(i-1)*j+(j-1) D.x+4*i*j+4*j 二、填空题 1、char st[20] = "SEU\0\t\\"; cout<

实验6 数组程序设计答案

实验6 数组程序设计 一、实验目的 1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。 2. 掌握字符数组和字符串函数的使用。 3. 掌握与数组有关的算法。 二、实验内容 1.改错题 (1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_1.c 保存。 #include void main() {int n=10,i,sum=0; int a[n]; for(i=0;i<10;i++) { scanf("%d",a[i]); sum=sum+a[i]; } printf("sum=%d\n",sum); } (2)下列程序的功能为:将字符串b 连接到字符串a 。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_2.c 保存。 #include void main( ) { char a[]="wel",b[]="come"; int i,n=0; while(!a[n]) n++; for(i=0;b[i]!='\0';i++) a[n+i]=b[i]; a[n+i]=’\0’; printf("%s\n",a); } (3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_3.c 保存。 #include

#define N 4 #define M 4 main() { int i,j,k,flag1,flag2,a[N][M],max,maxj; for (i=0;imax) if (a[i][j]>=max) { max=a[i][j]; maxj=j; } for (k=0,flag1=1;ka[k][maxj]) flag1=0; if (flag1) { printf("\nThe saddle point is:a[%d][%d]=%d\n",i,maxj,max); flag2=1; } } if (!flag2) printf("\nThere is no saddle point in the Matrix\n"); } 2.程序填空题 (1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。补充完善程序,以实现其功能。程序以文件名sy6_4.c保存。 #include "stdio.h" #define N 10 main() { int a[ ]={0,1,2,3,4,5,6,7,8,9},k; int low=0,high=N-1,mid,find=0; printf("请输入欲查找的值:\n"); scanf("%d",&k); while (low<=high) { mid=(low+high)/2; if(a[mid]==k) { printf("找到位置为:%d\n",mid+1);find=1; } if(a[mid]>k) ___ high=mid-1; _;

C语言程序设计 实验五 数组 答案《西北民大 电气院》

实验五数组 一,实验目的: 1,掌握一维数组和二维数组的定义,赋值和输入输出的方法. 2,掌握字符数组和字符串函数的使用. 3,掌握与数组有关的算法(特别是排序算法). 二,实验准备: 1,复习数组的基本知识. 2,复习字符串数组的特点和常用的字符串处理函数. 3,源程序. 三,实验步骤及内容: 1,编程求两个3*3二维数组的和: #include "stdio.h" main() { int i,j,s=0,k=0,w=0; int a[3][3]={{1,2,3},{1,2,3},{1,2,3}},b[3][3]={{4,5,6},{4,5,6},{4,5,6}}; for(i=0;i<3;i++) for(j=0;j<3;j++) {s=s+a[i][j]; k=k+b[i][j]; } w=s+k; printf("%d\n",w); getch(); } 运行结果: 2,编程计算3*3矩阵两条对角线元素之和: #include "stdio.h" main() { int i,j,s=0,k=0,w=0; int a[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) for(j=0;j<3;j++) if(i+j==2||i==j) k=k+a[i][j]; printf("%d\n",k); getch(); } 运行结果: 3,编写下列问题的源程序并上机调试运行. (1)用选择法对10个整数排序(10个整数用scanf函数输入).(习题6.2) #include "stdio.h" main () {int a[10]; int i,j,k;

第C语言习题 九章(二维数组)第10章

第九章(二维数组) A:二维数组定义 1.定义语句形式: 类型名数组名[常量表达式1][常量表达式2] 如:int a[3][4];(可看成一个矩阵) 在内存中存放顺序为:先放0行,再放1行的元素。 2.在C语言中,可把二维数组看成一个一维数组,每个数组元素又包含有若干个元素的一维数组。 3.C语言系统把a[0]、a[1]、a[2]作为数组名处理的。 B、二维数组元素的引用 引用形式:数组名[下标表达式1][下标2] 要求:(1)下标值必为整数(2)下标不能越界 C、二维数组初始化如:int a[4][3]={{1,2,3,},{…..}} 1.当某一对花括号内的初值个数少于该行中元素的个数时,系统自动给该行后面的元素补初值0 如:int a[4][3]={{1,2},{4,5},{7},{10}}; a[0][2],a[2][1]的初值为0 3.所赋初值行数少于数组行数时,系统自动给后面各行元素补初值0 4.赋初值时省略花括号时如:int a[4][3]={1,2,4,5}; 依照在内存中排列顺序,不足补0 a[0][0]=1 a[0][1]=2 a[0][2]=4 a[1][0]=5 a[1][1] a[1][2] a[2][0] a[2][1] a[2][2] a[3][0] a[3][1] a[3][2] D、通过赋初值定义二维数组大小 1、对于二维数组,只可省略第1个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式(牢记)。 如:书上125页 2、当用下列形式赋初值时: int c[][3]={1,2,3,4,5}; 第一维大小按以下规定: (1)当初值的个数能被第二维的常量表达式除尽时;所得商就是第一维大小 (2)当初值的个数不能被第二维常量表达式除尽时,则:第一维大小:所得商+1 上面:5/3=商1余2 +1=2 E、二维数组定义和数组元素引用举例(见书126页) F、二维数组和数组元素地址 (1)二维数组a由若干一维数组组成, (2)a[0]、a[1]、a[2]都是一维数组名,也是一个地址常量,不能a[0]++等 如定义*p a[I] p=a[I] 合法a[I]=*(a+I) p=*(a+I)合法 (3)二维数组名也是一个地址常量(行指针) (4)数组名a与a[0]的值相同,但基类不同,数组名a基类为具有4个整型元素的数组类型。a+1中1的单位应当是4*2个字节,而不是2个字节。 (5)p=a是不合法的,因为p和a基类不同,也不可a++,a— G、二维数组元素地址 A[I][j]地址的5种表达式: (1)&a[I][j] (2)a[I]+j (3)*(a+I)+j (4)&a[0][0]+4*I+j (5)a[0]+4*I+j

C语言程序设计题目及解答-12

一、判断题<20分> 1. 语句char *p = "Turbo C"的含义是将字符串赋给字符型指针变量p.2分 2. 若指针变量指向一维数组的第一个元素,将指针变量加整数3,即指针后移3个元素. 3. b是一维数组名,数组元素b[1]还可写成*.2分 4. 对二维数组a来说,由于a+1与*的值相等,因此二者的含义是一样的.2分 5. 在二维数组中,行指针是指向一维数组的指针变量.2分 6. 取地址运算符&与指针运算符*的优先级相同,结合方向为自右向左.2分 7. 两个字符串中的字符个数相同时才能进行字符串大小的比较2分 8. 字符串不能用指针进行引用2分 9. char c[]="Very Good"; 是一个合法的为字符串数组赋值的语句.2分 10. char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl".2分 二、选择题<24分> 1.下面程序段的运行结果是< >. [B] 2分 char str[]="ABC",*p=str; printf<"%d\n",*>; A. 67 B. 0 C. 字符′C′的地址 D. 字符′C′ 2.阅读下列程序,则执行后的结果为< >. [B] 2分 #include "stdio.h" int main<> { int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56}; printf<"%x,%x",c[2][2],*<*+1>>; } A. 62,5 B. 3e,6 C. 56,5 D. 3E,6 3.下面程序段的运行结果是< >. [C] 2分 char *s="abcde"; s+=2; printf<"%d",s>; A. cde B. 字符′c′ C. 字符′c′的地址 D. 无确定的输出结果 4.若有变量定义 int x=3,*p;,则下面语句不正确的是< >. [A] 2分 A. p=&; B. p=&x; C. p=&x+1; D. p=&x, p++; 5.指针变量p1、p2类型相同,要使p2、p1指向同一变量,哪一个语句是正确的〔〕.A] 2分 A. p2=*&p1; B. p2=**p1; C. p2=&p1; D. p2=*p1 6.若有语句:char *line[5];,以下叙述中正确的是< >. [A] 2分 A. 定义line是一个数组,每个数组元素是一个基类型为char为指针变量. B. 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组. C. 定义line是一个指针数组,语句中的*号称为间址运算符. D. 定义line是一个指向字符型函数的指针. 7.若有数组定义为int a[10],i; 与a[i]=100 等价的赋值表达式是[B] 2分 A. a+i=100 B. *=100 C. =100 D. &a[i]=100

(完整版)C语言程序设计教程第五章练习题题目

(完整版)C语言程序设计教程第五章练习题题目 单选题 1、关于数组的定义与初始化,下列哪一项是错误的() A.int arr[5] = {1,2,3,4,5}; B.int arr[] = {1,2,3,4,5}; C.int arr[5] = {1,2,3}; D.int arr[5] = {1,2,3,4,5,6}; 2、在定义数组int arr[10]后,下列选项中对arr的引用正确的是() A.arr[10] B.arr[6.3] C.arr(6) D.arr[0] 3、在C语言中,引用数组元素时,其数组下标的数据类型允许是() A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 4、若int arr[5] = {1,2,3}; 则arr[2]的值为() A.1 B.2 C.3 D.null 5、在执行int arr[][3] = {1,2,3,4,5,6}:语句后,arr[1][0]的值为() A.4 B.1 C.2 D.5 6、关于二维数组,下列选项能正确定义并赋初值的是()

A.int n = 5,b[n][n]; B.int a[1][2] = {{1},{3}}; C.int c[2][] = {{1,2},{3,4}}; D.int a[3][2] = {{1,2},{3,4}}; 7、阅读下列程序段: char s[18] = "a book!"; printf("%.4s\n", s); 其输出结果为() A.a book! B.a book C.a bo D.a 8、阅读下列程序: int a[4][4] = { { 1, 3, 5, }, { 2, 4, 6 }, { 3, 5, 7 } }; printf("%d%d%d%d\n", a[0][0], a[1][1], a[2][2], a[3][3]); 正确的输出结果为() A.0650 B.1470 C.5430 D.输出值不定 9、阅读下面程序: int i; int x[4][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; for (i = 0; i<4; i++) printf("%3d", x[i][3 - i]); 下列选项中哪一项是正确的输出结果() A.1 5 9 13 B.1 6 11 16 C.4 7 10 13 D.4 8 12 16

c++数组部分练习题及答案

实验一数组的概念 一、实验目的 1. 掌握数组的概念。 2. 掌握访问一维数组元素的方法。 二、实验内容 1. 编程完成下列要求的操作,实现字符串的存储和修改。 步骤一:将“michael jackson”的名字保存在字符数组name中。 步骤二:打印输出name中的名字。 步骤三:将name中的两个单词的首字符改为大写。 步骤四:再次打印输出name中的名字,比较查看修改是否成功。 #include void main() { // 步骤一:将"michael jackson"的名字保存在字符数组name中。 char name[]="michael jackson"; // 步骤二:打印输出name中的名字。 cout< void main() { const int N=10; int years[N]={16, 3, 7, 6, 22, 13, 7, 6, 14, 8}, salary; cout<<"******** 一维数组的简单应用——根据工龄计算基本工资********\n\n"; cout<<"序号\t工龄\t工资\n"; for(int i=0;i

C语言程序设计实例教程 第2版 习题答案 作者 李红 第6章 数组

6.4 课后习题 6.4.1 项目练习 一.练习目的 1.进一步巩固一维数组的定义与数组元素的引用方法 2.进一步巩固二维数组的定义与数组元素的引用方法 3.进一步巩固字符数组的定义与引用方法 二.练习内容 1.用起泡法对10个数由大到小进行排序。 分析:起泡法的算法思想是,n个数排序,将相邻两个数依次进行比较,将大数调在前头,逐次比较,直至将最小的数移至最后,然后再将n-1个数继续比较,重复上面操作,直至比较完毕。 可采用双重循环实现起泡法排序,外循环控制进行比较的次数,内循环实现找出最小的数,并放在最后位置上(即沉底)。 #include "stdio.h" main() { int a[10]; int i,j,t; printf("请输入10个整数:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]

printf("请输入这10个整数:"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) { if(a[i]==3) printf("3包含于数列中,输入顺序号是:%d",i+1); else printf("3不包含于此数列中"); } getch(); } 3.编程:一个3*5的数组,要求每行都进行降序排列,并求出每行的平均值。#include "stdio.h" #define N 5 #define M 3 main() { int x,i,j,k,t,a[M][N]; float sum=0.0,avg[M]; //输入数组: for(x=0;xa[x][k]) k=j; if(k!=i) { t=a[x][i]; a[x][i]=a[x][k]; a[x][k]=t; } } } for(x=0;x

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 10 scanf("%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};则下面正确的叙述是_____。 A)只有元素a[0][0]可得到初值0 B)此说明语句不正确 C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0 [题6.13]若有说明:int a[3][4];则数组a中各元素_____。

相关文档
最新文档