数组编程练习(带答案)
数组编程练习
1、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
解:
#include
#include
#define N 10
int main()
{
int a[N],i;
for(i=0;i { a[i]=rand()%100; } printf("array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); return 0; } 2、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。求该数组的最大值、最小值、总和和平均值并输出。 解: #include #include #define N 10 int main() { int a[N],i,max,min,sum; float ave; for(i=0;i { a[i]=rand()%100; } printf("array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); max=a[0]; min=a[0]; sum=0; for(i=0;i { sum=sum+a[i]; if(a[i]>max) { max=a[i]; } if(a[i] { min=a[i]; } } ave=(float)sum/N; printf("max=%d,min=%d,sum=%d,ave= %.2f\n",max,min,sum,ave); return 0; } 3、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。按照升序排列并输出。解:(冒泡法) #include #include #define N 10 int main() { int a[N],i,j,t; for(i=0;i { a[i]=rand()%100; } printf("array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=1;i { for(j=0;j { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } printf("the sorted array a:\n"); for(i=0;i printf("%4d",a[i]); printf("\n"); return 0; } 另解:(选择法) #include #include #define N 10 int main() { int a[N],i,j,min_i,t; for(i=0;i { a[i]=rand()%100; } printf("array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=0;i { min_i=i; for(j=i+1;j { if(a[j] { min_i=j; } } t=a[i]; a[i]=a[min_i]; a[min_i]=t; } printf("the sorted array a:\n"); for(i=0;i<10;i++) { printf("%4d",a[i]); } printf("\n"); return 0; } 另解:(比较法) #include #include #define N 10 int main() { int a[N],i,j,t; for(i=0;i { a[i]=rand()%100; } printf("array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=1;i { for(j=i;j { if(a[j] { t=a[i-1]; a[i-1]=a[j]; a[j]=t; } } } printf("the sorted array a:\n"); for(i=0;i<10;i++) { printf("%4d",a[i]); } printf("\n"); return 0; } 4、产生一个由10个元素组成的一维数组并输出,数 组元素由随机数(0-99)构成。编程将逆序数组输出。解: #include #include #define N 10 int main() { int a[N],b[N],i,t; for(i=0;i { a[i]=rand()%100; } printf("array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=0;i { b[i]=a[N-1-i]; } printf("the new array:\n"); for(i=0;i { printf("%4d",b[i]); } printf("\n"); return 0; } 另解: #include #include #define N 10 int main() { int a[N],i,t; for(i=0;i { a[i]=rand()%100; } printf("array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=0;i { t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t; } printf("the new array:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); return 0; } 5、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,按照原来的规律将其插入并输出。 #include #include #define N 10 int main() { int a[N+1],i,j,t,n; for(i=0;i { a[i]=rand()%100; } printf("array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=1;i { for(j=0;j { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } printf("the sorted array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); printf("please input n:\n"); scanf("%d",&n); if(n>a[N-1]) { a[N]=n; } else { for(i=0;i { if(a[i]>n) { for(j=N;j>i;j--) { a[j]=a[j-1]; } a[j]=n; break; } } } printf("the second sorted array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); return 0; } 6、用数组输出Fibonacci数列的前40项 解: #include #define N 40 int main() { int i; int f[N]={1,1}; for(i=2;i { f[i]=f[i-2]+f[i-1]; } for(i=0;i { printf("%12d",f[i]); if((i+1)%5==0) { printf("\n"); } } return 0; } 7、用筛选法求100以内的素数 解: #include #include #define N 100 int main() { int a[N+1],i,j,n=0; for(i=1;i<=N;i++) { a[i]=i; } a[1]=0; for(i=2;i<=N;i++) { for(j=2;j<=(int)sqrt(i);j++) { if(a[i]%j==0) { a[i]=0; } } } for(i=1;i<=N;i++) { if(a[i]!=0) { printf("%4d",a[i]); n++; if(n%10==0) { printf("\n"); } } } printf("\n"); return 0; } 8、产生一个由15个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,输出找不到。 解: #include #include #define N 15 int main() { int a[N],i,j,t,n; for(i=0;i { a[i]=rand()%100; } printf("array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=1;i { for(j=0;j { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } printf("the sorted array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); printf("please input n to look for:\n"); scanf("%d",&n); if(na[N-1]) { printf("not found.\n"); } else { for(i=0;i if(a[i]==n) { printf("has found,its position is %d.\n",i); break; } if(i==N) printf("not found.\n"); } return 0; } 另解: #include #include #define N 15 int main() { int a[N],i,j,t,n,low=0,high=N-1,mid,flag=1; for(i=0;i { a[i]=rand()%100; } printf("array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=1;i { for(j=0;j { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } printf("the sorted array a:\n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); printf("please input n to look for:\n"); scanf("%d",&n); if(na[N-1]) { printf("not found.\n"); } else { do { mid=(low+high)/2; if(a[mid]==n) { printf("has found,its position is %d.\n",mid); flag=0; } else if(a[mid]>n) { high=mid-1; } else { low=mid+1; } }while(flag && high>=low); } if(low>high) { printf("not found.\n"); } return 0; } 9、将一个二维数组(3行4列)的行和列互换(转置),存到另一个二维数组(4行3列)中并输出。 解: #include #include #define M 3 #define N 4 int main() { int a[M][N],b[N][M],i,j; for(i=0;i { for(j=0;j { a[i][j]=rand()%100; } } printf("array a:\n"); for(i=0;i { for(j=0;j { printf("%4d",a[i][j]); } printf("\n"); } for(i=0;i { for(j=0;j { b[j][i]=a[i][j]; } } printf("array b:\n"); for(i=0;i { for(j=0;j { printf("%4d",b[i][j]); } printf("\n"); } return 0; } 10、编程输出杨辉三角(要求输出10行)解: #include #define N 10 int main() { int a[N][N],i,j; for(i=0;i { a[i][0]=1; a[i][i]=1; } for(i=2;i { for(j=1;j { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } printf("yanghui triangle:\n"); for(i=0;i { for(j=0;j<=i;j++) { printf("%6d",a[i][j]); } printf("\n"); } return 0; } 11、编程输入5阶魔方阵。 解: #include #define N 5 int main() { int i,j,k,a[N][N]={0}; i=0; j=N/2; a[i][j]=1; for(k=2;k<=N*N;k++) { i=i-1; j=j+1; if(i==-1) { if(j==N) { i=i+2; j=j-1; } else { i=N-1; } } if(j==N) { j=0; } if(a[i][j]==0) { a[i][j]=k; } else { i=i+2; j=j-1; a[i][j]=k; } } printf(" %d magic square:\n",N); for(i=0;i { for(j=0;j { printf("%4d",a[i][j]); } printf("\n"); } return 0; } 12、找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。可能没有鞍点。 解: #include #define M 4 #define N 5 int main() { int i,j,k,max,maxj,flag; int a[M][N]={{1,2,3,4,5,},{2,4,6,8,10},{3,6,9,1 2,15},{4,8,12,16,20}}; for(i=0;i { for(j=0;j { printf("%4d",a[i][j]); } printf("\n"); } for(i=0;i { max=a[i][0]; maxj=0; for(j=0;j { if(a[i][j]>max) { max=a[i][j]; maxj=j; } } flag=1; for(k=0;k { if(a[k][maxj] { flag=0; } } if(flag) { printf("saddle point is a[%d][%d]=%d\n",i,maxj,max); break; } } if(!flag) { printf("no saddle point.\n"); } return 0; } 13、输入一行字符,统计大写字母、小写字母、数字、空格以及其他字符个数。 解: #include #define N 100 int main() { int i,upp,low,dig,spa,oth; char c[N]; upp=0; low=0; dig=0; spa=0; oth=0; printf("please input a line characters:\n"); gets(c); for(i=0;c[i]!='\0';i++) { if(c[i]>='A' && c[i]<='Z') { upp++; } else if(c[i]>='a' && c[i]<='z') { low++; } else if(c[i]>='0' && c[i]<='9') { dig++; } else if(c[i]==' ') { spa++; } else { oth++; } } printf("upper case: %2d\n",upp); printf("lower case: %2d\n",low); printf("digit: %2d\n",dig); printf("space: %2d\n",spa); printf("other: %2d\n",oth); return 0; } 14、有一行电文,按照下列规律译成密码: A → Z a → z B → Y b → y C → X c → x …… 非字母不变。 解: #include #define N 100 int main() { int i; char c1[N],c2[N]; printf("please input a message:\n"); gets(c1); for(i=0;c1[i]!='\0';i++) { if(c1[i]>='A' && c1[i]<='Z') { c2[i]=155-c1[i]; } else if(c1[i]>='a' && c1[i]<='z') { c2[i]=219-c1[i]; } else { c2[i]=c1[i]; } } c2[i]='\0'; printf("cipher code:\n"); puts(c2); return 0; } 另解: #include #define N 100 int main() { int i; char c1[N]; printf("please input a message:\n"); gets(c1); for(i=0;c1[i]!='\0';i++) { if(c1[i]>='A' && c1[i]<='Z') { c1[i]=155-c1[i]; } else if(c1[i]>='a' && c1[i]<='z') { c1[i]=219-c1[i]; } else { c1[i]=c1[i]; } } printf("cipher code:\n"); puts(c1); return 0; } 15、编写程序,将两个字符串连接起来,不用strcat 函数。 解: #include #define N 100 int main() { int i,j; char s1[N],s2[N]; printf("please input string 1:\n"); gets(s1); printf("please input string 2:\n"); gets(s2); for(i=0;s1[i]!='\0';i++) { ; } for(j=0;s2[j]!='\0';j++) { s1[i+j]=s2[j]; } s1[i+j]='\0'; puts(s1); return 0; } 16、编写程序实现strcpy函数功能。 解: #include #define N 100 void main() { int i; char s1[N],s2[N]; printf("please input string 1:\n"); gets(s1); printf("please input string 2:\n"); gets(s2); for(i=0;s2[i]!='\0';i++) s1[i]=s2[i]; s1[i]='\0'; puts(s1); } 17、编写程序实现strncpy函数功能。 解: #include #define N 100 int main() { int i,n; char s1[N],s2[N]; printf("please input string 1:\n"); gets(s1); printf("please input string 2:\n"); gets(s2); printf("please input n:\n"); scanf("%d",&n); for(i=0;i { s1[i]=s2[i]; } puts(s1); return 0; } 18、编程实现strcmp函数功能。 解: #include #define N 100 int main() { int i,s; char s1[N],s2[N]; printf("please input string 1:\n"); gets(s1); printf("please input string 2:\n"); gets(s2); for(i=0;s1[i]!='\0' || s2[i]!='\0';i++) { if(s1[i]==s2[i]) { continue; } else if(s1[i]>s2[i]) { s=1; break; } else { s=-1; break; } } if(s1[i]=='\0' && s2[i]=='\0') { s=0; } else if(s1[i]=='\0') { s=-1; } else { s=1; } printf("%d\n",s); return 0; } 19、编程实现strlen函数功能。 解: #include #define N 100 int main() { int i,len=0; char s1[N]; printf("please input string:\n"); gets(s1); for(i=0;s1[i]!='\0';i++) { len++; } printf("%d\n",len); return 0; } 第四部分数组 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 C语言(数组) 一、选择题 1. 设有程序: main() { int i,a[11]; printf("给数组赋值:\n"); for (i=0;i<=10;i++) scanf("%d",( )); ... ... printf("输出数组:\n"); for(i=0;i<=10;i++) printf("%d,",( )); } 则在程序中的两个园括号中分别应填入:C A) &a[i]和&a[i] B) a[i]和&a[i] C) &a[i]和a[i] D) a[i]和a[i] 2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ). A) 15 B) 16 C) 30 D) 32 3. 阅读程序: main() { int a[2]={0},i,j,k=2; for(i=0;i 4. 阅读程序: f(int b[],int n) { int i,r=1; for(i=0;i<=n;i++) r=r*b[i]; return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); } 以上程序的输出结果是( D ). A) 720 B) 6 C)24 D) 120 5. 以下定义语句中,错误的是( B ). A) int a[ ] = {6,7,8}; B) int n=5, a[n]; C) char a[ ]= "string"; D) char a[5 ]={'0','1','2','3','4'}; 6. 以下描述中正确的是( D ). A) 数组名后面的常量表达式用一对圆括弧括起来 B) 数组下标从1开始 C) 数组下标的数据类型可以是整型或实型 D) 数组名的规定与变量名相同 7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ). A) scanf("%c",a[0]); B) scanf("%s",&a); C) printf("%c",a[3]); D) printf("%s",a); 8.若定义数组int a[10] ,其最后一个数组元素为( C ). A) a[0] 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 c语言数组练习题 4.1内容概述 本章主要介绍了数值数组和字符数组的定义、初始化、元素引用和数组数据的输入与输出,字符数组实现字符串、字符串函数的实现与调用。指针数组与数组指针定义、元素引用。利用一维数组实现如挑数、排序、求和等实际应用问题。利用二维数组实现矩阵的应用问题。利用字符数组实现字符串的各种操作。本章知识结构如图4.1所示。 定义初始化数值数组元素引用 数组元素输入和输出 定义 初始化数组 字符数组元素引用 数组元素输入和输出 定义 指针数组初始化应用 图4.1 第4章知识结构图 考核要求:掌握一维数组、二维数组、字符数组和指针数组的定义和初始化;掌握数组元素存储地址计算;掌握数组元素的下标法、指针法引用;掌握字符数组与字符串的区别与联系;掌握有关字符串处理函数的使用方法;能利用一维数组、二维数组解决向量、矩阵等实际应用问题。 重点难点:本章的重点是一维数组、二维数组和字符数组的定义、初始化、元素引用,字符串处理函数的使用。本章的难点是字符串与字符数组的区别,指针数组和数组元素的指针法引用。 核心考点:数组的定义、初始化和数组元素的引用方法,一维数组、二维数组和字符数组的实际应用,字符串的处理方法。 4.典型题解析 以下对一维数组a的定义中正确的是。 A. char a; B. inta[0..100]; C. int a[5]; D. int k=10;int a[k]; 解析:一维数组定义的一般形式为: 类型标识符数组名[常量表达式] 其中,常量表达式可以是任意类型,一般为算术表达式,其值表示数组元素的个数,即数组长度。 答案:C 以下对一维数组的定义中不正确的是。 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’}; 数组编程练习 1、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 解: #include 练习4—数组(附答案) 一、基础知识 数组的定义、初始化、引用和遍历 1、定义一个整型数组a,长度为10,全部赋值为0~9,以“%d\t”格式输出所有元素。 2、定义一个整型数组b,长度为6,第1 个元素为2,第3 个元素4,第 4 个元素为5,其它赋值为0,以“%d\t”格式输出所有元素。 3、定义一个浮点型数组c,赋值为{1.7, 2.13, 4.2, 5.16, 7.3333, 3.5, 6.768, 11.11},以“%.4f\t”格式输出c 中所有元素。 4、定义一个整数数组d,长度为6,把上述数组b 中的元素复制到 d 中,使得数组b 和数组d 中存放相同元素,以“%d\t”格式先打印a 中的元素,接着打印b中的元素。 5、定义一个整型数组e,长度为5,依次从控制台输入数组中的各元素1,2,3,4,5,并在控制台以“%6d\t”格式输出打印e 中所有元素。 二、填空式编程 1、输入5 个整数, 将这5 个数按逆时针顺序转动一次后再输出,如输入1 2 3 4 5,逆时针转动一次后,输出2 3 4 5 1。要求用数组实现。完善test4_1.c。 2、如果要求程序实现数组元素的顺时针转动,那么应该如何修改test4_2.c 3、有一个已经排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。完善test4_3.c 4、给定平面上10 个点,求其中离原点最近的点。源程序用一维数组x 存放这10 个点的x 坐标,用一维数组y 存放相应的y 坐标,即第i 个点的坐标为(x[i], y[i])。完善test4_4.c 1. #include 构造数据对象——数组 一、填空题 1.数组是一组相同的集合。 2.数组名代表数组的。 3.数组元素在数组中的位置序号称为它是从开始整数。 4.有int a[ ]={4,6,2,12,435,-9,76,0,0};该数组元素值最大的下标为。 5.定义数组tw,其能存储23个长整形数的语句为。 6.有说明语句int a[10]={1,2,3,4,5,6};则元素a[9]的值为。 7.数组char c[ ]=”abcd”中有个元素,最后一个元素是。 8.”a”在内存中占个存储单元。 9.定义一个能存放下字符串Vocation的字符数组enm的语句为。 10.定义一个可保存100个整型数的数组pn,并把每个元素初值设为0的语句是。 11.与puts(ss)等价的printf函数调用是。 二、选择题 1.下面关于数组的说法,不正确的是() A.数组总为一个整体,可以参加算术运算 B.数组中的数组元素相当于一个简单变量 C.数组可以用来保存字符串 D.数组是一组连续的,类型相同的数据集合 2.下列说法不是数组特性的是() A.数组元素类型相同 B.数组长度固定 C.数组占用连续的内存空间 D.数组可作为一个整体参与运算 3.定义一个具有8个元素的整形数组,应使用语句() A.int a[8]; B.int a[2,4]; C.int a[ ]; D.int *a[8]; 4. 以下能正确定义一维数组的选项是() A.int num[ ]; B.#define N 100 int num[N]; C.int num[0..100]; D.int N=100; 5.下面对s的初始化,不正确的是() A.char s[5]={“abcd”}; B.char s[5]={‘a’,’b’,’c’}; C.char s[5]=””; D.char s[5]=”abcd”; 6.对以下说明语句正确的理解是() int a[10]={6,7,8,9,10,12}; A.将6个初值依次赋值给a[1]至a[5]; B.将6个初值依次赋值给a[0]至a[5]; C.将6个初值依次赋值给a[5]至a[10]; D.因数组长度和初值的个数不同,所以此语句不正确 7.用scanf语句为数组a中的第二个数组元素输入数据,格式正确的是() C程序设计(数组)习题与答案C程序设计(数组)习题与答案 数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。 1. 习题一:计算数组元素的和 题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。 解题思路: ```c #include return 0; } ``` 2. 习题二:查找数组中的最大值 题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。 解题思路: ```c #include printf("数组中的最大值为:%d\n", max); return 0; } ``` 3. 习题三:查找数组中的特定元素 题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。 解题思路: ```c #include C语言习题六(数组部分)习题及答案 习题六 一.选择题 1.在C语言中,引用数组元素时,其数组下标的数据类型允许是 c 。A)整型常量B)整型表达式 C)整型常量或整型表达式C)任何类型的表达式 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.若有定义:int a[10],则对数组a元素的正确引用是 D 。 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 4.以下不能对一维数组a进行正确初始化的语句是B 。 A)int a[10]={0,0,0,0,0}; B)int a[10]={} ; C)int a[ ] = {0} ; D)int a[10]={10*1} ; 5.若有定义:int a[3][4],则对数组a元素的正确引用是。A A)a[2][3] B)a[1,3] C)a(5) D)a[10-10] 6.以下能对二维数组a进行正确初始化的语句是B。 A)int a[2][]={{1,0,1},{5,2,3}} ; B)int a[][3]={{1,2,3},{4,5,6}} ; C)int a[2][4]={{1,2,3},{4,5},{6}} ; D)int a[][3]={{1,0,1},{},{1,1}} ; 7.以下不能对二维数组a进行正确初始化的语句是。C 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} ; 8.若有说明:int a[3][4]={0};则下面正确的叙述是D。 一填空题【1】 1)数组的元素通过下标来访问,数组Array的长度为Array.length。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0。 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包括数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是0.0f。 12)数组创建后其大小不能改变。 二选择题 1.下面错误的初始化语句是_ABD__ A. char str[]="hello"; B. char str[100]="hello"; C. char str[]={'h','e','l','l','o'}; D. char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误的引用是 _B__A.a[0]=1;B.a[10]=2;C.a[0]=5*2;D.a[1]=a[2]*a[0]; 3.下面的二维数组初始化语句中,正确的是____A. float b[2][2]={0.1,0.2,0.3,0.4};B. int a[][]={{1,2},{3,4}};C. int a[2][]= {{1,2},{3,4}};D. float a[2][2]={0}; 4.引用数组元素时,数组下标可以是_D___A.整型常量B.整型变量C.整型表达式D.以上均 可 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____ A. 24 B.25 C. 18 D. 17 6.下列初始化字符数组的语句中,正确的是__B__A. char str[5]="hello";B. char str[]={'h','e','l','l','o','\0'};C. char str[5]={"hi"};D. char str[100]=""; 7.数组在Java中储存在C中A.栈B.队列C.堆D.链表 8.下面程序的运行结果是____ main(){int a[][]={{1,2,3},{4,5,6}}; System.out.printf("%d", a[1][1]); } A. 3 B.4 C.5 D. 6 9.下面程序的运行结果是_C___main(){ int x=30; int[] numbers=new int[x]; x=60; System.out.println(numbers.length);} A.60 B.20 C.30 D.50 c语言数组练习题 C语言中的数组是一种用于存储多个相同类型数据的数据结构。通过练习数组的使用,可以更好地理解和掌握C语言编程的基本概念和技巧。本文将为您提供一些C语言数组练习题,帮助您巩固对数组的理解和运用。 1. 请编写一个程序,从键盘输入10个整数,并将它们存储到一个数组中。然后,计算数组中所有元素的和并输出结果。 解答: ```c #include return 0; } ``` 2. 编写一个程序,从键盘输入一个整数n(n大于等于1),然后动态创建一个大小为n的整数数组,并将1到n的所有奇数存储到该数组中。最后,输出该数组的所有元素。 解答: ```c #include nums[count] = i; count++; } } printf("数组中的奇数为:"); for(int i=0; i 一、单选题 1、若有定义 char s[10];则在下面表达式中不表示s[1]的地址的是()。 A.s++ B.&s[0]+1 C.&s[1] D.s+1 正确答案:A 2、若有定义int a[5],*p=a;则对a数组元素的正确引用是()。 A.a+2 B.*(a+2) C.*&a[5] D.*(p+5) 正确答案:B 3、若有定义int a[5],*p=a;则对a数组元素地址的正确引用是()。 A.p+5 B.&a+1 C.*a+1 D.&a[0] 正确答案:D 4、若要对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]; 正确答案:A 5、若有定义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,*++p1 D.p1=x+2,*(p1++) 正确答案:D 6、设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+k C.*(&x[k]) D.*(x+k) 正确答案:B 7、设double *p[6];则()。 A.p是指针数组,其元素是指向double型变量的指针 B.p是指向double型变量的指针 C.p是double型数组 D.p是数组指针,指向double型数组 正确答案:A 8、若有定义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)++); 正确答案:D 9、下面程序执行后的输出结果是()。 C语言数组选择题及答案 1、以下定义语句中,错误的是________。 A) int a[]={1,2}; B) char a[]={"test"}; C) char s[10]={"test"}; D) int n=5,a[n]; D 2、以下对一维数组a进行正确初始化的是__________。 A) int a[10]=(0,0,0,0,0); B) int a[10]={ }; C) int a[ ]={0}; D) int a[10]={ 10*2}; C 3、以下对二维数组a进行正确初始化的是__________。 A) int a[2][3]={ {1,2},{3,4},{5,6} }; B) int a[ ][3]={1,2,3,4,5,6 }; C) int a[2][ ]={1,2,3,4,5,6}; D) int a[2][ ]={ { 1,2},{3,4}}; B 4、在定义int a[5][4]; 之后,对a的引用正确的是________。 A) a[2][4] B) a[1,3] C) a[4][3] D) a[5][0] C 5、以下给字符数组str定义和赋值正确的是________。 A) char str[10]; str={"China!"}; B) char str[ ]={"China!"}; C) char str[10]; strcpy( str,"abcdefghijkl"); D) char str[10]={"abcdefghijkl"}; B 6、以下一维数组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]; D 7、在执行语句:int a[ ][3]={1,2,3,4,5,6}; 后, a[1][0]的值是________。 A) 4 B) 1 C) 2 D) 5 A 8、当接受用户输入的含有空格的字符串时,应使用________函数。 A) gets( ) B) getchar( ) C) scanf( ) D) printf( ) A 9、在定义int a[5][6]; 后,数组a中的第10个元素是________。(设a[0][0]为第一个元素)A) a[2][5] B) a[2][4] 一填空题之欧侯瑞魂创作 1)数组的元素通过下标来访问,数组Array的长度为。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0。 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包含数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是。 12)数组创建后其大小不克不及改变。 二选择题 1.下面错误的初始化语句是_ABD__ A. char str[]="hello"; B. char str[100]="hello"; C. char str[]={'h','e','l','l','o'}; D. char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误的引用是 _B__A.a[0]=1;B.a[10]=2;C.a[0]=5*2;D.a[1]=a[2]*a[0]; 3.下面的二维数组初始化语句中,正确的是____A. float b[2][2]={0.1,0.2,0.3,0.4};B. int a[][]={{1,2},{3,4}};C. int a[2][]= {{1,2},{3,4}};D. float a[2][2]={0}; 4.引用数组元素时,数组下标可以是_D 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数 组元素个数为____ A. 24 B.25 C. 18 D. 17 6.下列初始化字符数组的语句中,正确的是__B__A. char str[5]="hello";B. char str[]={'h','e','l','l','o','\0'};C. char str[5]={"hi"};D. char str[100]=""; 7.数组在Java中储存在C 8.下面程序的运行结果是____ main(){int a[][]={{1,2,3},{4,5,6}}; System.out.printf("%d", a[1][1]); } A. 3 B.4 C.5 D. 6 C语言数组编程题及解答 【程序1】 用筛选法求100之内的素数 筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。 具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。 #include int i,j; int a[100]; for(i=0;i<100;i++) a[i]=i+1; for(i=1;i<100;i++) { if(a[i]==0) continue; for(j=i+1;j<100;j++) if(a[j]%a[i]==0) a[j]=0; } for(j=1;j<100;j++) //j从1开始,去除a[0](其值为1),因为1既不是质数,也不是合数if(a[j]!=0) printf("%d,",a[j]); printf("\n"); } 【程序2】 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。 For personal use only in study and research; not for commercial use For personal use only in study and research; not for commercial use 一填空题 1)数组的元素通过下标来访问,数组Array的长度为Array.length 。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0 。 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包括数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是0.0f 。 12)数组创建后其大小不能改变。 二选择题 1.下面错误的初始化语句是_ABD__ A. char str[]="hello"; B. char str[100]="hello"; C. char str[]={'h','e','l','l','o'}; D. char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误的引用是_B__ A. a[0]=1; B. a[10]=2; C. a[0]=5*2; D. a[1]=a[2]*a[0]; 3.下面的二维数组初始化语句中,正确的是____ A. float b[2][2]={0.1,0.2,0.3,0.4}; B. int a[][]={{1,2},{3,4}}; C. int a[2][]= {{1,2},{3,4}}; D. float a[2][2]={0}; 4.引用数组元素时,数组下标可以是_D___ A. 整型常量 B. 整型变量 C. 整型表达式 D. 以上均可 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____ A. 24 B. 25 C. 18 D. 17 6.下列初始化字符数组的语句中,正确的是__B__ A. char str[5]="hello"; B. char str[]={'h','e','l','l','o','\0'}; C. char str[5]={"hi"}; D. char str[100]=""; 7.数组在Java中储存在 C 中 A. 栈 B. 队列 C. 堆 D. 链表 8.下面程序的运行结果是____ main() { int a[][]={{1,2,3},{4,5,6}}; System.out.printf("%d", a[1][1]); C 语言(数组) 一、选择题 1. 设有程序: main() { int i,a[11] ; printf(" 给数组赋值:\n") ; for (i=0 ;i<=10 ;i++) scanf("%d" ,( )) ; printf(" 输出数组:\n") ; for(i=0 ;i<=10 ;i++ ) printf("%d,",( )) ; } 则在程序中的两个园括号中分别应填入:C A) & a[i]和&a[i] B) a[i]和&a[i] C) &a[i] 和a[i] D) a[i] 和a[i] 2. 设已定义:int a[15]; 则数组a 占用的内存单元数是( C ). A) 15 B) 16 C) 30 D) 32 3. 阅读程序: main() { int a[2]={0},i,j,k=2; for(i=0;i return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); } 以上程序的输出结果是( D ). A) 720 B) 6 C)24 D) 120 5. 以下定义语句中,错误的是( B ). A) int a[ ] = {6,7,8}; B) int n=5, a[n]; C) char a[ ]= "string"; D) char a[5 ]={'0','1','2','3','4'}; 6. 以下描述中正确的是( D ). A) 数组名后面的常量表达式用一对圆括弧括起来 B) 数组下标从1 开始 C) 数组下标的数据类型可以是整型或实型 D) 数组名的规定与变量名相同 7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'}; 以下错误语句( AB ). A) scanf("%c",a[0]); B) scanf("%s",&a); C) printf("%c",a[3]); D) printf("%s",a); 8. 若定义数组int a[10] , 其最后一个数组元素为( C ). A) a[0] B) a[1] C) a[9] D) a[10] 9. 若定义数组并初始化int a[10]={ 1,2,3,4}, A) a[8] 的值为0 B) a[1] 的值为 1 C) a[3] 的值为 4 D) a[9] 的值为0 以下语句哪一个不成立( B ) 指出C语言数组练习及答案
C语言练习3(数组)=参考答案
C语言程序设计第六章数组习题及答案
c语言数组练习题
数组编程练习(带答案)
C语言练习——数组(附答案)
数组习题及答案
C程序设计(数组)习题与答案
C语言习题六(数组部分)习题及答案
Java数组练习题(带答案)
c语言数组练习题
C程序设计(数组)习题与答案
C语言数组选择题及答案
Java数组练习题(带答案)
C语言数组编程题及解答
Java数组练习题(带答案)
C语言练习3(数组)=参考答案