数组典型例题及参考答案
c语言数组练习题及答案
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;}}。
数据结构题目及答案
数据结构题目及答案一、数组题目及答案题目一:给定一个整数数组nums和一个目标值target,请你在数组中找出和为目标值的两个整数,并返回它们的索引。
题目描述:给定一个整数数组nums,以及一个目标值target,请找出数组中两个数字的和等于目标值target,并返回它们的索引。
示例输入:nums = [2, 7, 11, 15], target = 9示例输出:[0, 1]解释:nums[0] + nums[1] = 2 + 7 = 9,因此返回[0, 1]。
解题思路:1. 使用哈希表存储已经遍历过的数字及其索引;2. 遍历数组,对于每个元素,计算该元素与目标值的差值;3. 如果差值存在于哈希表中,则返回对应的索引;4. 如果不存在,则将当前元素加入哈希表中。
代码实现:```pythondef twoSum(nums, target):hashmap = {}for i, num in enumerate(nums):complement = target - numif complement in hashmap:return [hashmap[complement], i]hashmap[num] = ireturn []# 测试样例nums = [2, 7, 11, 15]target = 9print(twoSum(nums, target))```二、链表题目及答案题目二:给定一个链表,删除链表的倒数第N个节点,并返回链表的头节点。
题目描述:给定一个链表,删除链表的倒数第N个节点,并返回链表的头节点。
示例输入:1->2->3->4->5, N = 2示例输出:1->2->3->5解释:删除倒数第二个节点(4),得到链表1->2->3->5。
解题思路:1. 使用双指针技巧,使用两个指针pre和cur,其中cur指针先向前移动N个节点;2. 使用dummy节点作为头节点的前一个节点,以应对删除头节点的情况;3. cur指针到达链表的尾部时,pre指针的下一个节点即为要删除的节点;4. 删除节点后,返回dummy节点的下一个节点即为新链表的头节点。
数组练习及答案
数组练习及答案数组练习121、合法的数组定义是___ _____.A) int a[6]={"string"};B) int a[5]={0,1,2,3,4,5};C) char a={"string"};D) char a[]={0,1,2,3,4,5};122、要求下⾯的程序运⾏后,显⽰如下结果:2 10 4 61 52 32 4 7 85 1 3 2则程序中的划线处应填⼊___ _____.#include <>void main( ){ int a[4][4]={ ________ };int i,j;for(i=0;i<4;i++){for(j=0;j<4;j++) printf("%4d",a[i][j]);printf("\n"); }}A) {1,5,2,3},{2,4,7,8},{5,1,3,2}B) {2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,3,2}C) {5,1,3,2},{2,4,7,8},{1,5,2,3}D) {2,1,2,5},{10,5,4,1},{4,2,7,3},{6,3,8,2}123、给出以下定义:char x[ ]="abcdefg";char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为___ _____.A) 数组x和数组y等价B) 数组x和数组y的长度相同C) 数组x的长度⼤于数组y的长度D) 数组x的长度⼩于数组y的长度124、定义如下变量和数组: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 16C) 4 7 10 13 D) 4 8 12 16126、若希望下⾯的程序运⾏后输出45,程序空⽩处的正确选择是___ _____.#include <>void main( ){ int i,j=10,a[ ]={1,3,5,7,9,11,13,15};for( ____________ )j+=a[i];printf("%d\n",j);}A) i=5;i>1;i-- B) i=0;i<7;++iC) i=5;i>=1;--i D) i=2;i<6;++i127、若有以下说明:char s1[ ]={"tree"},s2[]={"flower"}; ,则以下对数组元素或数组的输出语句中,正确的是__ ___.A) printf("%s%s",s1[5],s2[7]);B) printf("%c%c",s1,s2);C) puts(s1);puts(s2); D) puts(s1,s2);128、下列⼀维数组初始化语句中,正确且与语句float a[ ]={0,3,8,0,9};等价的是_____ ___.A) float a[6]={0,3,8,0,9};B) float a[4]={0,3,8,0,9};C) float a[7]={0,3,8,0,9};D) float a[5]={0,3,8,0,9};129、运⾏下⾯程序段的输出结果是___ _____.char s1[10]={'S','e','t','\0','u','p','\0'};printf("%s",s1);A) Set B) Setup C) Set up D) 'S''e''t'130、以下程序段的输出结果是____ ____.char s[ ]="an apple";printf("%d\n",strlen(s));A) 7 B) 8 C) 9 D) 10131、若有说明:char c[10]={'E','a','s','t','\0'};,则下述说法中正确的是_____ _____.A) c[7]不可引⽤B) c[6]可引⽤,但值不确定C) c[4]不可引⽤D) c[4]可引⽤,其值为空字符132、下列初始化语句中,正确且与语句char c[ ]="string";等价的是____ ____.A) char c[ ]={'s','t','r','i','n','g'};B) char c[ ]='string';C) char c[7]={'s','t','r','i','n','g','\0'};D) char c[7]={'string'};133、若有说明char c[7]={'s','t','r','i','n','g'};则对元素的⾮法引⽤是____ ____.A) c[0] B) c[9-6] C) c[4*2] D) c[2*3]134、如有说明:char s1[5],s2[7]; ,要给数组s1和s2整体赋值,下列语句中正确的是____ ____.A) s1=getchar(); s2=getchar();B) scanf("%s%s",s1,s2);C) scanf("%c%c",s1,s2);D) gets(s1,s2);135、下列⼀组初始化语句中,正确的是___ _____.A) int a[8]={ }; B) int a[9]={0,7,0,4,8};C) int a[5]={9,5,7,4,0,2}; D) int a[7]=7*6;136、以下程序输出的结果是____ _____.#include <>void main( ){ char str[ ]="1a2b3c"; int i;for(i=0;str[i]!='\0';i++)if(str[i]>='0'&&str[i]<='9') printf("%c",str[i]);printf("\n");}A) 9 B) 1a2b3cC) abc D) 123137、以下程序输出的结果是___ _____.#include <>void main( ){ int a[ ]={5,4,3,2,1},i,j;long s=0;for(i=0;i<5;i++) s=s*10+a[i];printf("s=%ld\n",s);}A) s=12345 B) s=5 4 3 2 1C) s=54321 D) 以上都不对138、以下程序输出的结果是____ ____.#include <>void main( ){ int a[ ]={1,2,3,4,5},i,j,s=0;for(i=0;i<5;i++) s=s*10+a[i];printf("s=%d\n",s);}A) s=12345 B) s=1 2 3 4 5C) s=54321 D) s=5 4 3 2 1139、在定义int a[5][6];后,数组a中的第10个元素是.________(设a[0][0]为第⼀个元素)A) a[2][5] B) a[2][4] C) a[1][3] D) a[1][5]140、当接受⽤户输⼊的含有空格的字符串时,应使⽤____ ____函数.A) gets( ) B) getchar( )C) scanf( ) D) printf( )141、以下程序执⾏时输⼊Language Programming<回车>,输出结果是____ ____.#include <>void main( ){ char str[30];gets(str);printf("str=%s\n",str);}A) Language ProgrammingB) LanguageC) str=LanguageD) str=Language Programming142、以下⼀维数组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];143、以下对⼆维数组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}};144、以下关于数组的描述正确的是____ ______.A) 数组的⼤⼩是固定的,但可以有不同类型的数组元素。
数组试题及答案
数组试题及答案1. 定义一个整型数组,包含10个元素,并初始化为0。
答案:```cint array[10] = {0};```2. 编写一个函数,用于计算数组中所有元素的和。
答案:```cint sumArray(int arr[], int size) {int sum = 0;for (int i = 0; i < size; i++) {sum += arr[i];}return sum;}```3. 给定一个数组,编写一个函数来找到数组中的最大值。
答案:```cint findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```4. 编写一个程序,将一个数组中的所有元素逆序输出。
答案:```cvoid reverseArray(int arr[], int size) {for (int i = size - 1; i >= 0; i--) {printf("%d ", arr[i]);}}```5. 给定一个整数数组,编写一个函数,将数组中的所有负数移到数组的开头,所有非负数移到数组的末尾。
答案:```cvoid moveNegativesToFront(int arr[], int size) {int j = 0;for (int i = 0; i < size; i++) {if (arr[i] < 0) {arr[j++] = arr[i];}}for (int i = j; i < size; i++) {arr[i] = 0;}}```6. 编写一个函数,用于检查数组中是否存在重复元素。
答案:```cbool hasDuplicates(int arr[], int size) {for (int i = 0; i < size; i++) {for (int j = i + 1; j < size; j++) {if (arr[i] == arr[j]) {return true;}}}return false;}```7. 给定一个数组,编写一个函数,用于找出数组中第二大的元素。
数组典型例题及答案
} } printf("%d.", a[p]); }
Output
Please input 10 integers:
17 34 -11 2 5 10 7 -9 0 25
/* input */
The maximum is: 34, the minimum is: -11, the average is 8.00
main()
{
int a[N], n, i, j, t, k, ave=0;
/* 读入数据,计算平均值 */ printf("How many numbers you want to sort? "); scanf("%d", &n); printf ( "Please input %d numbers:\n", n ); for ( i = 0; i <= n-1; i++) { scanf ( "%d", &a[i] );
{ if ( b[j-1] > b[j] ) { t = b[j-1]; b[j-1] = b[j]; b[j] = t;
精心整理
学习资料
} } }
/* 将数组 a 和数组 b 合并到数组 c 中 */ for ( i = 0, j = 0, k = 0; i < N && j < N; k++ )
Program
#define N 5
main()
{
int a[N], b[N], c[2*N], i, j, t, k;
数组选择试题及答案解析
数组选择试题及答案解析一、选择题1. 下列关于数组的描述中,错误的是:A. 数组是一种基本的数据结构,可以存储相同类型的多个元素B. 数组在内存中是连续存储的C. 数组的大小在定义后可以改变D. 数组可以通过索引来访问元素2. 假设有一个整型数组 int[] arr = {1, 2, 3, 4, 5}; 以下哪个表达式是正确的:A. arr[0] = 10B. arr[5] = 6C. arr[-1] = 0D. arr[5]3. 在Java中,以下哪个方法可以用来获取数组的长度:A. length()B. size()C. count()D. total()4. 假设有一个数组 int[] numbers = new int[5]; 以下哪个操作是合法的:A. numbers[5] = 10B. numbers[-1] = 0C. numbers[4] = 100D. numbers[0] = 55. 在C语言中,以下哪个数组声明是正确的:A. int arr[] = {1, 2, 3};B. int arr[3] = {1, 2, 3};C. int arr[3] = 1, 2, 3;D. int arr = {1, 2, 3};二、答案解析1. 答案:C解析:数组的大小在定义后是不可变的,这是数组的一个基本特性。
2. 答案:A解析:数组索引从0开始,arr[0]是第一个元素,可以赋值为10。
3. 答案:A解析:在Java中,数组的长度通过length属性获取。
4. 答案:C解析:数组索引从0到数组长度减一,所以索引4是合法的,可以赋值为100。
5. 答案:A解析:在C语言中,数组的声明可以不指定大小,编译器会根据初始化列表的长度自动计算数组的大小。
选项A是正确的声明方式。
数组典型例题分析与解答
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 11 4 23 2 42 3 3【答案】 l、2、4、34 用"选择排序法"对n个数据排序,需要进行n-1步。
其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。
经典算法试题及答案
经典算法试题及答案题目一:找出旋转排序数组中的最小值题目描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。
例如,数组 `[0,1,2,4,5,6,7]` 可能变为`[4,5,6,7,0,1,2]`。
请找出并返回数组中的最小元素。
说明:- 原数组是一个升序排序的数组- 数组中可能包含重复的元素- 你的算法应该具有 O(log n) 的时间复杂度答案解析:这个问题可以通过二分查找的方法来解决。
以下是详细的解题步骤:1. 初始化两个指针 `left` 和 `right` 分别指向数组的开头和结尾。
2. 当 `left` 小于 `right` 时,执行以下步骤:- 找到中间位置 `mid`。
- 如果 `nums[mid]` 大于 `nums[right]`,则最小值在 `mid+1` 到 `right` 之间,更新 `left = mid + 1`。
- 如果 `nums[mid]` 小于 `nums[right]`,则最小值在 `left` 到 `mid` 之间,更新 `right = mid`。
- 如果 `nums[mid]` 等于 `nums[right]`,则无法判断最小值的位置,需要减少 `right`。
3. 当 `left` 等于 `right` 时,返回 `nums[left]`。
代码实现:```pythondef findMin(nums):left, right = 0, len(nums) - 1while left < right:mid = left + (right - left) // 2if nums[mid] > nums[right]:left = mid + 1elif nums[mid] < nums[right]:right = midelse:right -= 1return nums[left]```题目二:合并两个有序链表题目描述:将两个有序链表合并为一个新的有序链表。
第3章 数组(习题答案及解析)
习题3 参考答案一、选择题3.1 C 分析:本题考查程序和数组的基本概念。
3.2 A 分析:字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关系,B选项不正确;字符串比较大小除了使用库函数strcn3()以外,就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小。
因为字符串在表达式中相当于const char*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。
C选项不正确。
C语言中只有字符串常量而没有字符串变量,D选项描述不正确;空串的长度为0,而以空格打头的字符串的长度至少为1,因此A选项是正确。
3.3 A 分析:如果第一维的长度没有指定,则定义的同时需要完成初始化,否则不知道分配多大的内存空间给它,所以选项B、C错误;二维数组a[2][3]中只有两个元素,都是一维数组,一维下标最大只能是a[1],所以选项D错误;若完成初始化的二维数组,第一维的长度没有指定,则第一维的大小按如下规则确定:若初值个数能被第二维大小整除,所得的商就是第一维的大小,若不能整除,则所得的商加1作为第一维的大小,所以选项A相当于:double a[1][3] = {6};其中a[0][0]=6,其他元素赋值0,选项A正确,答案为A。
3.4 D 分析:本题考察的知识点是:字符串常量。
在C语言中,字符串常量是以双引号括起来的字符序列。
因此B选项和C选项不正确。
字符序列中可包含一些转义字符,转义字符都是以"\"开头的。
A选项中包含了三个"\",前两个(\\)代表了一个"\"字符,后面一个和"""一起(\")被看作一个""",所以该字符串缺少一个结束的""",因此不正确。
D选项的两个"""之间没有任何字符,代表的是一个空串,是合法的字符串常量,因此D选项正确。
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、下面程序的功能是从键盘输入一行字符,统计其中有多少单词。
Java数组练习题(带答案)
一填空题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. 24B. 25C. 18D. 176.下列初始化字符数组的语句中,正确的是__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. 3B. 4C. 5D. 69.下面程序的运行结果是_C___main() {int x=30;int[] numbers=new int[x];x=60;System.out.println(numbers.length);}A. 60B. 20C. 30D. 5010.下面程序的运行结果是__BDF__main() {char s1[]="ABCDEF".toCharArray();int i=0;while(s1[i++]!='\0')System.out.println(s1[i++]);}A. ABCDEFB. BDFC. ABCDED. BCDE11.下面不是创建数组的正确语句CA.float f[][]=new float[6][6];B.float f[]=new float[6];C.float f[][]=new float[][6];D.float[][]f=new float[6][];12.下面不是数组复制方法的是(C)A. 用循环语句逐个复制数组B. 用方法arraycopyC. 用"="进行复制D. 用clone方法13.数组a的第三个元素表示为DA. a(3)B. a[3]C.a(2)D. a[2]14.当访问无效的数组下标时,会发生BA. 中止程序B. 抛出异常C. 系统崩溃D. 直接跳过15.使用arraycopy()方法将数组a复制到b正确的是AA. arraycopy(a,0,b,0,a.length)B. arraycopy(a,0,b,0,b.length)C.. arraycopy(b,0,a,0,a.length)D. arraycopy(a,1,b,1,a.length)16.关于数组默认值,错误的是BA. char--'"u0000'B. Boolean--trueC. float--0.0fD. int-- 017.关于数组作为方法的参数时,向方法传递的是AA. 数组的引用B. 数组的栈地址C. 数组自身D. 数组的元素18.关于数组复制,下列说法错误的是ACA. "="可以实现数组复制B. 运用循环语句进行数组复制必须两个数组长度相同C. arraycopy()方法没有给目标数组分配内存空间D. 数组复制是数组引用的传递19.下列语句会造成数组new int[10]越界是DA. a[0] += 9;B. a[9]=10;C. —a[9]D. for(int i=0;i<=10;i++) a[i]++;20.在JDK环境下编译JAVA源程序使用的命令是(B )A.javaB.javacC.jvmD.tomcatD. 子类不能使用父类的构造方法21.main方法是java Application程序执行的入口点。
数组测试题及答案
数组测试题及答案一、单选题1. 在Java中,数组的默认初始值是什么?A. 0B. 1C. nullD. 随机值答案:A2. 以下哪个方法可以用来获取数组的长度?A. length()B. size()C. count()D. length答案:D3. 如何在Java中声明一个整型数组?A. int[] array;B. int array[];C. both A and BD. neither A nor B答案:C二、填空题1. 在Java中,声明一个大小为10的整型数组,可以使用语句:________。
答案:int[] array = new int[10];2. 如果有一个数组arr,要访问数组的最后一个元素,可以使用索引:________。
答案:arr.length - 1三、判断题1. 数组的索引是从1开始的。
()答案:错误2. 数组的大小在声明后可以改变。
()答案:错误3. 多维数组可以看作是数组的数组。
()答案:正确四、简答题1. 请简述Java中数组和ArrayList的区别。
答案:数组是固定大小的,而ArrayList是动态大小的;数组可以存储基本数据类型和对象,而ArrayList只能存储对象;数组在声明时必须指定大小,而ArrayList可以随着元素的添加自动增长。
2. 如何在Java中反转一个数组?答案:可以使用循环交换数组两端的元素,或者使用Arrays类的reverse方法。
结束语本试题涵盖了数组的基本概念、操作和特性,旨在帮助考生理解和掌握Java中数组的使用。
希望考生通过这些题目能够加深对数组的理解,并在实际编程中灵活运用。
数组练习题及答案
数组练习题及答案问题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;}```结束语:这些练习题涵盖了数组的基本操作、查找、排序和动态扩展等常见问题,希望能够帮助您更好地理解和掌握数组的使用。
数组类型习题及答案
8-1 编写程序,将10个数34,3,29,63,70,16,85,82,90,93存放于一组数组中,求出这十个数的和及平均值。
解:#include ""void main(){int a[10]={34,3,29,63,70,16,,90,93};int i ,sum=0;float average ;for(i=0;i<10;i++){sum=sum+a[i] ;}average=sum/;printf("sum=%d,average=%f\n",sum,average);}运行结果:sum=565,average=思考:数组有何特点此问题如果不用数组进行处理将会怎样8-2 编写程序,求存放于上题数组中10个数的最大值,最小值及所在的位置。
解:#include ""void main(){int a[10]={34,3,29,63,70,16,85,82,90,93};int i,sum,max,min,d_max,d_min;max=min=a[0];d_max=d_min=0;for(i=1;i<10;i++){if(a[i]>max) {max=a[i];d_max=i;}if(a[i]<min) {min=a[i];d_min=i;}}printf("max=%d,a[%d]\n",max,d_max);printf("min=%d,a[%d]\n",min,d_min);}运行结果:max=93,a[9]Min=3,a[1]思考:数组a[i]中i的变化意味着什么8-3 编写程序,从键盘读入50个数存放于一数组中,求出该数组中最大值、最小值及所在位置。
解:#include ""void main(){float a[50],max,min;int i,d_max,d_min;for(i=0;i<50;i++)scanf("%f",&a[i]);max=min=a[0];d_max=d_min=0;for(i=1;i<50;i++){if(a[i]>max) {max=a[i];d_max=i;}if(a[i]<min) {min=a[i];d_min=i;}}printf("max=%d,a[%d]\n",max,d_max);printf("min=%d,a[%d]\n",min,d_min);}思考:此题中不用数组也可以处理吗如果可以,区别之处在哪里8-4将存放于上题数组中的50个数分别按升序,降序排序。
数组练习题及答案
数组练习题及答案第五章数组练习题及答案一、选择题1、判断字符串a和b是否相等,应当使用()A、if(a==b)B、if(a=b)C、if(strcpy(a,b))D、if(strcmp(a,b))2、以下正确的定义语句是()A、int a[1][4]={1,2,3,4,5};B、float x[3][]={{1},{2},{3}};C、long b[2][3]={{1},{1,2},{1,2,3}};D、double y[][3]={0};3、以下各组选项中,均能正确定义二维实型数组a的选项是()A、float a[3][4]; float a[ ][4]; float a[3][ ]={{1},{0}};B、float a(3,4); float a[3][4]; float a[ ][ ]={{0},{0}};C、float a[3][4]; static float a[ ][4]={{0},{0}}; auto float a[ ][4]={{0},{0},{0}};D、float a[3][4]; float a[3][ ]; float a[ ][4];4、下面程序的运行结果是()1—5 DDCBA 6—10 BDABB 11—15 CCCBC 16—20 DDCBB 21—25 BBAAA 26—30 DBDDB#include "stdio.h"main(){ char str[]="SSSWLIA",c;int k;for(k=2;((c=str[k])!='\0');k++){ switch(c){case 'I':++k;break;case 'L':continue;default:putchar(c);continue;}putchar('*');}}A、SSW*B、SW*C、SW*AD、SW5、下面程序段是输出两个字符串中对应相等的字符。
数组经典例题
1、以下哪个操作可以实现将数组arr中的所有元素向右旋转一个位置?A. arr.rotate(1)B. arr.shift()C. temp = arr.pop(); arr.unshift(temp);D. arr.push(arr.shift());(答案)D2、给定一个已排序的数组arr和一个目标值target,下列哪个方法能最高效地查找target在arr中的位置?A. 顺序查找B. 二分查找C. 哈希查找D. 插值查找(在均匀分布时)(答案)B(二分查找在已排序数组中通常最高效)3、以下哪个JavaScript方法可以用来合并两个数组arr1和arr2?A. arr1.merge(arr2)B. arr1.concat(arr2)C. arr1 + arr2D. arr1.join(arr2)(答案)B4、在Python中,如何创建一个包含10个元素,每个元素都初始化为0的列表?A. zeros_list = * 10B. zeros_list = [0 for _ in range(10)]C. zeros_list = list(0 * 10)D. zeros_list = (0,) * 10(虽然这是元组,但为干扰项)(答案)A, B(两者均可)5、下列哪项不是数组的优点?A. 随机访问速度快B. 插入和删除操作效率高C. 数据类型可以一致D. 可以存储大量数据(答案)B(插入和删除操作效率依赖于位置,通常在中间时较低)6、假设有一个整数数组nums,你想找到其中出现次数最多的元素,应该使用以下哪个数据结构来辅助?A. 栈B. 队列C. 哈希表D. 二叉搜索树(答案)C7、在C语言中,如何声明一个名为numbers,包含5个整数的数组?A. int numbers;B. int numbers;C. int numbers = ;D. int numbers[ ] = 5;(答案)A8、给定一个数组arr,你需要找到两个数使得它们的和等于一个给定的数k,以下哪种算法最适合解决这个问题?A. 暴力枚举法,检查每对组合B. 快速排序后双指针法C. 动态规划D. 二分查找(答案)B(快速排序后双指针法可以在O(n)时间内解决问题,前提是数组已排序)。
数组习题及答案
构造数据对象——数组一、填空题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中的第二个数组元素输入数据,格式正确的是()A.scanf(“%d”,a[2]);B.scanf(“%d”,&a[2]);C.scanf(“%d”,&a[1]);D.scanf(“%d”,a(1));三、判断题1.数组在内存中占用的空间是不连续的。
数组作业参考答案
Company Logo
3、在主函数中输入n(1<n<=10)个数整数,编写函数实现将他们从大到小排序,在主函数中输出排好序的数。
Company Logo
4、输入一个正整数n和n阶矩阵a中的元素,如果a是上三角形,输出“YES”;否则,输出“NO”(上三角形矩阵,即主对角线以下的元素都为0,主对角线为从矩阵的左上角至右下角的连线)。
Company Logo
1、输入一个正整数n(1<n<=10),再输入n个整数,按逆序输出这些整数。(第1个数和最后一个数交换,以此类推)
参考答案
Company Logo
2、输入一个正整数n(1<n<=10),再输入n个整数,将最小值与第一个数交换,最大值和最后一个数交换,然后输出交换后的n个数。
Company Logo
7、编写程序,计算并输出1000以内的fiboቤተ መጻሕፍቲ ባይዱacci数。
答案1:(递归)
Company Logo
答案2:非递归
Company Logo
5、插入一个数,使原来排好序的数依然保持有序。
Company Logo
6、判断输入的一串字符是否为“回文”。例如:xyzzyx,abcba都是回文。 输入: Input a string:abcddcba Yes 输入: Input a string:abcddcb No
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,它使用冒泡排序算法将数组从大到小排序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章数组7-1输入一个正整数n(1≤n≤10),再输入n个整数(1)输出最大数和最小数,并输出平均值。
(2)将最小数与第一个数交换,最大数与最后一个数交换,然后输出交换后的结果。
(3)输出所有比平均值大的数。
(4)找到最接近平均值的数。
(提示:考虑差的绝对值)/* 将最小数与第一个数交换,最大数与最后一个数交换*/t=a[0];a[0]=a[q];a[q]=t;t=a[N-1];a[N-1]=a[p];a[p]=t;printf("After exchange: ");for(i=0; i<N; i++)printf("%d ", a[i]);/* 输出所有比平均值大的数*/printf("\nLarger than the average: ");for(i=0; i<N; i++)if(a[i]>ave)printf("%d ", a[i]);/* 找到最接近平均值的数*/printf("\nThe number closest to the average is: ");sub = a[0]>ave? a[0]-ave: ave-a[0];p=0;for(i=1; i<N; i++){ if( (a[i]>ave? a[i]-ave: ave-a[i]) < sub ){ sub = a[i]>ave? a[i]-ave: ave-a[i];p=i;}}printf("%d.", a[p]);}OutputPlease input 10 integers:17 34 -11 2 5 10 7 -9 0 25 /* input */The maximum is: 34, the minimum is: -11, the average is 8.00After exchange: -11 25 17 2 5 10 7 -9 0 34Larger than the average: 25 17 10 34The number closest to the average is: 77-2输入一个日期(按照year-month-day格式),计算该日期为当年的第几天。
(提示:注意闰年)(1)使用数组存储当年每个月应有的天数;(2)不使用数组完成;printf("This date is the %dth day in the year.\n", total);}OutputPlease input a date: (year-month-day) 2008-4-14↵/* input */This date is the 105th day in the year.7-3输入一个正整数n(1≤n≤10),再输入n个整数,将这n个整数从大到小排序,然后在已经排序后的数组中插入平均数(取整),保持数组的升序,将插入平均数后的数组输出。
(1)用冒泡法排序;(2)用选择法排序。
#define N 11main(){ int a[N], n, i, j, t, k, ave=0;/* 读入数据,计算平均值*/printf("How many numbers you want to sort? ");scanf("%d", &n);printf ( "Please input %d numbers:\n", n );for ( i = 0; i <= n-1; i++){ scanf ( "%d", &a[i] );ave += a[i];}ave /= n;/* 冒泡法排序*/for ( i = 1; i <= n-1; i++ ){ for ( j = 1; j <= n - i; j++ ){ if ( a[j-1] < a[j] ){ t = a[j-1];a[j-1] = a[j];a[j] = t;}}}for(i=0; i<n; i++){ if(a[i]>ave)continue;for(j=n; j>i; j--)a[j]=a[j-1];a[i]=ave;break;}for ( i = 0; i <= n; i++ )printf ( "%d ", a[i] );}OutputHow many numbers you want to sort? 5↵/* input */Please input 5 numbers:17 34 -11 2 5↵/* input */34 17 9 5 2 -117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。
输出排序后的数组A、B和C。
Program#define N 5main(){ int a[N], b[N], c[2*N], i, j, t, k;printf("Please input array A (containing %d elements): ", N);for (i=0; i<N; i++)scanf("%d", &a[i]);printf("Please input array B (containing %d elements): ", N);for (i=0; i<N; i++)scanf("%d", &b[i]);/* 冒泡法排序*/for ( i = 1; i < N; i++ ){ for ( j = 1; j <= N - i; j++ ){ if ( a[j-1] > a[j] ){ t = a[j-1];a[j-1] = a[j];a[j] = t;}}}for ( i = 1; i < N; i++ ){ for ( j = 1; j <= N - i; j++ ){ if ( b[j-1] > b[j] ){ t = b[j-1];b[j-1] = b[j];b[j] = t;}}}/* 将数组a和数组b合并到数组c中*/for ( i = 0, j = 0, k = 0; i < N && j < N; k++ )if ( a[i] <= b[j] )c[k] = a[i++];elsec[k] = b[j++];while ( i < N )c[k++] = a[i++];while ( j < N )c[k++] = b[j++];printf("Array C is: ");for ( i = 0; i < 2*N; i++ )printf ( "%d ", c[i] );}OutputPlease input array A (containing 5 elements):17 34 -11 2 5↵/* input */ Please input array B (containing 5 elements): 10 7 -9 0 25↵/* input */ Array C is: -11 -9 0 2 5 7 10 17 25 347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。
main(){ int n, m, b[16]={0}, i=15;printf("Please input an integer: ");scanf("%d", &n);m = n>=0? n: -n;while(m){ b[i--]=m%2;m = m/2;}/* 负数的补码*/if(n<0){ for(i=0; i<16; i++) /* 取反*/b[i] = b[i]==1? 0: 1;for(i=15; i>=0; i--) /* 加1 */{ if(b[i]==0){ b[i] = 1;break;}elseb[i] = 0;}}printf("The binary complemental code of %d is: ", n);for(i=0; i<16; i++){ printf("%d", b[i]);if(i==7)printf(" ");}}Output (1)Please input an integer: 9↵/* input */The binary complemental code of 9 is: 00000000 00001001Output (2)Please input an integer: -9↵/* input */The binary complemental code of -9 is: 11111111 111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。
示例: 1 1 1 1 01 1 1 0 -11 1 0 -1 -11 0 -1 -1 -10 -1 -1 -1 -17-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。
7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。
7-9杨辉三角形(也叫Pascal三角形)如下:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。
输入正整数n (1~15),读取并输出杨辉三角形的前n 行元素。
(提示:如果用i 表示行,用j 表示列,则第i 行j 列元素p i, j =p i-1,j-1 + p i-1, j )7-10 矩阵A 和矩阵B 相乘,要求A 的列数和B 的行数相同。
例如:m 行n 列的矩阵A 和n 行p 列的矩阵B 相乘,得到m 行p 列的矩阵C ,C 中的i 行j 列元素c ij 由下列公式得到:kj nk ik ij b a c ∑==1其中,a ik 是矩阵A 中的i 行k 列元素,b kj 是矩阵B 中的k 行j 列元素。