您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 程序设计基础(人民邮电)答案第7章数组
164一、选择题1.对一维数组a的正确说明是D。A)inta(10);B)intn=10,a[n];C)intn;D)#defineSIZE10scanf(%d,&n);inta[SIZE];inta[n];2.能对二维数组a进行正确初始化的语句是B。A)inta[2][]={{1,0,1},{5,3,2}};B)inta[][3]={{1,2,3},{4,5,6}};C)inta[2][4]={{1,2,3},{4,5},{6}};D)inta[][3]={{1,0,1},{1,2,3,4},{1,1}};3.对两个数组a和b进行如下初始化chara[]=ABCDEF;charb[]={'A','B','C','D','E','F'};则以下叙述正确的是D。A)a与b数组完全相同B)a与b长度相同C)a和b中都存放字符串D)a数组比b数组长度长4.以下数组定义中不正确的是D。A)inta[2][3];B)intb[][3]={0,1,2,3,4,5};C)intc[100][100]={0};D)intd[3][]={{1,2},{1,2,3},{1,2,3,4}};5.以下选项中,不能正确赋值的是A。A)chars1[10];s1=Ctest;B)chars2[]={'C','t','e','s','t'};C)chars3[20]=Ctest;D)chars4[]=Ctest\n二、阅读程序写出结果1.#includestdio.hvoidmain(){charch[7]={12ab56};inti,s=0;for(i=0;ch[i]='0'&&ch[i]='9';i+=2)s=10*s+ch[i]-'0';printf(%d\n,s);}答案:12.#includestdio.hvoidmain(){inta[10]={1,2,2,3,4,3,4,5,1,5};intn=0,i,j,c,k;for(i=0;i10-n;i++){c=a[i];165for(j=i+1;j10-n;j++)if(a[j]==c){n++;for(k=j;k10-n;k++)a[k]=a[k+1];}}for(i=0;i(10-n);i++)printf(%d,a[i]);}答案:123453.#includestdio.hvoidmain(){inti;chara[]=Time,b[]=Tom;for(i=0;a[i]!='\0'&&b[i]!='\0';i++)if(a[i]==b[i])if(a[i]='a'&&a[i]='z')printf(%c,a[i]-32);elseprintf(%c,a[i]+32);elseprintf(*);}答案:t*M4.#includestdio.h#defineLEN4voidmain(){intj,c;staticcharn[2][LEN+1]={8980,9198};for(j=LEN-1;j=0;j--){c=n[0][j]+n[1][j]-2*'0';n[0][j]=c%10+'0';}for(j=0;j=1;j++)puts(n[j]);}答案:70789198166三、程序填空1.程序的功能是在a数组中查找与x值相同的元素的所在位置。#includestdio.hvoidmain(){inta[11],x,i;printf(Enter10integers:\n);for(i=1;i=10;i++)scanf(%d,a[i]);printf(Enterx:);scanf(%d,&x);a[0]=x;i=10;while(x!=a[i])(1);if((2))printf(%5d'spositionis:%4d\n,x,(3));elseprintf(%dNotbeenfound!\n,x);}答案:(1)i—(2)i=1(3)i2.数组a包括10个整型元素,从数组a的第2个元素开始,分别将后项减前项之差存入数组b,并按每行3个元素的格式输出数组b。例如b[0]=a[1]-a[0]。#includestdio.hvoidmain(){inta[10],b[10],i;for(i=0;(1);i++)scanf(%d,&a[i]);for(i=1;(2);i++)b[i]=a[i]-a[i-1];for(i=1;i10;i++){printf(%3d,b[i]);if((3))printf(\n);}}答案:(1)i=9(2)i=9167(3)i%3==0四、程序改错1.程序的功能是:计算数组各元素之和,并存入首元素中。#includestdio.hvoidmain(){inta[10]=[0];/****found****/inti;for(i=0;i10;i++)scanf(%d,&a[i]);for(i=1;i=10;i++)a[0]=a[0]+a[i];/****found****/printf(%d\n,a[0]);}答案:(1)inta[3]={0};(2)for(i=1;i3;i++)a[0]=a[0]+a[i];2.函数fun的功能是:将数组s中的字符串的反序和正序连接后形成的新字符串放在数组t中。例如,当数组s所存的字符串为ABCD时,数组t应为DCBAABCD。#includeconio.h#includestdio.h#includestring.hvoidfun(chars[],chart[]){inti,d;d=strlen(s);for(i=1;id;i++)/****found****/t[i]=s[d-1-i];for(i=0;id;i++)t[d+i]=s[i];t[2*d]='/0';/****found****/}voidmain(){chars[100],t[100];clrscr();printf(\nPleaseenterstringS:);scanf(%s,&s);/****found****/fun(s,t);168printf(\nTheresultis:%s\n,t);}答案:(1)for(i=0;id;i++)(2)t[2*d]='\0’(3)scanf(“%s”,s)五、程序问答1.#includestdio.hvoidmain(){inta[100],i,j,n,p;printf(输入数值的个数n和数列a\n);scanf(%d,&n);scanf(%d,&a[0]);for(i=1;i=n-1;i++){scanf(%d,&a[i]);p=a[i];j=i-1;while(pa[j]&&j=0){a[j+1]=a[j];j--;}a[j+1]=p;}for(i=0;in;i++)printf(%d,a[i]);printf(\n);}问题1:该程序的功能是什么?问题2:如果先输入一个10,再输入下面的10个数:1928374655则该程序输出什么?答案:(1).升序(2).12345567892.#includestdio.hvoidmain(){inta[]={11,33,27,33,-1,22,-8,12};inti,t,j;169for(i=0;i8-1;i++)for(j=8-1;ji;j--)if(a[j-1]a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}for(i=0;i8;i++)printf(“%4d”,a[i]);}问题1:此程序的运行结果是什么?问题2:若将函数中的语句:if(a[j-1]a[j])改成:if(a[j-1]a[j])则程序的运行结果是什么?答案:(1).333327221211-1-8(2).-8-1111222273333六、编程1.在一组数中找出最大与最小值之差。#includestdio.hvoidmain(){inta[10],i,x,y;printf(pleaseinputthenumber:\n);for(i=0;i10;i++)scanf(%d,&a[i]);x=a[0];y=a[0];for(i=1;i10;i++){if(a[i]x)x=a[i];if(a[i]y)y=a[i];}printf(theansweris%d,x-y);}2.用选择法将一组整数按降序排序。#includestdio.hvoidmain(){inta[10],i,j,k,t;printf(pleaseinputthenumbers:\n);for(i=0;i10;i++)scanf(%d,&a[i]);170for(i=0;i=8;i++){k=i;for(j=i+1;j=9;j++)if(a[j]a[k])k=j;t=a[k];a[k]=a[i];a[i]=t;}for(i=0;i=9;i++)printf(%d,a[i]);}3.在一个按升序排列的数组中插入一个数,使数组仍有序。#includestdio.hvoidmain(){inta[7]={3,5,7,9,11,23};intb,i,k;scanf(%d,&b);a[6]=b;i=5;while(ba[i]&&i=0){a[i+1]=a[i];a[i]=b;i--;}printf(charuhoudeshuzu\n);for(i=0;i7;i++)printf(%d,a[i]);}4.用“顺序”查找法,在一组数中查找一个值为K的元素。若有,输出YES;若无,输出NO。#includestdio.hvoidmain(){inta[10],i,j,k;printf(pleaseinputthenumbers:\n);for(i=0;i10;i++)scanf(%d,&a[i]);printf(pleaseinputtheaimnumber:\n);scanf(%d,&k);for(i=0;i=9;i++)171if(a[i]==k)break;if(i9)printf(NO\n);elseprintf(YES\n);}5.输出以下形式的图案:****************#includestdio.hvoidmain(){inti,j;for(i=1;i=4;i++){for(j=1;j=i-1;j++)printf();for(j=1;j=9-2*i;j++)printf(*);printf(\n);}}6.将一个数组按逆序重新存放在该数组中。#includestdio.hvoidmain(){inta[10],i,t;printf(pleaseinputthenumbers:\n);for(i=0;i10;i++)scanf(%d,&a[i]);for(i=0;i10/2;i++){t=a[i];a[i]=a[10-1-i];a[10-1-i]=t;}for(i=0;i10;i++)printf(%d,a[i]);}7.打印一个5行的杨辉三角形。172#includestdio.hvoidmain(){inta[5][5]={0},i,j;for(i=0;i=4;i++)a[i][0]=a[i][i]=1;for(i=2;i=4;i++)for(j=1;ji;j++)a[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;i=4;i++){for(j=0;j=i;j++)printf(%3d,a[i][j]);printf(\n);}}8.用二维字符数组存储下列图形并输出。***************#includestdio.hvoidmain(){charc[5][5]={'\0'};inti,j;for(i=0;i5;i++)for(j=i;j5;j++)c[i][j]='*';for(i=0;i5;i++){for(j=0;j5;j++)printf(%c,c[i][j
本文标题:程序设计基础(人民邮电)答案第7章数组
链接地址:https://www.777doc.com/doc-2238080 .html