=0;i--)//通过下标引用顺序实现逆序printf("%d",a[i]);return0;}2、输入一个整数m,然后输入m个整数,存放" />

C语言一维数组练习题及参考程序

4.1习题

1、输入10个整数,然后将这10个整数逆序输出。

#include

int main()

{

int i;

int a[10];

printf("Input data: ");

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

scanf("%d",&a[i]);

printf("Output data: ");

for(i=9;i>=0;i--) //通过下标引用顺序实现逆序

printf("%d ",a[i]);

return 0;

}

2、输入一个整数m,然后输入m个整数,存放在数组a中;再输入一个整数n,然后输入

n个整数,存放在数组b中。找出a和b两数组的非共有元素,存放在数组c中并输出。

(m和n的值不超过20)

#include

int main()

{

int a[20], b[20], c[20];//假定元素值不超过20

int m, n, i, j, k=0;

scanf("%d", &m);

for(i=0; i

scanf("%d", &a[i]);

scanf("%d", &n);

for(i=0; i

scanf("%d", &b[i]);

for(i=0; i

{

for(j=0; j

{

if(a[i]==b[j])

break;

}

if(j>=n)//不是共同元素

{

c[k]=a[i];

k++;//为存放下一个元素做准备

}

}

for(i=0; i

{

for(j=0; j

{

if(b[i]==a[j])

break;

}

if(j>=m)

{

c[k]=b[i];

k++;

}

}

for(i=0; i

printf(" %d", c[i]);

printf(“\n”);

return 0;

}

3、输入N个整数(N定义为常量),将最小值与第一个数交换,最大值与最后一个数交换。

#include

#define N 10

int main()

{

int i,min,max,temp;

int a[N];

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

scanf("%d",&a[i]);

min = 0;

max = 0;

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

{

if ( a[i] < a[min] )

min=i ;

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

max=i ;

}

temp = a[0];

a[0] = a[min];

a[min] = temp;

temp = a[N-1];

a[N-1] = a[max];

a[max] = temp;

printf("After swapped:");

for(i=0; i

printf("%4d ", a[i]);

return 0;

}

4、输入一个整数序列,遇到0结束。统计并输出序列中出现次数最多的整数及其出现次数。#include

int main()

{

int a[1000];

int count=0;

int max = 0, maxcount = 0;

int i,j;

prin tf(“Input integers:\n”);

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

{

scanf("%d", &a[i]);

if(a[i]==0) break;

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

{

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

{

count++;

}

}

if (count > maxcount)

{

maxcount = count;

max = a[i];

}

count = 0;

}

printf("出现次数最多的数是%d,共出现%d次\n", max, maxcount);

return 0;

}

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

第六~第八章基本概念练习题 第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 10 int a[N]; 4. 若二维数组a有m列,则在a[i][j]之前的元素个数为 A. j*m+i B. i*m+j C. i*m+j-1 D. 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) 20 7.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( ) A. 2 B. 3 C. 4 D.无确定值 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]);

C语言程序设计习题答案(6-13)

C语言程序设计习题答案 习题六数组 一、选择题 1~10: BDBCD CDBAB 11~20:BCDCC DABBC 21~30:CCADC ABBCB 31~41:BDDDD CDCCB A 二、填空题 1. 9 、 0 2.先行后列 3.连续的存储空间中 4. QuickC 5. (c=getchar( )) 、‘A’+i或65+i 6. ‘\0’、 str1[i]-str2[i] 7. CDABC 8. 10 14 9. 6 10. 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 11. 600 12. AzyD 13 4 some string *test 三、编程题 1. 定义一个有20个元素的整型数组,分别求出下标为奇数和偶数的元素的平均值。 答:程序参见文件Cprogram\ #include "" #include "" main() {int i,s0=0,s1=0,a[20]; for(i=0;i<20;i++) a[i]=rand()%100; for(i=0;i<20;i+=2) {printf("%3d",a[i]); s0=s0+a[i]; } printf(" sum is:%d ave=%f\n",s0,s0/; for(i=1;i<20;i+=2) {printf("%3d",a[i]); s1=s1+a[i]; } printf(" sum is:%d ave=%f\n",s1,s1/; }

2. 设有一个整型数组,另输入一个整数,编程查找这个整数是否在数组中出现过,若出现,则输出第一次出现的位置,否则,输出no found。 答:程序参见文件Cprogram\ #include "" #include "" main() {int i,s,a[20]; for(i=0;i<20;i++) a[i]=rand()%100; scanf("%d",&s); for(i=0;i<20;i++) if(a[i]==s) {printf("found:a[%d]=%d\n",i,a[i]); break; } if(i==20) printf("no found\n"); for(i=0;i<20;i++) printf("%3d",a[i]); printf("\n"); } 3. 设有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。 答:程序参见文件Cprogram\ #include "" #define N 10 main() {int i, j, s, a[N]={17,15,13,11,9,7,5,3,1}; 编一程序,从一个已排好序的数组中删去某个位置上的元素。 答:程序参见文件Cprogram\ #include "" #define N 10 main() {int i, j, a[N]={1,3,5,7,9,11,13,15,17,19}; for(i=0;i

c语言 数组习题

第7章数组习题A卷 1. 单项选择题 (1) int a[4]={5,3,8,9};其中 a[3]的值为(D )。 D A. 5 B. 3 C. 8 D. 9 (2) 以下 4 个字符串函数中,( A)所在的头文件与其他 3 个不同。 A. gets B. strcpy C. strlen D. strcmp (3) 以下 4 个数组定义中,( D)是错误的。 A. int a[7]; B. #define N 5 long b[N]; C. char c[5]; D. int n,d[n]; (4) 对字符数组进行初始化,(B )形式是错误。 A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123; C. char c3[ ]={ '1', '2', '3', '\0'}; D. char c4[ ]="123"; (5) 在数组中,数组名表示(A )。 A. 数组第 1 个元素的首地址 B.数组第 2 个元素的首地址 C. 数组所有元素的首地址 D.数组最后 1 个元素的首地址 (6) 若有以下数组说明,则数值最小的和最大的元素下标分别是(B ) int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; A. 1,12 B. 0,11 C. 1,11 D. 0,12 (7) 若有以下说明,则数值为 4 的表达式是(D )。 int 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)); 的输出是( A)。 A. 6 B. 7 C. 11 D. 12 (9) 设有定义:char s[12] = "string"; 则printf("%d\n ", sizeof(s)); 的输出是( B)。 A. 6 B. 7 C. 11 D. 12 (10) 合法的数组定义是( A)。 A. char 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} (11) 合法的数组定义是(D )。 A. int a[3][ ]={0,1,2,3,4,5}; B. int a[ ][3] ={0,1,2,3,4}; C. int a[2][3]={0,1,2,3,4,5,6}; D. int a[2][3]={0,1,2,3,4,5}; (12) 下列定义的字符数组中,输出 printf("%s\n", str[2]) ;的输出是 (C )。 static str[3][20] ={ "basic", "foxpro", "windows"}; A. basic B. foxpro C. windows D. 输出语句出错 (14) 下列各语句定义了数组,其中哪一个是不正确的( C)。 A. char a[3][10]={"China","American","Asia"}; B. int x[2][2]={1,2,3,4}; C. float x[2][ ]={1,2,4,6,8,10}; D. int m[][3]={1,2,3,4,5,6};

C语言编程练习之数组

1.输出整数各位数字 本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。 输入格式: 输入在一行中给出一个长整型范围内的非负整数。 输出格式: 从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。 输入样例: 123456 输出样例: 1 2 3 4 5 6 (1)编程思路。 将一个非负整数number各位上的数字依次分离出来,其操作步骤为: 1)分离出number的个位数,即number%10。 2)将number除以10,作为新的number,即新的number丢掉了个位数。 3)如果number等于0,分离完毕,结束。否则,转第1)步,继续显示。 例如,number=1234,number%10=4,number=1234/10=123,得到数字4; number%10=3,number=123/10=12,得到数字3; number%10=2,number=12/10=1,得到数字2; number%10=1,number=1/10=0,得到数字1;结束。 将分离的各位数字依次存储到数组a中,然后逆序输出数组a中保存的各元素值即可。 (2)源程序。 #include int main() { long long n; scanf("%lld",&n); int a[20]={0},cnt=0; while (n!=0) { a[cnt++]=n%10; n=n/10; } if (cnt==0) printf("0 \n"); else {

for (int i=cnt-1;i>=0;i--) printf("%d ",a[i]); printf("\n"); } return 0; } 2.冒泡法排序 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N?1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。 本题要求对任意给定的K(a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } (2)源程序。 #include int main() {

