二級c語言程序設(shè)計(jì)習(xí)題與解答ch9數(shù)組_第1頁
二級c語言程序設(shè)計(jì)習(xí)題與解答ch9數(shù)組_第2頁
二級c語言程序設(shè)計(jì)習(xí)題與解答ch9數(shù)組_第3頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、WORD格式第九章 數(shù)組一、選擇題9.1假設(shè)已定義:int a=0,1,2,3,4,5,6,7,8,9,*p=a,i;其中 0 i<=9, 那么對 a 數(shù)組元素的引用不正確的選項(xiàng)是A)ap-a B) *(&ai) C) pi D) *(*(a+i)專業(yè)資料整理WORD格式【解析】 A :p 開場是數(shù)組a 首地址,只要p+ 那么再減去 a 的首地址元素, B: &ai 循環(huán)取其地址,*(&ai)是該地址中所存儲的元素相當(dāng)于 ai ,D : *(a+i) 那么正確ap-a 就能取到所有C: p 就是指針變量,專業(yè)資料整理WORD格式9.2以下程序段數(shù)組所有元素輸入數(shù)據(jù)

2、,應(yīng)在下劃線填入的是A) a+(i+) B) &ai+1 C) a+i D) &a+i main() int a10,i=0;while(i<10) scanf("%d", );【解析】因?yàn)橐闅v,所以排除B.C,因?yàn)?D 先加 1 再取值,丟了a09.3以下程序的輸出結(jié)果是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) 往后移動(dòng)兩個(gè)元素,指向39.4以下程序的輸出結(jié)果是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 以下程序的輸出結(jié)果是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); 相當(dāng)于 y=1+4+6+8=1

4、9專業(yè)資料整理WORD格式9.6以下程序的輸出結(jié)果是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,相當(dāng)于重新把a(bǔ) 中的內(nèi)容賦給a 本身,所以a2=69.7以下程序的輸出結(jié)果是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);專業(yè)資料整理WORD格式【解析】調(diào)用x=f(a,3);for9.8以下程序中假設(shè)第一個(gè)循環(huán) 4 次,將前四個(gè)元素相乘,即得printf 語句輸出的是194,那么第二個(gè)r=2*3*4*5;printf 語句的輸出結(jié)果是專業(yè)資料整理WORD格式A) 212B) 204C) 1a4D) 1a612專業(yè)資料整理WORD格式main()專業(yè)資料整理WORD格式 int a=1,2,3,4,5,6,7,8,9,0,*p; p=a;printf("%xn",p);printf("%xn",p+9); 專業(yè)資料整理WORD格式【解析】

6、因?yàn)殚_場p 的地址為個(gè) int 占 2 個(gè)字節(jié),所以共移動(dòng)18 轉(zhuǎn)化成 16 進(jìn)制是 12,所以194, p+9 是指指針向后移動(dòng)9 個(gè)元素,而不是9 個(gè)字節(jié),每18 個(gè)字節(jié), 1 個(gè)字節(jié)占一個(gè)存儲單位,%xn" 是 16 進(jìn)制,將194+12=2a6專業(yè)資料整理WORD格式9.9以下程序的輸出結(jié)果是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()專業(yè)資料整理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");結(jié)果如下:其實(shí), fun(p,0,3); 就是將 a 中的前 4 個(gè)元素倒序, fun(p,4,9); 就是將 a 中的第 5 個(gè)到第 10 個(gè)倒序,最后 fun(p,0,9); 全部元素倒序。9.10以下程序的輸出結(jié)果是專業(yè)資料整理WORD格式A)44B)22C)24D)46專業(yè)資料整理WORD格式main() int a5=2,4,6,8,10,*p,*k;p=a;k=&p;printf("%d",*(p+);printf("%dn"

10、,*k);專業(yè)資料整理WORD格式【解析】 p 指向 a 的第一個(gè)元素,以 p 的地址就為指向4, k=&p; k以結(jié)果為24printf("%d",*(p+);是存放 p 的地址的,先輸出第一個(gè)元素為2,然后 p+,所 *k=p ,*k 就是 p 所指的元素為 4,所專業(yè)資料整理WORD格式9.11當(dāng)運(yùn)行以下程序時(shí)輸入三行,每行都是在第一列上開場,CR代表Enter鍵;專業(yè)資料整理WORD格式a<CR>專業(yè)資料整理WORD格式b<CR>cdef<CR>那么程序的輸出結(jié)果是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這六個(gè)字符輸出專業(yè)資料整理WORD格式9.12假設(shè)有定義和語句:專業(yè)資料整理WORD格式int c45,(*cp)5;cp=c;專業(yè)資料整理WORD格式那么對C 數(shù)組元素的引用正確的選項(xiàng)是專業(yè)資料整理WORD格式A) cp+1B) *(cp+3)C) *(cp+1)+

