C语言数组练习题
C语言专题编程练习——数组
![C语言专题编程练习——数组](https://img.taocdn.com/s3/m/6a6ebfeb9b89680202d82501.png)
编程练习4 ——数组1. 随机数数组输出。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
输出结果:2. 求数组最大值、最小值、总和、平均数。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
求该数组的最大值、最小值、总和和平均值并输出。
输出结果:3. 冒泡法排序。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
按照升序排列并输出。
输出结果:4. 选择法排序。
输出结果:同上5. 比较法排序。
输出结果:同上6. 数组逆序输出要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
编程将逆序数组输出。
输出结果:7. 数组插数。
要求:产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
按照升序排列并输出。
再输入一个数,按照原来的规律将其插入并输出。
输出结果:8. 用数组输出Fibonacci数列的前40项。
要求:每行输出5个元素,每个元素10位。
输出结果:(略)9. 用筛选法求100以内的素数。
输出结果:10. 数组查找。
要求:产生一个由15个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
按照升序排列并输出。
再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,输出找不到。
11. 二维数组行列互换。
要求:将一个二维数组(3行4列)的行和列互换(转置),存到另一个二维数组(4行3列)中并输出。
输出结果:12. 编程输出杨辉三角(要求输出10行)。
输出结果:13. 编程输入5阶魔方阵。
输出结果:14. 找出一个二维数组中的鞍点。
要求:即该位置上的元素在该行最大,在该列最小。
可能没有鞍点。
输出结果:15. 输入一行字符,统计大写字母、小写字母、数字、空格以及其他字符个数。
输出结果:16. 编写程序实现strcat函数功能。
输出结果:17. 编写程序实现strcpy函数功能。
c语言数组练习题及答案
![c语言数组练习题及答案](https://img.taocdn.com/s3/m/aa050b62c8d376eeaeaa31d5.png)
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语言数组试题及答案](https://img.taocdn.com/s3/m/c051670811661ed9ad51f01dc281e53a580251ec.png)
c语言数组试题及答案1. 请编写一个程序,要求用户输入10个整数,然后将其存储在一个数组中,并输出这个数组的内容。
答案:```c#include <stdio.h>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 <stdio.h>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 <stdio.h>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]);}max = numbers[0];min = numbers[0];for (i = 1; i < n; i++) {if (numbers[i] > max) {max = numbers[i];}if (numbers[i] < min) {min = numbers[i];}}printf("数组中的最大元素为:%d\n", max);printf("数组中的最小元素为:%d\n", min);return 0;}```4. 请编写一个程序,要求用户输入两个整数m和n(1<=m<=n<=100),然后生成并输出m到n之间(包含m和n)的所有整数。
C语言程序设计第六章数组习题及答案
![C语言程序设计第六章数组习题及答案](https://img.taocdn.com/s3/m/3e073764e2bd960591c67731.png)
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语言经典题目100题
![c语言经典题目100题](https://img.taocdn.com/s3/m/452ac4642bf90242a8956bec0975f46527d3a73f.png)
1.寻找数组中的最大值和最小值2.寻找数组中的中位数3.查找数组中给定元素的索引4.反转数组5.合并两个升序数组6.移位数组7.查找两个数组的交集8.查找两个数组的并集9.查找两个数组的差集10.寻找数组中的众数11.寻找数组中的缺失元素12.寻找数组中的重复元素13.计算数组的和14.计算数组的平均值15.计算数组的方差16.计算数组的标准差17.比较两个数组是否相等18.复制数组19.排序数组20.搜索数组(线性搜索)21.搜索数组(二分搜索)22.插入元素到数组23.删除元素到数组24.更新数组中的元素25.创建动态数组26.释放动态数组27.字符串复制28.字符串连接29.字符串比较30.字符串搜索31.字符串替换32.字符串分割33.字符串反转34.字符串大小写转换35.字符串修剪36.计算字符串长度37.字符串格式化38.链表创建39.链表插入40.链表删除41.链表搜索42.链表反转43.链表排序44.链表合并45.链表复制46.链表释放47.树创建48.树插入49.树删除50.树搜索51.树反转52.树排序53.树合并54.树复制55.树释放56.堆创建57.堆插入58.堆删除59.堆搜索60.堆反转61.堆排序62.堆合并63.堆复制64.堆释放65.图创建66.图插入67.图删除68.图搜索69.图反转70.图排序71.图合并72.图复制73.图释放74.队列创建75.队列插入76.队列删除77.队列搜索78.队列反转79.队列排序80.队列合并81.队列复制82.队列释放83.栈创建84.栈插入85.栈删除86.栈搜索87.栈反转88.栈排序89.栈合并90.栈复制91.栈释放92.哈希表创建93.哈希表插入94.哈希表删除95.哈希表搜索96.哈希表反转97.哈希表排序98.哈希表合并99.哈希表复制100.哈希表释放。
C语言(数组)习题与答案
![C语言(数组)习题与答案](https://img.taocdn.com/s3/m/465904f9e45c3b3567ec8bef.png)
一、单选题1、下列描述中不正确的是()A.字符串的结束符是'\0'。
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"小于字符串"2"。
C.两个字符串所包含的字符个数不相同时,才能进行大小比较。
D.字符个数多的字符串比字符个数少的字符串大。
正确答案:B5、下面程序段的输出结果是()char a[7]=“123456”;char b[4]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);A.\0B.C.5D.6正确答案:D6、以下对二维数组a的正确说明是__。
A.double a[1][4];B.float a(3)(4);C. floatf a(3,4);D. int a[3][];正确答案:A7、以下能对二维数组a进行正确初始化的语句是__。
A. int a[][3]={{1,2,3},{4,5,6}};B.int a[2][]={{1,0,1},{5,2,3}};C.int a [2][4]={{1,2,3},{4,5},{6}};D. int a[][3={{1,0,1},{},{1,1}};正确答案:A8、若有说明: int a[3][4]={0};则下面正确的叙述是__。
c语言数组 编程题
![c语言数组 编程题](https://img.taocdn.com/s3/m/588f16890408763231126edb6f1aff00bed5702e.png)
c语言数组编程题含解答共5道1. 求数组元素的和题目:编写一个程序,计算给定整数数组中所有元素的和。
解答:```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);int sum = 0;for (int i = 0; i < n; i++) {sum += arr[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 查找数组中的最大值题目:编写一个程序,找到给定整数数组中的最大值。
解答:```c#include <stdio.h>int main() {int arr[] = {3, 7, 1, 9, 4};int n = sizeof(arr) / sizeof(arr[0]);int max = arr[0];for (int i = 1; i < n; i++) {if (arr[i] > max) {max = arr[i];}}printf("数组中的最大值为:%d\n", max);return 0;}```3. 数组元素逆序题目:编写一个程序,将给定整数数组中的元素逆序。
解答:```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);printf("原始数组:");for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}// 逆序for (int i = 0; i < n / 2; i++) {int temp = arr[i];arr[i] = arr[n - 1 - i];arr[n - 1 - i] = temp;}printf("\n逆序后的数组:");for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}```4. 查找元素在数组中的位置题目:编写一个程序,查找给定整数数组中某个元素的位置(索引)。
第4章数组习题(C语言程序设计)
![第4章数组习题(C语言程序设计)](https://img.taocdn.com/s3/m/8a98248fa0116c175f0e4841.png)
puts(strcpy(a[0],a[2]);的输出结果是__2_3____
第4章 数组
三、写出程序运行结果
第4章 数组
1. main() { int a[]={2,4,6,8,10};
int y=1,j;
y
j
1
0
for(j=0;j<3;j++)
1
y+=a[j+1];
2
y=y+a[1]+a[2]+a[3]
第4章 数组
程序设计基础—C语言
第4章 数组
第4章 数组
一、单项选择题 (第107页)
第4章 数组
1、定义数组时,表示数组长度的不能是 (A )
存储类型 数据类型 数组名[ 数组长度 ]
√A. 整型变量 int x=6 ; int a[x];
B. 符号常量 #define N 5 C. 整型常量 char b[ 5];
}
1 2 34 5678 9 13 15
则字符串s所占的字节数是(
)
字符串s的字节数=长度+1 sizeof(s)= strlen(s)+1
A. 19 C. 15
B. 18
√D. 16
第4章 数组
二、填空题
第4章 数组
1.若定义int a[10]={1,2,3};则a[2]的值__3___;
2.若定义char string[] =“You are a student!”;
s=10*6+’5’-’0’=65
s=10*65+’2’-’0’=652
s=10*652+’1’-’0’=6521
printf(“%d\n”,s); }
C语言数组百道练习题含答案
![C语言数组百道练习题含答案](https://img.taocdn.com/s3/m/b7cd1ba9bd64783e09122bea.png)
C) int a(10);
D)#define SIZE 10
int a[SIZE];
6.3 若有说明:int a[10];则对数组元素的正确引用是 D 。 A)a[10] B)a[3,5] C)a(5) D)a[10-10]
6.4 在 C 语言中,一维数组的定义方式为:类型说明符 数组名 D 。
A)[常量表达式]
6.18 下面程序有错误的行是 D (行前数字表示行号)。
1 main() 2{ 3 int a[3]={0}; 4 int i; 5 for(i=0;i<3;i++) scanf("%d",&a[i]); 6 for(i=1;i<4;i++) a[0]=a[0]+a[i]; 7 printf("%d\n",a[0]); 8}
C)因为二维数组 a 中第二维大小的值除初值个数的商为 0,故数组 a 的行数为 1
D)只有元素 a[0][0]和 a[0][1]可得到初值 0,其余元素均得不到初值 0
6.13 若有说明:static int a[3][4];则数组中各元素 B 。
A)可在程序的运行阶段得到初值 0
B)可在程序的编译阶段得到初值 0
} } A) 1 1 1 1 1
11111 11111 11111 11111
B) 0 0 0 0 1 00010 00100 01000 10000
C) 1 0 0 0 0 01000 00100 00010 00001
D) 1 0 0 0 1 01010 00100 01010 10001
6.28 下面程序的运行结果是 C 。
A。 for(k=0;k<3;k++) printf("%d ",a[k][2-k]); A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7
数组练习题及答案
![数组练习题及答案](https://img.taocdn.com/s3/m/b242709109a1284ac850ad02de80d4d8d15a01bd.png)
数组练习题及答案问题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语言数组练习题大全](https://img.taocdn.com/s3/m/6af1f43b53d380eb6294dd88d0d233d4b14e3f94.png)
c语言数组练习题大全231页;本节设计程序完成一个简单的学籍;3管理系统的案例,学生的基本信息:学号,姓名,年龄,c 语言成绩。
假设班级有10名学生,能实现以下功能:(1)输入10名学生的基本信息。
(2)输出10名学生的基本信息。
(3)输入学号、姓名,输出该学生的基本信息。
(4)按学号年龄对学生进行排序(升序),按c 语言成绩降序排序。
(5)统计优良不及格。
1.数据结构分析此案例是一位数组,二维数组的综合运用。
10名学生的学号,年龄,c 语言成绩可分别用长度为10的一位数组sno (long ),sage (int 型),cs (float 型)存储;10名学生的姓名可用元素长度为20个字符的一位数组,既字符型二维数组sname 存储。
2算法分析使用模块化设计思想,进入系统主界面时有六个主要模块,输入学生的基本信息,输出学生的信息,查找学生的基本信息,排序,统计,退出。
学籍管理系统的机构功能框架,如图 5-28 所示。
图 5-28 学生管理系统的结构功能框架5.5.2 奇数阶魔方矩阵本节将实现技术矩魔方矩阵。
项目任务:用数组实现N 阶魔方矩阵(N 为奇数)。
所谓的N 阶魔方矩阵是指把1~N*N 自然数按一定的方法排列成N*N 的矩阵,使得:任意行、任意列以及两个对角线上的数之和都为65。
5阶魔方如下:17 24 1 8 15输入学生的基本信息输出学生的信息查找学生的基本信息排序统计退出学籍管理系统23 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9本章习题:1.设数组int a【N】的元素全部不相等,求a中最大元素和次大元素。
2.求有10个整数的数组a中奇数的个数和平均值,以及偶数个数和平均值。
3.统计输入的一串字符(“假设以‘\n’结束”)中,大写字母A,B...Z各出现的次数。
4.数组a:“1,7,9,11,13,15,17,19”;数组b:“2,4,6,8,10”两个数组合并为数组c;按升序排列。
C语言数组练习
![C语言数组练习](https://img.taocdn.com/s3/m/2557f30e0740be1e650e9a66.png)
C语言数组练习一填空题1.构成数组的各个元素必须具有相同的______。
2.C语言数组的下标总是从开始,不可以为负数。
3.字符串是以为结束标志的一维字符数组。
4.有定义:char a[]=””;则a数组的长度是。
5.若有以下定义:int a[10];,则数组a元素下标的上限为______,下限为______. 6.在C语言中,数组int a[5];的首地址是。
7.数组名定名规则和变量名相同,遵循定名规则。
8.对于一维数组的定义“类型说明符数组名[常量表达式]”,其中常量表达式可以包括和,不能包含。
9.在C语言中,引用数组只能通过来实现,而不能通过整体引用来实现。
如引用数组int a[5];第四个元素为。
10、char str1[15]=“zhongguo”,数组str1所占的内存空间为个字节。
11.构成数组的各个元素必须具有相同的。
12、有数组的定义int str[ ]={0,1,2,3,4};该数组长度为______________。
13.有数组定义float kk[5];则将第一个元素赋值为 5.0的语句为____________;将第二个元素值为12.3的语句为______________,将一、二两个元素的和赋给最后一个元素的语句为_________________________________ 14.一维数组元素的下标最小值从_______________开始,定义一个数组为int x[8];的数组长度为________________.引用最后一个元素的为_____________________。
15、在数组中int score[10]={1、2、3、4、5}中,元素个数有______________个,其中score[8]的值为______________。
二选择题1.对两个数组a和b进行如下初始化char a[]="ABCDEF";char b[]={'A','B','C','D','E','F'};则以下叙述正确的是________。
c语言数组考试题及答案
![c语言数组考试题及答案](https://img.taocdn.com/s3/m/e84c0f2ef6ec4afe04a1b0717fd5360cba1a8dba.png)
c语言数组考试题及答案一、选择题1. 在C语言中,数组的下标从哪个数字开始?A. 0B. 1C. 2D. 3答案:A2. 下列哪个选项是正确的数组声明?A. int arr[] = {1, 2, 3};B. int arr[5] = {1, 2, 3};C. int arr[5] = {1, 2};D. int arr[] = {1, 2, 3, 4, 5};答案:B3. 若有数组声明 int arr[5] = {1, 2, 3, 4, 5}; 则arr[2]的值是多少?A. 1B. 2C. 3D. 4答案:C二、填空题1. 假设有一个数组声明为 int arr[10] = {0}; 则arr[0]的值是______。
答案:02. 如果声明了一个数组 int arr[5] = {1, 2, 3, 4, 5}; 那么arr 数组的元素个数是______。
答案:5三、简答题1. 请简述C语言中数组的初始化方式有哪些?答案:C语言中数组的初始化方式包括:- 静态初始化:在声明数组时直接指定数组的元素值。
- 动态初始化:在声明数组后,通过循环或逐个赋值的方式初始化数组。
2. 在C语言中,如何访问数组的最后一个元素?答案:可以通过数组的长度减去1来访问数组的最后一个元素,例如对于数组arr,访问最后一个元素的方式是arr[arr.length - 1]。
四、编程题1. 编写一个C语言程序,实现将一个整数数组按照从大到小的顺序排序。
答案:```c#include <stdio.h>void sortDescending(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] < arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}int main() {int arr[] = {4, 2, 3, 1, 5};int n = sizeof(arr) / sizeof(arr[0]);sortDescending(arr, n);for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;}```该程序首先定义了一个排序函数sortDescending,它使用冒泡排序算法将数组从大到小排序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计实验教学(6)【实验目的】数组的应用是很重要的一章。
通过实验掌握一维数组的主要应用,并理解数组的存储。
对二维数组的处理要比较熟悉。
【实验要求】一维数组的题目要求全面掌握,应用循环结构完成一维数组的输入、处理和输出。
二维数组能够完成简单的数据处理和应用。
【实验课时】8.0【实验内容】一维数组:1、定义一个可以存放10个元素的int数组a,输入10个数,并逆序输出。
#include <stdio.h>#include <conio.h>void main( ){int a[10], i; clrscr();printf("Please input array a :");for(i=0;i<10;i++)scanf("%d", &a[i]);/* 由键盘逐次输入值赋予数组各元素*/for(i=9;i>=0;i--) /* 变量i递减控制着数组元素倒序输出*/ printf("%5d", a[i]);}2、用数组来保存Fibonacci数列前20项数值,以每5个数据为一行进行输出。
#include <stdio.h>#include <conio.h>void main( ){int i; long f[20]; clrscr();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]);}}3、统计具有10个元素的自然数数组num中的奇数个数。
#include <stdio.h>#include <conio.h>void main( ){int i,num[10],count=0; clrscr();for(i=0;i<10;i++){printf("enter NO %d : ",i+1);/*给予输入提示*/scanf("%d",&num[i]);if(num[i]%2!=0) count++;}printf("Count is:%d\n",count );}4、计算整数数组a中的最大值及其所在的下标。
#include <stdio.h>#include <conio.h>void main( ){int i,max,p,a[10]; clrscr();printf("please enter 10 data:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);max=a[0];p=0;for(i=1;i<10;i++)if(a[i]>max) {max=a[i];p=i;}printf("max is:%d\n",max);printf("point is:%d\n",p+1);}5、输入20个实数存放在一维数组中,输出它们的平均值以及高于平均值的数的个数。
#include <stdio.h>#include <conio.h>void main( ){float a[20],sum=0,ave;int i, n=0; clrscr();printf("Enter array a: \n");for(i=0;i<20;i++) scanf("%f",&a[i]);for(i=0;i<20;i++) sum+=a[i]; /* 计算20个实数累加和*/ave=sum/20.0; /* 计算20个实数平均值*/for(i=0;i<20;i++)if(a[i]>ave) n++; /* 统计高于平均值的个数*/printf("The average=%f \n", ave);printf("connt=%d\n",n);}6、实现对n个数的数列从小到大排序。
(比较交换法、选择法、冒泡法)方法一:比较交换法#include <stdio.h>#include <conio.h>void main( ){int i,j,n,a[100]; int temp; clrscr();printf("enter the number:\n"); scanf("%d",&n);for(i=0;i<n;i++) scanf("%d",&a[i]);printf("\n output the original array\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 output the sorted array\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出排序后的一维数组序列*/ }方法二:选择法#include <stdio.h>#include <conio.h>void main( ){int i,j,n,p,a[100];int temp;clrscr();printf("enter the number:\n"); scanf("%d",&n);for(i=0;i<n;i++) scanf("%d",&a[i]);printf("\n output the original array\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 output the sorted array\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出排序后的一维数组序列*/ }方法三:冒泡法#include <stdio.h>#include <conio.h>void main( ){int i,j,k,n,a[100];int temp;clrscr();printf("enter the number:\n"); scanf("%d",&n);for(i=0;i<n;i++) scanf("%d",&a[i]);printf("\n output the original array\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出原始的一维数组序列*/ for(i=n-1;i>=1;i--){k=i;/* k为每轮比较范围的终止元素下标*/for(j=0;j<=k-1;j++)if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}printf("\n output the sorted array\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出排序后的一维数组序列*/}7、假如数组a中的n个数是有序的,请将输入的数k插入到a中,要求插入后依然保持有序。
/*the array is sorted by small to big */#include <stdio.h>#include <conio.h>void main( ){int a[20],i,n,k; int point; clrscr();printf("\nplease enter the number of data:(<20) ");scanf("%d",&n);/*输入原始数据的个数*/for(i=0;i<n;i++) scanf("%d",&a[i]);/*输入的数据要从小到大*/printf("\n output the original array\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出原始的一维数组序列*/ printf("please enter the number to be inserted:");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;} /*从后向前方式*/ else a[n]=k;printf("The array after insert is:\n");for(i=0;i<n+1;i++) printf("%4d ",a[i]); /* 输出插入后的一维数组序列 */ }8、 数组的元素的删除:从数组中删除指定的元素n 。