C语言数组练习及答案

第四部分数组 4.1 选择题 1. 以下关于数组的描述正确的是(c )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小是可变的,可以有不同的类型的数组元素 2. 以下对一维整型数组a的正确说明是(d )。 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]; 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]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在存中所占字节数是(d )。 A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: 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",________ ); ┇

C语言实验__一维数组

实验6 一维数组 实验要求: 使用Visual C++ 6.0开发环境,完成以下习题。 1. (此题可不使用数组)输出1~100之间的不能被7整除的数。(要求使用continue语句,如果其能被7整除则continue)。源程序保存为6-1.c。运行效果截图保存为6-1p.jpg。 2. 对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。源程序保存为6-2.c。运行效果截图保存为6-2p.jpg。 3. 定义一个100个元素的数组,依次赋值为1 ~ 100。先输出其中能被3整除的数。再输出其中能被5整除的数。(注意数组的下标是从0开始。)源程序保存为6-3.c。运行效果截图保存为6-3p.jpg。 4. 让用户输入学生的人数n,然后输入这n个学生的语文成绩,保存在数组中。然后分别计算输出: (1)统计语文成绩平均分。 (2)不及格的学生序号及成绩、并统计不及格人数。 (3)最高分的成绩及最高分的学生的序号。 源程序保存为6-4.c。运行效果截图保存为6-4p.jpg。 5. 定义一个数组A存放6个学生的高数成绩,定义一个数组B存放这6个学生的英语成绩, 再定义一个数组C存放这6个学生的C++成绩。在输入时,要求逐个学生的三门课成绩输入(即先输入第1个学生的三门课成绩,再输入第2个学生的三门课成绩,以此类推)。求这6个同学三科的总分存放在数组D中,并输出。源程序保存为6-5.c。运行效果截图保存为6-5p.jpg。 6. 编程实现:简单版成绩管理系统1。 程序首先显示菜单,让用户选择1则添加一个学生的的记录,选择2则查看一个学生的记录,选择3则修改一个学生的记录,选择4则浏览所有学生记录。每个学生记录由其学号、高数成绩、英语成绩、C++成绩组成。(提示:定义一个100个元素的数组,存放学生的学号;定义一个100个元素的数组存放高数成绩,定义一个100个元素的数组存放英语成绩;定义一个100个元素的数组存放C++成绩;定义一个变量记录当前已经总共添加了多少个学生) 当用户选择1之后,让用户输入要添加的学生的学号、高数成绩、英语成绩、C++成绩。 当用户选择2之后,先让用户输入要查看的学生学号,然后输出其高数、英语、C++成绩。 当用户选择3之后,先让用户输入要修改的学生学号,然后依次让用户重新输入这个学生的高数、英语、C++成绩、 当用户选择4之后,依次输出每个学生的学号、高数、英语、C++成绩。 源程序保存为6-6.c。运行效果截图保存为6-6p.jpg。

