版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、WORD格式第九章 数组一、选择题9.1假设已定义:int a=0,1,2,3,4,5,6,7,8,9,*p=a,i;其中 0 i<=9, 那么对 a 数组元素的引用不正确的选项是A)ap-a B) *(&ai) C) pi D) *(*(a+i)专业资料整理WORD格式【解析】 A :p 开场是数组a 首地址,只要p+ 那么再减去 a 的首地址元素, B: &ai 循环取其地址,*(&ai)是该地址中所存储的元素相当于 ai ,D : *(a+i) 那么正确ap-a 就能取到所有C: p 就是指针变量,专业资料整理WORD格式9.2以下程序段数组所有元素输入数据
2、,应在下划线填入的是A) a+(i+) B) &ai+1 C) a+i D) &a+i main() int a10,i=0;while(i<10) scanf("%d", );【解析】因为要遍历,所以排除B.C,因为 D 先加 1 再取值,丢了a09.3以下程序的输出结果是A)3B)4C)1D)2main() int a10=1,2,3,4,5,6,7,8,9,10,*p=a;printf("%dn",*(p+2); 【解析】 *p=a;p 指向首地址,*(p+2) 往后移动两个元素,指向39.4以下程序的输出结果是A) 不确定的
3、值B) 3C) 2D) 1main() int n2=0,i,j,k=2; for(i=0;i<k;i+) for(j=0;j<k;j+) nj=ni+1; printf("%dn",nk);9.5 以下程序的输出结果是A)17 B)18 C)19 D)20 main()int a=2,4,6,8,10,y=1,x,*p; p=&a1; for(x=0;x<3;x+) y+=*(p+x); printf("%dn",y);【解析】 p=&a1 那么 p 指向元素为4, y+=*(p+x); 相当于 y=1+4+6+8=1
4、9专业资料整理WORD格式9.6以下程序的输出结果是A)6B)8C)4D)2main()int a=2,4,6,8,*p=a,i; for(i=0;i<4;i+) ai=*p+; printf("%dn",a2);【解析】 p=a,相当于重新把a 中的内容赋给a 本身,所以a2=69.7以下程序的输出结果是A) 720B) 120C) 24D) 6f(int b,int n) int i,r=1; for(i=0;i<=n;i+) r=r*bi; return r;main() int x,a=2,3,4,5,6,7,8,9; x=f(a,3);printf(&
5、quot;%dn",x);专业资料整理WORD格式【解析】调用x=f(a,3);for9.8以下程序中假设第一个循环 4 次,将前四个元素相乘,即得printf 语句输出的是194,那么第二个r=2*3*4*5;printf 语句的输出结果是专业资料整理WORD格式A) 212B) 204C) 1a4D) 1a612专业资料整理WORD格式main()专业资料整理WORD格式 int a=1,2,3,4,5,6,7,8,9,0,*p; p=a;printf("%xn",p);printf("%xn",p+9); 专业资料整理WORD格式【解析】
6、因为开场p 的地址为个 int 占 2 个字节,所以共移动18 转化成 16 进制是 12,所以194, p+9 是指指针向后移动9 个元素,而不是9 个字节,每18 个字节, 1 个字节占一个存储单位,%xn" 是 16 进制,将194+12=2a6专业资料整理WORD格式9.9以下程序的输出结果是A) 0987654321 B) 4321098765 C) 5678901234 D) 0987651234 fun(int *s,int n1,int n2) int i,j,t; i=n1; j=n2;while(i<j) t=*(s+i); *(s+i)=*(s+j); *
7、(s+j)=t; i+; j-; main()专业资料整理WORD格式 int a10=1,2,3,4,5,6,7,8,9,0,i,*p=a; fun(p,0,3); fun(p,4,9); fun(p,0,9); for(i=0;i<10;i+) printf("%d",*(a+i);【解析】为了使大家清晰地看出fun(int *s,int n1,int n2) 的作用,我自己完善了程序如下:#include <stdio.h>#include <stdlib.h>fun(int *s,int n1,int n2) inti,j,t;i=n1
8、; j=n2;while(i<j) t=*(s+i); *(s+i)=*(s+j); *(s+j)=t; i+; j-; main() int a10=1,2,3,4,5,6,7,8,9,0,i,*p=a; fun(p,0,3);for(i=0;i<10;i+) printf("%d",*(a+i); printf("n"); fun(p,4,9);for(i=0;i<10;i+) printf("%d",*(a+i);printf("n"); fun(p,0,9);for(i=0;i<10
9、;i+)printf("%d",*(a+i);printf("n");结果如下:其实, fun(p,0,3); 就是将 a 中的前 4 个元素倒序, fun(p,4,9); 就是将 a 中的第 5 个到第 10 个倒序,最后 fun(p,0,9); 全部元素倒序。9.10以下程序的输出结果是专业资料整理WORD格式A)44B)22C)24D)46专业资料整理WORD格式main() int a5=2,4,6,8,10,*p,*k;p=a;k=&p;printf("%d",*(p+);printf("%dn"
10、,*k);专业资料整理WORD格式【解析】 p 指向 a 的第一个元素,以 p 的地址就为指向4, k=&p; k以结果为24printf("%d",*(p+);是存放 p 的地址的,先输出第一个元素为2,然后 p+,所 *k=p ,*k 就是 p 所指的元素为 4,所专业资料整理WORD格式9.11当运行以下程序时输入三行,每行都是在第一列上开场,CR代表Enter键;专业资料整理WORD格式a<CR>专业资料整理WORD格式b<CR>cdef<CR>那么程序的输出结果是A)abcdefB)aC)aD)abbbccdcdefdf
11、#include "stdio.h"#define N 6main() char cN; int i=0; for(i=0;i<N;i+) ci=getchar(); for(i=0;i<N;i+) putchar(ci);【解析】回车键也是字符,所以a<CR>b<CR>cd这六个字符输出专业资料整理WORD格式9.12假设有定义和语句:专业资料整理WORD格式int c45,(*cp)5;cp=c;专业资料整理WORD格式那么对C 数组元素的引用正确的选项是专业资料整理WORD格式A) cp+1B) *(cp+3)C) *(cp+1)+
12、3D) *(*cp+2)专业资料整理WORD格式【解析】cp 是行指针,只表示行,假设要表示元素,那么需要配合列专业资料整理WORD格式A:表示第二行值,需改为 * B:表示第四行的内容,但是为指出那一列*(cp+1)+3 C:*(cp+1)+3只是地址不是元素专业资料整理WORD格式9.13假设已定义:int a43=1,2,3,4,5,6,7,8,9,10,11,12,(*prt)3=a,*p=a0;那么能够正确表示数组元素a12 的表达式是A) *(*prt+1)2)B) *(*(p+5)C) (*prt+1)+2D) *(*(a+1)+2)【解析】 A:多了外层的 * ,B: p 是行
13、地址,加5 越界。 C:少了外层的*9.14假设有定义和语句:int a43=1,2,3,4,5,6,7,8,9,10,11,12,(*prt)3=a,*p4,i;for(i=0;i<4;i+) pi=ai;那么下能够正确表示a 数组元素的表达式是A) a43B) p00C) prt22D)(*(p+1)19.15以下程序的输出结果是A) 23B) 26C) 33D) 36main() intaa33=2,4,6,i,*p=&aa00;专业资料整理WORD格式for(i=0;i<2;i+)if(i=0)aaii+1=*p+1;else +p;专业资料整理WORD格式prin
14、tf("%d",*p);专业资料整理WORD格式printf("n");专业资料整理WORD格式【解析】 p 指向第一个元素2, if(i=0)aaii+1=*p+1;内容为 2,第二次for 循环 +p ,使 p 指向下一个元素即给 aa01 赋值 2+1=3 打印出aa01=3 ,输出其内容为3p 的专业资料整理WORD格式9.16以下程序的输出结果是A) 60B) 68C) 99D) 108main() int a34=1,3,5,7,9,11,13,15,17,19,21,23; int (*p)4=a,i,j,k=0;for(i=0;i<
15、3;i+)for(j=0;j<2;j+)k+=*(*(p+i)+j);printf("%dn",k);【解析】k+=*(*(p+i)+j);即求和:a00+a01+a10+a11+a20+a21=1+3+11+13+17+19=609.17以下程序的输出结果是A) 1,5,9,B) 1,4,7,C) 3,5,7,D) 3,6,9,main() int i,x33=1,2,3,4,5,6,7,8,9; for(i=0;i<3;i+) printf("%d,",xi2-i);【解析】即输出x02x11x20 分别为 3 5 79.18假设有定义语
16、句int (*p)M;其中的标识符是A)M 个指向整型变量的指针B)指向 M 个整型变量的函数指针C)一个指向具有M 个整型元素的一维数组指针D)具有 M 个指针元素的一维指针数组,每个元素都只能指向整型量二、填空题9.19假设有以下定义:doublew10;那么数组元素下标的上限是9,下限是0。9.20以下程序的输出结果是6。main() int a=2,4,6,*ptr=&a0,x=8,y,z; for(y=0;y<3;y+)专业资料整理WORD格式z=(*(ptr+y)<x)"*(ptr+y):x;printf("%dn",z);专业资料
17、整理WORD格式【解析】 因为 a 中元素永远小于x=8 ,所以每次For 循环都执行z=(*(ptr+y),循环3 次最后专业资料整理WORD格式输出的 z 为 6前几次的z 都被覆盖了9.21以下程序的输出结果是12。main() int arr10,i,k=0;for(i=0;i<10;i+) arri=i;for(i=0;i<4;i+)k+=arri+i;printf("%dn",k);【 解 析 】 首 先arri=i; 使 得arr 中 赋 值0-9 十 个 数 , for循 环4 次 , k+=arri+i;得k=0+0+1+1+2+2+3+3=1
18、2专业资料整理WORD格式9.22以下程序的输出结果是3.专业资料整理WORD格式#defineN5专业资料整理WORD格式fun(char *s,chara,int n)int j;*s=a;j=n;while(a<sj) j-;returnj;main()charsN+1;intk,p;for(k=1;k<=N;k+)sk='A'+k+1;printf("%dn",fun(s,'E',N);专业资料整理WORD格式9.23假设输入 3 个整数3、 2、 1,那么以下程序的输出结果是2721。专业资料整理WORD格式#inclu
19、de <stdio.h>#include <stdlib.h>voidsub(intn,intuu)专业资料整理WORD格式int t;t=uun-;t+=3*uun;n+;if(t>=10)专业资料整理WORD格式uun+=t/10;uun=t%10;elseuun=t;main()inti,n,aa10=0;scanf("%d%d%d",&n,&aa0,&aa1);for(i=1;i<n;i+)sub(i,aa);for(i=0;i<=n;i+)printf("%d",aai);pri
20、ntf("n");9.24以下程序的输出结果是-850,2,0.main() int i,j,row,col,m;int arr33=100,200,300,28,72,-30,-850,2,6;m=arr00;for(i=0;i<3;i+)for(j=0;j<3;j+)if(arrij<m)m=arrij; row=i; col=j;printf("%d,%d,%dn",m,row,col);【解析】此题是为找出数组中的最小值,并输出其下标9.25以下 findmax 返回数组s 中最大元素的下标,数组中元素的个数由t 传入,请填空。
21、findmax(int s,int t) int k,p; for(p=0,k=p;p<t;p+) if(sp>sk) k=p ;returnk;9.26以下程序统计从终端入的字符中大写字母的个数,中统计字母的个数,其它依次类推。用号完毕输入,请填空。#include "stdip.h"#include "ctype.h"main() int num26=0,i;char c;while(c=getchar()!="#")if(isupper(c) num+=1;for(i=0;i<26;i+)专业资料整理WORD格
22、式if(numi) printf("%c:%dn",i+'A',numi);三、编程题9.27输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数。用下标为0 元素统计字符“1的个数,下标为1 的元素统计字符“2的个数, .。【解析】#include <stdio.h>#include <stdlib.h>#include <ctype.h>main()intnum10=0,number;charaa;printf(" 请输入一串数字,并以#完毕: ");while(aa=getchar()
23、!='#')number=(int)aa;/将字符强制转化为数字number -=48;/ 由于 0 的 ASCII 码为48,所以转换后要减去 48numnumber-1+;/ 出现一个字符,将记录该字符个数的数组元素相应加1专业资料整理WORD格式for(int i=0;i<9;i+)printf("%d 的个数为:%dt",i+1,numi);/输出结果专业资料整理WORD格式printf("n");专业资料整理WORD格式9.29编写函数把数组中所有奇数放在另一个数组中返回。#include <stdio.h>#
24、define N 10main()int num1N=2,3,56,78,13,45,66,79,80,91,*ptr,count=0,num2N=0; ptr=num1;for(int i=0;i<N;i+)if(ptri%2!=0) num2i=ptri;count +;for(i=0;i<N;i+)专业资料整理WORD格式if(num2i!=0)printf("Odds 的元素为: %2dt",num2i);printf("n");9.30编写函数对字符数组中的输入字母,按由大到小的字母顺序进展排序。#include <stdio
25、.h>main()char chr='a','h','c','k','z','c','h','c','y','l','n','w','q','f','b'char t;for(int i=0;i<14;i+)for(int j=i+1;j<15;j+)if(chri>chrj)t=chri;chri=chrj;chrj=t;for(i
26、=0;i<15;i+)printf("chr%2d: %c t",i,chri);printf("n");9.31 输入假设干有序数放在数组中。然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对以下三种情况运行你的程序,以便验证你的程序是否下确。 1插在最前2插在最后3插在中间#include <stdio.h>#include <stdlib.h>#include <ctype.h>#define N 6intjudgePosition(int ,int);void exchange(int
27、,int,int);main()intarrN=10,20,30,40,50,insert,posit;printf("请输入待插入的数:n");scanf("%d",&insert);专业资料整理WORD格式posit=judgePosition(arr,insert);exchange(arr,posit,insert);printf("n");intjudgePosition(int temp,int insert)int i;for(i=0;i<N-1;i+)if(insert<tempi) break;r
28、eturn i;void exchange(int temp,intposit,int insert )for(int i=N-2;i>=posit;i-)tempi+1=tempi;tempposit=insert;for(i=0;i<N;i+)printf("arr%2d=%2dn",i,tempi);专业资料整理WORD格式9.32编写函数把任意十进制下整数转换成二进制数。提示:把十进制数不断被2 除余数放在一个一维数组中,直到商数为零。在主函数中进展输出,要求不得按逆序输出。#include <stdio.h>#define N 10main
29、()intorigin,resultN,i=0;printf("请输入一个十进制的数:n");scanf("%d",&origin);doresulti=origin%2;origin /=2;i+;while(origin);printf("该十进制数转化为二进制数为:");for(int j=i-1;j>=0;j-)printf("%d",resultj);printf("n");专业资料整理WORD格式9.33编写函数调用随机函数产生0 到19 之间的随机数,在数组中存入15
30、 个互不重复的专业资料整理WORD格式整数。要求在主函数中输出结果。假设已定义为类型,调用随机函数步骤如下:专业资料整理WORD格式#include"stdlib.h"专业资料整理WORD格式x=rand()%20/*产生0 到 19 的随机数*/专业资料整理WORD格式#include <stdio.h>#include <stdlib.h>#define N 15voidrandom();int compare(int ,int,int);main()random();printf("n");专业资料整理WORD格式voidr
31、andom()int randomN=0,tag=0,x=-1,i;for(i=0;i<N;i+)x=rand()%20;/* 产生 0 到 19 的随机数 */tag=compare(random,x,i);while(tag!=1)x=rand()%20;/* 产生 0 到 19 的随机数 */tag=compare(random,x,i);randomi=x;printf("15 个 0-19 的不同随机数为:");for(i=0;i<N;i+)printf("%dt",randomi);int compare(int random,i
32、ntx,int i)for(int j=0;j<=i;j+)if(x=randomj)return 0;return 1;9.34编写程序求任意方阵每行、每列、两对角线一元素之和。#include <stdio.h>#define M 3main()int colM=0,verM=0,recMM,xsum=0,x_sum=0;for(int i=0;i<M;i+)for(int j=0;j<M;j+)printf("请输入元素:");scanf("%d",&recij);for( i=0;i<M;i+)for(
33、int j=0;j<M;j+)printf("rec%d%d=%dt",i,j,recij);专业资料整理WORD格式printf("n");printf("n");for( i=0;i<M;i+)for(int j=0;j<M;j+)coli =coli+recij;veri +=recji;if(i+j=M-1)x_sum +=recij;if(i=j)xsum +=recij;for(i=0;i<M;i+)printf("各行元素之和分别为:col%d=%dn",i,coli);printf("n");for(i=0;i<M;i+)printf("各列元素之和分别为:ver%d=%dn",i,veri);printf("n");printf("主 对 角 线 上 的 元 素 的 和 为 : %dnn副 对 角 线 上 的 元 素 的 和为: %dn",xsum,x_sum);专业资料整理WORD格式假设要改变矩阵的维数可以只改变M的大小即可。专业资料整理WORD格式9.35编写程序求两个矩阵的和。#include <stdio.h>#defi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 优化门诊护理教学策略:教师技能大赛课件
- 全期护理实践中的挑战与对策
- 老年护理专业技能课件获取
- 中医科考核制度
- 2026年领导干部述职述廉述效报告
- 2026年许昌新东方学校26届教师招聘备考题库及一套答案详解
- 2025至2030中国电接触材料行业替代品威胁与竞争壁垒研究报告
- 2025-2030中国聚萘磺酸钠市场发展动态与投资规模预测分析研究报告
- 2025-2030中国原铝行业销售渠道及前景供需平衡性预测研究报告
- 2025-2030卫星导航产业园区定位规划及招商策略咨询报告
- GB/T 20921-2025机器状态监测与诊断词汇
- 护工培训课件内容
- 职业中介活动管理制度
- 瘦西湖景区槐泗河片区水系整治项目(二期)李庄涧环境影响报告表
- 学校维修监控合同协议书
- 生产与运作管理试题及答案
- 贵州省贵阳市云岩区2024-2025学年上学期八年级数学期末试题卷(原卷版+解析版)
- 湖南省2023年普通高等学校对口招生考试英语试卷
- 《疼痛的评估与护理》课件
- 应急通信装备
- 高思导引3-6年级分类题目-数字谜02-三下02-简单乘除法竖式
评论
0/150
提交评论