12、3D) *(*cp+2)專業(yè)資料整理WORD格式【解析】cp 是行指針,只表示行,假設(shè)要表示元素,那么需要配合列專業(yè)資料整理WORD格式A:表示第二行值,需改為 * B:表示第四行的內(nèi)容,但是為指出那一列*(cp+1)+3 C:*(cp+1)+3只是地址不是元素專業(yè)資料整理WORD格式9.13假設(shè)已定義:int a43=1,2,3,4,5,6,7,8,9,10,11,12,(*prt)3=a,*p=a0;那么能夠正確表示數(shù)組元素a12 的表達(dá)式是A) *(*prt+1)2)B) *(*(p+5)C) (*prt+1)+2D) *(*(a+1)+2)【解析】 A:多了外層的 * ,B: p 是行

13、地址,加5 越界。 C:少了外層的*9.14假設(shè)有定義和語句: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 數(shù)組元素的表達(dá)式是A) a43B) p00C) prt22D)(*(p+1)19.15以下程序的輸出結(jié)果是A) 23B) 26C) 33D) 36main() intaa33=2,4,6,i,*p=&aa00;專業(yè)資料整理WORD格式for(i=0;i<2;i+)if(i=0)aaii+1=*p+1;else +p;專業(yè)資料整理WORD格式prin

14、tf("%d",*p);專業(yè)資料整理WORD格式printf("n");專業(yè)資料整理WORD格式【解析】 p 指向第一個(gè)元素2, if(i=0)aaii+1=*p+1;內(nèi)容為 2,第二次for 循環(huán) +p ,使 p 指向下一個(gè)元素即給 aa01 賦值 2+1=3 打印出aa01=3 ,輸出其內(nèi)容為3p 的專業(yè)資料整理WORD格式9.16以下程序的輸出結(jié)果是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以下程序的輸出結(jié)果是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假設(shè)有定義語

16、句int (*p)M;其中的標(biāo)識符是A)M 個(gè)指向整型變量的指針B)指向 M 個(gè)整型變量的函數(shù)指針C)一個(gè)指向具有M 個(gè)整型元素的一維數(shù)組指針D)具有 M 個(gè)指針元素的一維指針數(shù)組,每個(gè)元素都只能指向整型量二、填空題9.19假設(shè)有以下定義:doublew10;那么數(shù)組元素下標(biāo)的上限是9,下限是0。9.20以下程序的輸出結(jié)果是6。main() int a=2,4,6,*ptr=&a0,x=8,y,z; for(y=0;y<3;y+)專業(yè)資料整理WORD格式z=(*(ptr+y)<x)"*(ptr+y):x;printf("%dn",z);專業(yè)資料

17、整理WORD格式【解析】 因?yàn)?a 中元素永遠(yuǎn)小于x=8 ,所以每次For 循環(huán)都執(zhí)行z=(*(ptr+y),循環(huán)3 次最后專業(yè)資料整理WORD格式輸出的 z 為 6前幾次的z 都被覆蓋了9.21以下程序的輸出結(jié)果是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 十 個(gè) 數(shù) , for循 環(huán)4 次 , k+=arri+i;得k=0+0+1+1+2+2+3+3=1

18、2專業(yè)資料整理WORD格式9.22以下程序的輸出結(jié)果是3.專業(yè)資料整理WORD格式#defineN5專業(yè)資料整理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);專業(yè)資料整理WORD格式9.23假設(shè)輸入 3 個(gè)整數(shù)3、 2、 1,那么以下程序的輸出結(jié)果是2721。專業(yè)資料整理WORD格式#inclu

19、de <stdio.h>#include <stdlib.h>voidsub(intn,intuu)專業(yè)資料整理WORD格式int t;t=uun-;t+=3*uun;n+;if(t>=10)專業(yè)資料整理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以下程序的輸出結(jié)果是-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);【解析】此題是為找出數(shù)組中的最小值,并輸出其下標(biāo)9.25以下 findmax 返回?cái)?shù)組s 中最大元素的下標(biāo),數(shù)組中元素的個(gè)數(shù)由t 傳入,請?zhí)羁铡?/p>

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以下程序統(tǒng)計(jì)從終端入的字符中大寫字母的個(gè)數(shù),中統(tǒng)計(jì)字母的個(gè)數(shù),其它依次類推。用號完畢輸入,請?zhí)羁铡?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+)專業(yè)資料整理WORD格