C语言一维数组练习题及参考程序

4.1习题 1、输入10个整数,然后将这10个整数逆序输出。 #include int main() { int i; int a[10]; printf("Input data: "); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("Output data: "); for(i=9;i>=0;i--) //通过下标引用顺序实现逆序 printf("%d ",a[i]); return 0; } 2、输入一个整数m,然后输入m个整数,存放在数组a中;再输入一个整数n,然后输入 n个整数,存放在数组b中。找出a和b两数组的非共有元素,存放在数组c中并输出。 (m和n的值不超过20) #include int main() { int a[20], b[20], c[20];//假定元素值不超过20 int m, n, i, j, k=0; scanf("%d", &m); for(i=0; i=n)//不是共同元素 { c[k]=a[i]; k++;//为存放下一个元素做准备 } } for(i=0; i

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语言-数组-实验题目及答案

实验六数组程序设计 【实验目的】 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");

C语言数组练习及答案

第四部分数组 4.1选择题 1.以下关于数组的描述正确的是(c} A.数组的大小是固定的,但可以有不同的类型的数组元素 B.数组的大小是可变的,但所有数组元素的类型必须相同 C.数组的大小是固定的,所有数组元素的类型必须相同 D.数组的大小是可变的,可以有不同的类型的数组元素 2.以下对一维整型数组a的正确说明是(d)。 A.inta(10); C.intn; scanf("%d",&n); inta[n]; B.intn=10,a[n]; D.#defineSIZE10inta[SIZE]; 3.在C语言中,引用数组元素时,其数组下标的数据类型允许是(c)。 A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 页脚内容1

