c语言数组练习题大全
C语言习题集合4(数组)
第四部分数组4.1 选择题1. 以下关于数组的描述正确的是( )。
A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是( )。
<a(10); B. int n=10,a[n];n; D. #define SIZE 10scanf("%d",&n); int a[SIZE];int a[n];3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A. 整型常量B. 整型表达式C. 整型常量或整型表达式;D. 任何类型的表达式4. 以下对一维数组m进行正确初始化的是( )。
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]的地址的是( )。
A. &bb[0]+1B. &bb[1]C. &bb[0]++D. bb+16. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( )。
A. 3B. 6C. 10D. 20,7. 若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为4的表达式是( )A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c]8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。
#include<>main()|{int a[10],i=0;while(i<10) scanf("%d",________ );┇}A. a+(i++)B. &a[i+1]C. a+iD. &a[++i]9. 执行下面的程序段后,变量k中的值为( )。
c语言经典题目100题
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语言习题集合4(数组)
第四部分数组4.1 选择题1。
以下关于数组的描述正确的是( ).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。
以下对一维数组m进行正确初始化的是( )。
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]的地址的是( )。
A. &bb[0]+1 B。
&bb[1] C. &bb[0]++ D. bb+16。
假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( ).A。
3 B。
6 C。
10 D. 207. 若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a’,d,g;则数值为4的表达式是( )A。
a[g—c] B。
a[4] C。
a['d'—’c'] D. a['d'-c]8。
以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。
#include〈stdio。
h〉main(){int a[10],i=0;while(i〈10) scanf(”%d",________ );┇}A。
C语言 数组练习题
{ int array[10]={1,2,3,4,5,6,7,8,9,10}; int i,searchdata,insertdata; printf("input searchdata,insertdata:"); scanf("%d %d",&searchdata,&insertdata) for(i=0;i<10;i++){ //先查找,再平移,再插入数据; //补充代码 }
for(i = 0;i<10;i++) {
if (arr[i]==searchdata ) {
for(m=10;m>i+1;m--) {
arr[m]=arr[m-1]; } arr[i+1]=insertdata; break; } }
if (i == 10) {
arr[10]=insertdata; }
arr[i]=a[i+p-9]; } for(i=0;i<10;i++) {
printf("%d ",arr[i]); } }
5、已知数组 array[10]={1,2,3,4,5,6,7,8,9,10};中有 10 个整数,从数组中查找一个 searchdata, 找到了在其后插入一个 insertdata,(searchdata 和 insertdata 从键盘输入),若没有找到,将 数据 insertdata 插入数组的最后,并输出插入后的数组。 #include<stdio.h> main()
for(i=0;i<=10;i++) {
printf("%d ",arr[i]); }
C语言(数组)习题与答案
一、单选题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) 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
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语言数组考试题及答案
c语言数组考试题及答案C语言数组考试题及答案一、选择题1. 以下哪个选项是正确的数组声明方式?A. int a[5] = {1, 2, 3, 4, 5};B. int a = [5] = {1, 2, 3, 4, 5};C. int a[5] = {1, 2, 3};D. int a = {1, 2, 3, 4, 5};答案:A2. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 以下哪个表达式是合法的?A. a[10]B. a[-1]C. a[3.5]答案:D3. 假设有数组int a[5] = {1, 2, 3, 4, 5}; 以下哪个表达式可以得到数组a的元素个数?A. sizeof(a) / sizeof(int)B. sizeof(a) / sizeof(char)C. sizeof(a) / sizeof(float)D. sizeof(a) / sizeof(double)答案:A4. 以下哪个选项是正确的二维数组声明方式?A. int a[3][2] = {{1, 2}, {3, 4}, {5, 6}};B. int a[3][2] = {1, 2, 3, 4, 5, 6};C. int a[3][2] = {{1, 2}, {3, 4, 5}, {6, 7}};D. int a[3][2] = {1, 2, 3, 4, 5, 6, 7, 8};5. 对于二维数组int a[3][2] = {{1, 2}, {3, 4}, {5, 6}}; 以下哪个表达式可以得到元素a[1][1]的值?A. a[1][1]B. a[1] + 1C. *(a[1] + 1)D. a[1] * 1答案:A二、填空题1. 假设有数组int a[5] = {10, 20, 30, 40, 50}; 则a[0]的值是______。
答案:102. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 则a[9]的值是______。
数组练习题及答案
数组练习题及答案问题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语言数组练习题大全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语言(数组)习题与答案
一、单选题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语言习题六(数组部分)习题及答案
C语言习题六(数组部分)习题及答案习题六一.选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是c 。
A)整型常量B)整型表达式C)整型常量或整型表达式C)任何类型的表达式2.以下对一维整型数组a的正确说明是DA)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元素的正确引用是 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元素的正确引用是。
AA)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进行正确初始化的语句是。
CA)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。
A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值09.若有说明:int a[][4]={0,0};则下面不正确的叙述是D。
c语言数组考试题及答案
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,它使用冒泡排序算法将数组从大到小排序。
c语言中数组的多选试题
c语言中数组的多选试题1. 下列哪个选项是正确的关于数组的声明和初始化?a. int array[10] = {1, 2, 3, 4, 5};b. int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};c. int array[] = {1, 2, 3, 4, 5};d. int array[5] = {1, 2, 3, 4, 5, 6};答案:c2. 以下哪个选项是正确的表示数组最大索引的方式?a. array[max_index];b. array[length - 1];c. array[10];d. array[size[array]];答案:b3. 数组的长度可以是动态分配的吗?a. 可以b. 不可以答案:b4. 下列哪个选项能够正确交换数组中的两个元素的值?a. temp = array[x]; array[x] = array[y]; array[y] = temp;b. array[x] = array[y];c. array[x] = y;d. array[y] = x;答案:a5. 以下哪个选项是正确的数组遍历方式?a. for (int i = 0; i < sizeof(array); i++) { printf("%d ", array[i]); }b. for (int i = 1; i <= sizeof(array); i++) { printf("%d ", array[i]); }c. for (int i = 0; i < sizeof(array)/sizeof(array[0]); i++) { printf("%d ", array[i]); }d. for (int i = 0; i < array.length; i++) { printf("%d ", array[i]); }答案:c。
c语言数组习题
第7章数组习题A卷 1. 单项选择题(1) int a[4]={5,3,8,9};其中 a[3](de)值为(D ).D A. 5 B. 3 C. 8 D. 9(2) 以下 4 个字符串函数中,( A)所在(de)头文件与其他 3 个不同.A. getsB. strcpyC. strlenD. strcmp(3) 以下 4 个数组定义中,( D)是错误(de).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 个元素(de)首地址B.数组第 2 个元素(de)首地址C. 数组所有元素(de)首地址D.数组最后 1 个元素(de)首地址(6) 若有以下数组说明,则数值最小(de)和最大(de)元素下标分别是(B ) int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};A. 1,12B. 0,11C. 1,11D. 0,12(7) 若有以下说明,则数值为 4 (de)表达式是(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)); (de)输出是( A).A. 6B. 7C. 11D. 12(9) 设有定义:char s[12] = "string";则printf("%d\n ", sizeof(s)); (de)输出是( B).A. 6B. 7C. 11D. 12(10) 合法(de)数组定义是( 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) 合法(de)数组定义是(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) 下列定义(de)字符数组中,输出 printf("%s\n", str[2]) ;(de)输出是(C ). static str[3][20] ={ "basic", "foxpro", "windows"};A. basicB. foxproC. windowsD. 输出语句出错(14) 下列各语句定义了数组,其中哪一个是不正确(de)( 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};(15) 数组定义为 int a[3][2]={1,2,3,4,5,6},值为6(de)数组元素是(B ).A. a[3][2]B. a[2][1]C. a[1][2]D. a[2][3](16) 下面(de)程序中哪一行有错误(A ).include main(){ float array[5]={}; 第A行 B. 第B行 C. 第C行 D. 没有(17) 下面哪一项是不正确(de)字符串赋值或赋初值(de)方式(A ).A. char str; str="string";B. char str[7]={'s','t','r','i','n','g'};C. char str1[10];str1="string";D. char str1[]="string",str2[]="";(18) 若有以下说明和语句,则输出结果是哪一项(D ). (strlen(s)为求字符串s(de)长度(de)函数)char s[12]="a book"; printf("%d",strlen(s));A. 12B. 8C. 7D. 11(19) 若有以下说明和语句,则输出结果是(C ).(strlen(s)为求字符串s(de)长度(de)函数)char sp[]="\t\v\\\0will\n"; printf("%d",strlen(sp));A. 14B. 3C. 9D. 字符串中有非法字符(20) 若有以下说明和语句,则输出结果是( C).char str[]="\"c:\\\""; printf("%s",str);A. 字符串中有非法字符B. \"c:\\\"C. "c:\"D. "c:\\"2. 填空题(1) C 语言中,数组(de)各元素必须具有相同(de)(类型名),元素(de)下标下限为(0),下标必须是正整数、0、或者(变量).但在程序执行过程中,不检查元素下标是否().(2) C 语言中,数组在内存中占一片()(de)存储区,由()代表它(de)首地址.数组名是一个()常量,不能对它进行赋值运算.(3) 执行 static int b[5], a[ ][3] ={1,2,3,4,5,6};后,b[4] =(),a[1][2] =() .(4) 设有定义语句static int a[3][4] ={{1},{2},{3}}; 则a[1][0]值为(),a[1][1] 值为() ,a[2][1](de)值为() .(5) 如定义语句为 char a[ ]= "windows",b[ ]= "95";,语句 printf("%s",strcat(a,b));(de)输出结果为 .(6) 根据以下说明,写出正确(de)说明语句:men是一个有10个整型元素(de)数组. step是一个有4个实型元素(de)数组,元素值分别为, , 0, . grid是一个二维数组,共有4行,10列整型元素.int grid[4][10];(7) array是一个一维整形数组,有10个元素,前6个元素(de)初值是9,4,7,49,32,-5,正确(de)说明语句为: .该数组下标(de)取值范围是从___到___(从小到大).用scanf函数输入数组(de)第二个元素表示为 .用赋值语句把39存入第一个元素表示为: .把第六个和第四个元素之和存入第一个元素表示为: .(8) 写出以下初始化数组(de)长度:①int chn[3];数组chn(de)长度为___.②float isa[]={,,,,}; 数组isa(de)长度为___.③int doom[8];数组doom(de)长度为___.④float pci[4][2];数组pci(de)长度为___. ⑤int ast[3][3];数组ast(de)长度为___.⑥int att[3][4];数组att(de)长度为___. ⑦float dell[][3]={{1,4,7},{2,5},{3,6,9}};数组dell(de)长度为___.(9) 若有以下整型(de)a数组,数组元素和它们得值如下所示: 数组元素: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 元素(de)值: 9 4 12 8 2 10 7 5 1 3 ①请写出对该数组(de)说明,并赋以上初值. ②该数组(de)最小下标值为___,最大下标值为___. ③写出下面各式(de)值:a[a[9]](de)值为___ ;a[a[4]+a[8]](de)值为___.(10) 字符串"ab\n\\012/\\\"(de)长度为___.3. 判断题()(1) C允许对数组(de)大小作动态定义,即可用变量定义数组(de)大小.()(2) 字符数组不要求它(de)最后一个字符为‘\0’,甚至可以不包含‘\0’.()(3) 数组定义 int a[10]; 也可以写成 int a(10); .()(4) 在对全部数组元素赋初值时,可以不指定数组长度.()(5) 定义s为5×6(5行6列)(de)数组可写成 float a[5,6];()(6) 数组定义 int a[10]; 表示数组名为a,此数组有10个元素.()(7) 数组定义 int a[10]; 表示数组名为a,此数组有10个元素,第10个元素为a[10].()(8) static char c[]={“a book”}; 与static char c[]=“a book”; 等价.()(9) static char c[]={'a' ,' ','b','o','o','k','\0'};与 static char c[]={'a' ,' ' ,'b','o','o','k'}; 等价.()(10) 设已有说明:static char c1[10],c2[10]; 下面程序片段是合法(de).c1={“book”}; c2=c1;4. 程序填空题(1) 输入 20 个数,输出它们(de)平均值,输出与平均值之差(de)绝对值为最小(de)数组元素.请填空.include void main( ){ float a[20],pjz=0,s,t;int i,k;for(i=0;i<20;i++){ pjz+=a[i]; }s=fabs(a[0]-pjz);for(i=1;i<20;i++)if(fabs(a[i]-pjz)<s){s=fabs(a[i]-pjz);t=a[i];}}(2) 以下程序以每行 10个数据(de)形式输出 a 数组,请填空. void main( ){ int a[50],i; printf("输入50个整数:");for(i=0; i<50; i++) scanf( "%d", );for(i=1; i<=50; i++){ if( ) printf( "%3d\n" , ) ;printf( "%3d",a[i-1]); } }(3) 下面程序(de)功能是输出数组 s 中最大元素(de)下标,请填空. void main( ) { int k, p;int s[ ]={1,-9,7,2,-10,3};for(p=0,k=p; p<6; p++)if(s[p]>s[k]) ;printf("%d\n" ,k); }(4) 这个程序输入了20个数存放在一个数组中,并且输出其中最大者与最小者、20个数(de)和及它们(de)平均值.请填空.void main(){ char array ; int max,min,average,sum; int i;for(i=0;i< ;i++){ printf("请输入第%d个数:",i+1);scanf("%d", ); }max=array[0]; min=array[0];for(i=0;i<= ;i++){ if(max<array[i]) if(min>array[i]) sum= ; } average = ;printf("20个数中最大值是%d,",max);printf("最小值是%d,",min);printf("和是%d,",sum);printf("平均值是%d.\n",average); }5. 阅读程序,分析程序(de)功能.(1) include includevoid main( ){ char s[80]; int i ;for(i=0; i<80; i++){ s[i]=getchar( ); if(s[i]=='\n') break; } s[i]='\0'; i=0;while(s[i]) putchar(s[i++]);putchar(‘\n’); }(2) include includevoid main( ){ char str[10][80], c[80]; int i;for(i=0; i<10; i++) gets(str[i]);strcpy(c, str[0]) ;for(i=1; i<10; i++)if(strlen(c) <strlen(str[i]))strcpy(c,str[i]);printf( "%s\n", c);printf( "%d\n", strlen (c)); }(3) void main( ){ char a[10][80], c[80];int i, j, k;for(i=0; i<10; i++) gets(a[i]);for(i=0; i<9; i++){ k=i ; for(j=i+1; j<10; j++)if(strcmp (a[j], a[k])<0) k=j;if(k=i ) {strcpy(c,a[i]) ;strcpy(a[i], a[k]);strcpy(a[k],c);} }, {,,}, {,0,} }; int i,j; int min;int m,n;min = array[0][0]; m=0;n=0;for(i=0;i<3;i++)for(j=0;j<4;j++)if(min > array[i][j]){ min = array[i][j]; m=i;n=j; }printf("min=%d,m=%d,n=%d\n",min,m,n); } (8) 写出下面这个程序(de)输出结果:void main(){ char str[]="ABCDEFGHIJKL";printf("%s\n",str); 屏幕上显示printf("%s\n",&str[4]); 屏幕上显示str[2]=str[5]; printf("%s\n",str); 屏幕上显示str[9]='\0'; printf("%s\n",str); 屏幕上显示 }(9) 读懂下面(de)程序并填空.void main(){ char str[80]; int i=0; gets(str);while(str[i]=0){ if(str[i]>='a'&<='z') str[i]-=32; i++; } puts(str); }程序运行时如果输入 upcase, 屏幕显示程序运行时如果输入 Aa1Bb2Cc3,(10)以下程序(de)功能是输出如下形式(de)二项式系数表(杨辉三角).要求表(de)行数在运行时输入,若行数小于1或大于10则重新输入.填空11 11 2 11 3 3 11 4 6 4 11 5 10 10 1.................main ( ){ int a[10][10]={{0}},i,j,n;while(scanf("%d",&n),n<1||n>10);for(i=0;i<n;i++) { }for(i=2;i<n;i++)for(j=1;j<i;j++);for(i=0;i<n;i++){ for(j=0;j<i;j++) printf("%4d",a[i][j]);}}(11)以下程序(de)功能是输入一个字符串,如果字符串中有连续(de)空格,只保留一个空格符.如:输入:’I am a boy.’,输出字符串应为‘I am a boy.’填空include ""main ( ){ char b[61];int i;gets(b);for(i=0; ;i++)if(b[i-1]==' '&&b[i]==' '){ (b+i-1,b+i);i--; };getch();}(12)下列程序(de)输出结果是 . main ( ){int m[]={1,2,3,4,5,6,7,8,9},i,j,k; for(i=0;i<4;i++){k=m[i];m[i]=m[8-i];m[8-i]=k; }for(j=0;j<9;j++)printf("%d",m[j]); putchar('\n');}本部分参考答案:1.选择题 1-5 D A D B A6-10 B D AD A11-15 D C C B16-20 D C C B C2.填空题(1)数据类型,0,符号常量,越界(2)连续,数组名,地址(3)0, 6 (4)2,0,0 (5)Windows95 (6)int mesh[10]; float step[4] = {, , 0, }; (7)int array[10] = {9,4,7,49,32,-5}; 0 9 scanf("%d",&array[1]); array[0] = 39; array[0]= array[5]+array[3];(8)6 20 16 32 18 24 36 (9)int a[10]={9,4,12,8,2,10,7,5,1,3}; 0 9 8 8(10)103. 判断题只有4,6,8正确4. 程序填空题(1)for(i=0;i<20;i++) scanf(“%f”,&a[i]); pjz/=20; printf(“%f,%f\n”,p jz,t);(2) &a[i] i%10==0 a[i-1] (3) k=p(4) [20] 20 &array[i] 19 max=array[i]; min=array[i]; sum+array[i] sum/205. 阅读程序,分析程序(de)功能.(1) 从键盘输入一个字符串,并逐一输出(2)从键盘输入若干字符串,找到其中最长(de)一个输出及它(de)长度(3)从键盘输入若干字符串,并将它们按大到小顺序排好再输出(4)4 25 27 16(5) gabcdef fgabcde efgabcd(6)(7) 2 1 (8) ABCDEFGHIJKL EFGHIJKL ABFDEFGHIJKL ABFDEFGHI(9) 屏幕显示 UPCASE AA1BB2CC(10) a[i][0]=1; a[i][j]=a[i-1][j]+a[i-1][j-1] printf("\n");(11)i<61 strcpy puts(b)(12)1。
C语言数组答案
C第5次上机练习:数组
1、输入n个整数,用一维数组存放,然后将这n个整数逆序存放并输出。
2、将1-200中所有11的倍数存放到一个一维数组中,并输出。
3、有n个已经按由小到大排好序的整数,再输入一个整数,将其插入到这批数据中,要求插入该元素后仍然按由小到大的顺序排列。
4、(二维数组)求一个n*n矩阵对角线元素之和。
5、(一维字符数组)输入两个任意的字符串,编写程序实现两个字符串的链接。
(不能使用strcat()函数)
6、(一维字符数组)从键盘输入一个不超过30个字符的字符串,存储到一个字符数组中。
将下标为奇数位置上的字符按顺序复制到另外一个字符数组中并输出。
如:输入“abcdefg”,则输出”bdf”。
7、(一维字符数组)在一个指定的字符串中删除指定的字符,并输出该字符串。
C语言习题数组部分
C语言习题数组部分1、设char a[]=”abx\t1\128\\0”;则数组a的长度是_____。
2、以下程序的功能是()main(){int a[10]={3,5,9,2,1,8,0,4,6,7},i,p=0,q=0;for(i=0;i<10;i++){if(a[i]<q) q=a[i];if(a[i]>a[p]) p=i;}printf(“\n%d,%d”,q,p);}A. 求最大值和最小值B. 求最大值的位置和最小值的位置C. 求最大值的位置和最小值D. 求最大值和最小值的位置3、以下程序中,有一个不符合C语法规则的语句,这个语句是() #define M 10Main(){A. int i,n,a[M*10];scanf(“%d”,&n);B. int b[n];C. {int n=1000;D. for(i=0;i<n;i++)scanf(“%d”,a+i);} }4、对以下实现循环移位(将前9个数向后移一个位置,最后一个数移到最前面)的各程序段中个,正确的是()。
A. main(){ int i,k,a[10]={0,1,2,3,4,5,6,7,8,9};k=a[9];for (i=9;i>0;i--)a[i+1]=a[i];a[0]=k;}B. main(){ int i,k,a[10]={0,1,2,3,4,5,6,7,8,9};k=a[9];for (i=9;i>0;i--)a[i]=a[i-1];a[0]=k;}C. main(){ int i,k,a[10]={0,1,2,3,4,5,6,7,8,9};k=a[9];for (i=1;i>10;i++)a[i]=a[i-1];a[0]=k;}D. main(){ int i,k,a[10]={0,1,2,3,4,5,6,7,8,9};k=a[9];for (i=9;i>0;i--)a[i]=a[i-1];a[0]=k;}5、以下程序的运行结果是()Main(){int k=4,a=3,b=2,c=1;Printf(“\n%d\n”,k<a?k:c<b?c:a);}A. 1B. 2C. 3D. 46、以下二维数组a的正确说明是()A. int a[0][1]B. float a(3,4);C. doubule a[1][4];D. float a(3)(4)7、以下程序的运行结果是()main(){char a[]=”abcXYZ789”;int j,k=0;for(j=0;a[j];j++)if(a[j]>a[k])k=j;j=a[0];a[0]=a[k];a[k]=j;printf(“%s”,a);}A. ZbcXYa789B. 7bcXYZa89C. cbaXYZ789D. 9bcXYZ78a8、以下程序的运行结果是()main(){char a[]=”morning”,t;int j,j=0;for(i=1;i<7;i++)if(a[j]<a[i]) j=i;t=a[j];a[j]=a[7];a[7]=a[j];puts(a);}A. moB. morningC. mogninrD. mornin9、以下程序的运行结果是()main(){int i;char a[]=”ab12”;for(i=0;a[i];i++)switch(a[i]){ case 1:printf(“%d”,a[i]);break;case 2:printf(“%d”,a[i]);break;default: if(a[i]>=’a’&&a[i]<=’z’)putchar(a[i]);else printf(“%d”,a[i]+1); }A. ab12B. ab23C. ab5051D. ab495010、下列程序的正确输出结果是()#define SUB(X,Y) (X)*Y main(){i nt a=3,b=4;printf(“%d”,SUB(a+b.a+b));} A. 19 B. 49 C.31 D.25 答案1 102 C3 B4 B5 A6 C7 C8 A9 C10 D。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本节设计程序完成一个简单的学籍;
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 学生管理系统的结构功能框架
奇数阶魔方矩阵
本节将实现技术矩魔方矩阵。
项目任务:用数组实现N阶魔方矩阵(N为奇数)。
所谓的N阶魔方矩阵是指把1~N*N自然数按一定的方法排列成N*N的矩阵,使得:任意行、任意列以及两个对角线上的数之和都
*
5阶魔方如下:
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 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;按升序排列。
5.输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。
如果输入的10个数是:10 9 8 7 6 5 4 3 2 1,则输出:1 3 5 7 8 2 4 6 8 10 (编程提示、;可利用两个数组变量,一个用来存放输入的整数,输入后,对该数组进行排序,然后将数据复制到另一个数组中,先复制奇数再复制偶数)。
6.定义一个有10个元素的一位数组count ,从键盘上输入8个整数,将其按从大到小的顺序排列,并将排列后的数组输出。
7.求数组int a【M】【N】每行元素的平均值和平均最大的行号。
8.求A【M】【N】与B【M】【N】两矩阵的和矩阵C【M】【N】和差矩阵D【M】【N】(矩阵的值由键盘输入)。
9.有n个学生,每人考m门课。
(1)找出成绩最高的学生的学号和课程号
(2)找出有不及格课程的学生的学号及其各门课的全部成绩。
(3)求全部学生全部课程的平均分。