22、式if(numi) printf("%c:%dn",i+'A',numi);三、編程題9.27輸入一行數(shù)字字符,請用數(shù)組元素作為計(jì)數(shù)器來統(tǒng)計(jì)每個(gè)數(shù)字字符的個(gè)數(shù)。用下標(biāo)為0 元素統(tǒng)計(jì)字符“1的個(gè)數(shù),下標(biāo)為1 的元素統(tǒng)計(jì)字符“2的個(gè)數(shù), .?!窘馕觥?include <stdio.h>#include <stdlib.h>#include <ctype.h>main()intnum10=0,number;charaa;printf(" 請輸入一串?dāng)?shù)字,并以#完畢: ");while(aa=getchar()

23、!='#')number=(int)aa;/將字符強(qiáng)制轉(zhuǎn)化為數(shù)字number -=48;/ 由于 0 的 ASCII 碼為48,所以轉(zhuǎn)換后要減去 48numnumber-1+;/ 出現(xiàn)一個(gè)字符,將記錄該字符個(gè)數(shù)的數(shù)組元素相應(yīng)加1專業(yè)資料整理WORD格式for(int i=0;i<9;i+)printf("%d 的個(gè)數(shù)為:%dt",i+1,numi);/輸出結(jié)果專業(yè)資料整理WORD格式printf("n");專業(yè)資料整理WORD格式9.29編寫函數(shù)把數(shù)組中所有奇數(shù)放在另一個(gè)數(shù)組中返回。#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+)專業(yè)資料整理WORD格式if(num2i!=0)printf("Odds 的元素為: %2dt",num2i);printf("n");9.30編寫函數(shù)對字符數(shù)組中的輸入字母,按由大到小的字母順序進(jìn)展排序。#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 輸入假設(shè)干有序數(shù)放在數(shù)組中。然后輸入一個(gè)數(shù),插入到此有序數(shù)列中,插入后,數(shù)組中的數(shù)仍然有序。請對以下三種情況運(yùn)行你的程序,以便驗(yàn)證你的程序是否下確。 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("請輸入待插入的數(shù):n");scanf("%d",&insert);專業(yè)資料整理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);專業(yè)資料整理WORD格式9.32編寫函數(shù)把任意十進(jìn)制下整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)。提示:把十進(jìn)制數(shù)不斷被2 除余數(shù)放在一個(gè)一維數(shù)組中,直到商數(shù)為零。在主函數(shù)中進(jìn)展輸出,要求不得按逆序輸出。#include <stdio.h>#define N 10main

29、()intorigin,resultN,i=0;printf("請輸入一個(gè)十進(jìn)制的數(shù):n");scanf("%d",&origin);doresulti=origin%2;origin /=2;i+;while(origin);printf("該十進(jìn)制數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)為:");for(int j=i-1;j>=0;j-)printf("%d",resultj);printf("n");專業(yè)資料整理WORD格式9.33編寫函數(shù)調(diào)用隨機(jī)函數(shù)產(chǎn)生0 到19 之間的隨機(jī)數(shù),在數(shù)組中存入15

30、 個(gè)互不重復(fù)的專業(yè)資料整理WORD格式整數(shù)。要求在主函數(shù)中輸出結(jié)果。假設(shè)已定義為類型,調(diào)用隨機(jī)函數(shù)步驟如下:專業(yè)資料整理WORD格式#include"stdlib.h"專業(yè)資料整理WORD格式x=rand()%20/*產(chǎn)生0 到 19 的隨機(jī)數(shù)*/專業(yè)資料整理WORD格式#include <stdio.h>#include <stdlib.h>#define N 15voidrandom();int compare(int ,int,int);main()random();printf("n");專業(yè)資料整理WORD格式voidr

31、andom()int randomN=0,tag=0,x=-1,i;for(i=0;i<N;i+)x=rand()%20;/* 產(chǎn)生 0 到 19 的隨機(jī)數(shù) */tag=compare(random,x,i);while(tag!=1)x=rand()%20;/* 產(chǎn)生 0 到 19 的隨機(jī)數(shù) */tag=compare(random,x,i);randomi=x;printf("15 個(gè) 0-19 的不同隨機(jī)數(shù)為:");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);專業(yè)資料整理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);專業(yè)資料整理WORD格式假設(shè)要改變矩陣的維數(shù)可以只改變M的大小即可。專業(yè)資料整理WORD格式9.35編寫程序求兩個(gè)矩陣的和。#include <stdio.h>#defi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論