4.以下对一维数组m进行正确初始化的是(c)。 A.intm[10]=(0,0,0,0); B.intm[10]={}; C.intm[]={0}; D.intm[10]={10*2}; 5.若有定义:intbb[8];。则以下表达式中不能代表数组元bb[1的地址的是(c> A.&bb[0]+1 B.&bb[1] C.&bb[0]++ D.bb+1 6.假定int类型变量占用两个字节,具有定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是(d) A.3 B.6 C.10 D.20 7.若有以下说明: inta[12]={1,2,3,4,5,6,7,8,9,10,11,12}; charc='a',d,g; 则数值为4的表达式是(d) A.a[g-c] B.a[4] C.a['d'-'c'] D.a['d'-c] 8.以下程序段给数组所有的元素输入数据,请选择正确答案填入(a)。 #includemain() { inta[10],i=0; while(i<10)scanf("%d",); 页脚内容2 ) A.a+(i++) B.&a[i+1] C.a+i D.&a[++i] 9.执行下面的程序段后,变量k中的值为(a)。 intk=3,s[2];

c语言数组试题及答案

c语言数组试题及答案 1. 请编写一个程序,要求用户输入10个整数,然后将其存储在一个数组中,并输出这个数组的内容。 答案: ```c #include 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 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 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]);

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.42 B.56 C.60 D.45 正确答案:D 2、以下叙述中错误的是()。 A.数组名代表的是数组所占存储区的首地址,其值不可改变 B.只有double类型数组,不可以直接用数组名对数组进行整体输入或输出 C.可以通过赋初值的方式确定数组元素的个数 D.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 正确答案:B 3、以下能正确定义一维数组的选项是()。 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 4 B.3 3 C.3 4 D.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 3 0 5 6 0 0 9

C语言数组练习题

C程序设计(数组)12.23 【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是 C 。 A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 【题2】C语言中,数组名代表B A.数组全部元素的值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】合法的数组定义是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,4,5}; 【题5】若有定义和语句:char s[10]; s=”abcd”; printf(“%s\n”,s); 则结果是(以下u代表空格)D A.输出abcd B.输出a C.输出abcd u u u u u D.编译不通过 【题6】有以下语句,则下面是正确的描述B

static char x [ ]=“12345”;static char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’}; A.x数组和y数组的长度相同。A B.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 。 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)因为数组长度与初值的个数不相同,所以此语句不正确【题11】若已定义数组:float a[8];则下列对数组元素引用正确的是 A 。

c语言数组练习题及答案

/* 4.16 5*5矩阵中每行的绝对值最大值,与同行对角线交换*/ #include "stdio.h" #include "math.h" void main() { int a[5][5]={{1,2,3,4,-5},{3,5,-2,4,2},{4,1,2,3,-2}, {1,3,- 2,4,6},{2,2,0,7,4}} ; int i,k,max,sub,temp; /* i 循环变量,控制行,k 循环变量,控制列,max 当前最大绝对值,sub 当前最大绝对值元素的下标 temp 临时用于交换的变量*/ printf("交换之前,输出\n"); /*交换之前,输出*/ for(i=0;i<=4;i++) { for(k=0;k<=4;k++) printf("%4d",a[i][k]); printf("\n"); }

/*交换*/ for(i=0;i<=4;i++) { /*假设第一个元素最大*/ max=fabs(a[i][0]); sub=0; /*寻找绝对值最大的元素记下下标*/ for(k=1;k<=4;k++) { if(fabs(a[i][k])>max) { max=fabs(a[i][k]); sub=k; } } /*交换*/ temp=a[i][i]; a[i][i]=a[i][sub]; a[i][sub]=temp; } /*交换之后,输出*/ printf("交换之后,输出\n");

for(i=0;i<=4;i++) { for(k=0;k<=4;k++) printf("%4d",a[i][k]); printf("\n"); } } /* 4.17 在一个一维数组中存放任意4个数,如:5,1,8,6,生成如下矩阵5 5 5 5 5 5 5 5 1 1 1 1 1 5 5 1 8 8 8 1 5 5 1 8 6 8 1 5 5 1 8 8 8 1 5 5 1 1 1 1 1 5 5 5 5 5 5 5 5 */

c语言数组编程练习题

c语言数组编程练习题 随着计算机科学和编程语言的发展,C语言一直被广泛使用于软件开发和算法设计。在C语言中,数组是一种非常重要的数据结构,用于存储和操作一系列相同类型的数据。通过编程练习题,我们可以让自己更好地理解和掌握数组的使用。接下来,让我们来看一些具有挑战性的C语言数组编程练习题。 1. 倒置数组 请编写一个函数,将一个整数数组中的元素按逆序进行排列,并将结果写入另一个数组。例如,给定输入数组为{1, 2, 3, 4, 5},则输出数组应为{5, 4, 3, 2, 1}。 解决这个问题的一种方法是使用两个指针,一个指向数组的起始位置,另一个指向数组的末尾位置,然后逐个交换它们所指向的元素,直到指针相遇。 2. 查找数组中的最大元素 请编写一个函数,从给定的整数数组中查找并返回最大的元素。例如,给定输入数组为{4, 8, 2, 10, 5},则输出应为10。 解决这个问题的一种方法是将数组的第一个元素设置为最大值,然后遍历数组,依次比较每个元素与当前最大值的大小,如果遇到更大的元素,则更新最大值。 3. 数组元素的平均值

请编写一个函数,计算一个整数数组中所有元素的平均值,并返回 结果。例如,给定输入数组为{2, 4, 6, 8, 10},则输出应为6。 解决这个问题的一种方法是遍历数组,将每个元素累加起来,然后 将累加值除以数组的长度,即可得到平均值。 4. 查找数组中的重复元素 请编写一个函数,从给定的整数数组中查找并返回所有重复的元素。例如,给定输入数组为{1, 2, 3, 2, 4, 3},则输出应为{2, 3}。 解决这个问题的一种方法是使用嵌套循环,依次比较数组中的每个 元素与其他元素是否相同,如果相同且尚未添加到结果数组中,则将 其添加到结果数组中。 5. 数组元素的移动 请编写一个函数,将给定的整数数组中的所有0元素移到数组的末尾,并保持其他元素的相对顺序不变。例如,给定输入数组为{0, 1, 0, 3, 12},则输出应为{1, 3, 12, 0, 0}。 解决这个问题的一种方法是使用两个指针,一个指向数组的当前位置,另一个指向最后一个非零元素的位置。遍历数组,将非零元素依 次覆盖到指针所指的位置,并将指针向前移动,最后将剩余位置上的 元素设置为0。 通过以上几个具有挑战性的C语言数组编程练习题,我们可以加深 对数组的理解,并提高对C语言编程的熟练度。虽然这些题目可能有 一定的难度,但通过解题过程中的思考和实践,我们可以锻炼自己的

C语言数组典型例题分析与解答

数组练习解答 1 定义一个名为a的单精度实型一维数组,长度为4,所有元素的初值均为0的数定义语句是________________ 【分析】按照一般数据定义语句的格式,可以直接写出方法一(参看答案);考虑到所有元素均赋初值时可以省略数组长度,可以写出方法二(参看答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初值的元素均有空值(对数值型数组来说,初值为0),可以写出方法三(参看答案);考虑到选用静态型,不赋初值所有元素也自动赋予。空值(对数值型数组来说,初值为0),可以写出方法四(参看答案)。 【答案】方法一:float a[4]={0.0,0.0,0.0,0.0}; 方法二:float a[]={ 0.0,0.0,0.0,0.0}; 方法三:float a[4]= {0.0}; 方法四:static float [4]; 2 下列数组定义语句中,错误的是() ①char x[1]='a';②auto char x[1]={0}; ③static char x[l];④char x[l]; 【分析】显然答案①中给字符型数组赋初值的格式不对(不能直接赋予字符常量,必须用花括号括住),所以备选答案①是符合题意的答案。 【答案】① 3 用"冒泡排序法"对n个数据排序,需要进行n一1 步。其中第k步的任务是:自下而上,相邻两数比较,小者调上;该操作反复执行n-k次。现在假设有4个数据:4、l、3、2要排序,假定4为上、2为下,则利用"冒泡排序法"执行第2步后的结果是_________________。【分析】开始排序前的排列执行第1步后的排列执行第2步后的排列 4 1 1 1 4 2 3 2 4 2 3 3 【答案】l、2、4、3 4 用"选择排序法"对n个数据排序,需要进行n-1步。其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。现在假设有4个数据:4、1、3、2要排序,则利用"冒泡排序法"执行第2步后的结果是______________________。 【分析】开始排序前的排列为: 4 1 3 2 执行第1步后的排列为: 1 4 3 2 执行第2步后的排列为: 1 2 3 4 【答案】1、2、3、4 5 下列数组定义语句中,正确的是() ①int a[][]={1,2,3,4,5,6};②char a[2]「3]='a','b'; ③int a[][3]= {1,2,3,4,5,6};④static int a[][]={{1,2,3},{4,5,6}}; 【分析】C语言规定,二维数组定义时不允许省略第二维的长度,所以备选答案①④是错误的。C语言还规定,定义字符型数组时不允许直接使用"字符常量"的方式赋初值,所以备选答案②也是错误的。显然备选答案③符合题意。【答案】③ 6 定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句是() ①char s[]={‘1','2','3','\0 '};②char s「」={"123"};

c语言数组习题集

第7章数组习题 A卷1. 单项选择题 (1) int a[4]={5,3,8,9};其中a[3]的值为(D )。 D A. 5 B. 3 C. 8 D. 9 (2) 以下4 个字符串函数中,( A)所在的头文件与其他3 个不同。 A. gets B. strcpy C. strlen D. strcmp (3) 以下4 个数组定义中,( D)是错误的。 A. int a[7]; B. #define N 5 long b[N]; C. char c[5]; D. int n,d[n]; (4) 对字符数组进行初始化,(B )形式是错误。 A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123; C. char c3[ ]={ '1', '2', '3', '\0'}; D. char c4[ ]="123"; (5) 在数组中,数组名表示(A )。 A. 数组第1 个元素的首地址 B.数组第2 个元素的首地址 C. 数组所有元素的首地址 D.数组最后1 个元素的首地址 (6) 若有以下数组说明,则数值最小的和最大的元素下标分别是(B ) int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; A. 1,12 B. 0,11 C. 1,11 D. 0,12 (7) 若有以下说明,则数值为4 的表达式是(D )。 int 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)); 的输出是( A)。

(完整版)C语言题库数组

数组 一、选择题 1、假定int 类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组X在内存中所占字节数是(B)。 A 3 B 6 C 10 D 20 2、执行下面的程序段后,变量k 中的值为(A)。 int k=3, s[2]; s[0]=k; k=s[1]*10; A 不定值 B 33 C 30 D 10 3、设有数组定义: char array [ ]="China"; 则数组array 所占的空间为(C)。 A 4 个字节 B 5 个字节 C 6 个字节有0/的结束标志 D 7 个字节 4、下列描述中不正确的是 C

A 字符型数组中可以存放字符串 B 可以对字符型数组进行整体输入、输出 C 可以对整型数组进行整体输入、输出 D 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值 5、给出以下定义 char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为 C A 数组X 和数组Y 等价 B 数组x 和数组Y 的长度相同 C 数组X 的长度大于数组Y 的长度 D 数组X 的长度小于数组Y 的长度 6、下述对C 语言字符数组的描术中错误的是 C A 字符数组可以存放字符串 B 字符数组中的字符串可以整体输入、输出 C 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 D 不可以用关系运算符对字符数组中的字符串进行比较 7、定义如下变量和数组 int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是 C

相关文档
最新文档