




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第九章 數(shù)組一、選擇題 9.1 若已定義:int a=0,1,2,3,4,5,6,7,8,9,*p=a,i;其中0i<=9,則對a數(shù)組元素的引用不正確的是A) ap-a B) *(&ai) C) pi D) *(*(a+i)【解析】A:p開始是數(shù)組a首地址,只要p+則再減去a的首地址ap-a就能取到所有元素,B:&ai循環(huán)取其地址,*(&ai) 是該地址中所存儲的元素 C:p就是指針變量,相當(dāng)于ai,D: *(a+i) 則正確
2、9.2 以下程序段數(shù)組所有元素輸入數(shù)據(jù),應(yīng)在下劃線填入的是A) a+(i+) B) &ai+1 C) a+i D) &a+imain() int a10,i=0;while(i<10) scanf("%d",);【解析】因為要遍歷,所以排除B.C,因為D先加1再取值,丟了a0 9.3 以下程序的輸出結(jié)果是 A) 3
3、; B) 4 C) 1 D) 2main() int a10=1,2,3,4,5,6,7,8,9,10,*p=a; printf("%dn",*(p+2); 【解析】*p=a;p指向首地址,*(p+2)往后移動兩個元素,指向3 9.4 以下程序的輸出結(jié)果是A) 不確定的值
4、160; B) 3 C) 2 D) 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
5、60; C)19 D)20main() 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=191 / 16 9.6 以下程序的輸出結(jié)果是A) 6 B) 8
6、160; C) 4 D) 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中的內(nèi)容賦給a本身,所以a2=6 9.7 以下程序的輸出結(jié)果是A) 720 B) 120 C) 24
7、60; D) 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("%dn",x);【解析】調(diào)用x=f(a,3);for循環(huán)4次,將前四個元素相乘,即得r=2*3*4*5; 9.8 以下程序中若第一個printf語句輸出的是194,則第二個printf語句的輸出結(jié)
8、果是A) 212 B) 204 C) 1a4 D) 1a6 12main() int a=1,2,3,4,5,6,7,8,9,0,*p;p=a;printf("%xn",p);printf("%xn",p+9);
9、60; 【解析】因為開始p的地址為194,p+9是指指針向后移動9個元素,而不是9個字節(jié),每個int占2個字節(jié),所以共移動18個字節(jié),1個字節(jié)占一個存儲單位,%xn"是16進制,將18轉(zhuǎn)化成16進制是12,所以194+12=2a6 9.9 以下程序的輸出結(jié)果是A) 0987654321 B) 4321098765 C) 5678901234 D) 0987651234fun(int *s,int n1,int n2) int i,j,t;
10、 i=n1; 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); fun(p,4,9); fun(p,0,9);for(i=0;i<10;i+) printf("%d",*(a+i);【解析】為了使大家清晰地看出fun(int *s,int n
11、1,int n2)的作用,我自己完善了程序如下:#include <stdio.h>#include <stdlib.h>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); *(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"
12、;); 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;i+) printf("%d",*(a+i);printf("n");結(jié)果如下:其實,fun(p,0,3);就是將a中的前4個元素倒序,fun(p,4,9); 就是將a中的第5個到第10個倒序,最后fun(p,0,9);全部元素倒序。 9.10 以下程序的輸出結(jié)果是A) 4 4
13、 B) 2 2 C) 2 4 D) 4 6main() int a5=2,4,6,8,10,*p,*k;p=a; k=&p;printf("%d",*(p+);printf("%dn",*k);【解析】p指向a的第一個元素,printf("%d",*(p+);先輸出第一個元素為2,然后p+,所
14、以p的地址就為指向4,k=&p; k是存放p的地址的,*k=p,*k就是p所指的元素為4,所以結(jié)果為24 9.11 當(dāng)運行以下程序時輸入三行,每行都是在第一列上開始,CR代表Enter鍵;a<CR>b<CR>cdef<CR>則程序的輸出結(jié)果是A)abcdef B)a C)a D)ab
15、60; b bc cd cdef d
16、; f#include "stdio.h"#define N 6main() char cN; int i=0
17、;for(i=0;i<N;i+) ci=getchar();for(i=0;i<N;i+) putchar(ci);【解析】回車鍵也是字符,所以a<CR>b<CR>cd這六個字符輸出 9.12 若有定義和語句: int c45,(*cp)5; cp=c;則對C數(shù)組元素的引用正確的是 A) cp+1
18、60; B) *(cp+3) C) *(cp+1)+3 D) *(*cp+2)【解析】cp是行指針,只表示行,若要表示元素,則需要配合列A:表示第二行 B:表示第四行的內(nèi)容,但是為指出那一列 C:*(cp+1)+3只是地址不是元素值,需改為 *( *(cp+1)+3) 9.13 若已定義: int a43=1,2,3,4,5,6,7,8,9
19、,10,11,12,(*prt)3=a,*p=a0;則能夠正確表示數(shù)組元素a12的表達式是A) *(*prt+1)2) B) *(*(p+5) C) (*prt+1)+2 D) *(*(a+1)+2)【解析】A:多了外層的*(),B:p是行地址,加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+) &
20、#160;pi=ai;則下能夠正確表示a數(shù)組元素的表達式是A) a43 B) p00 C) prt22 D)(*(p+1)1 9.15 以下程序的輸出結(jié)果是 A) 23 B) 26 C) 33
21、0; D) 36main() int aa33=2,4,6,i,*p=&aa00; for(i=0;i<2;i+) if(i=0) aaii+1=*p+1;else +p;printf("%d",*p); printf("n");【解析】p指向第一個元素2,if(i=0) aaii+1=*p+1;給aa01賦值2+1=3打印出p的內(nèi)容為2,第二次for循環(huán)+p,使p指向下一個元素即aa01=3,輸出其內(nèi)容為3 9.16 以下程序的輸出結(jié)果是
22、 A) 60 B) 68 C) 99 D) 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<3;i+) &
23、#160;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=60 9.17 以下程序的輸出結(jié)果是 A) 1,5,9, B) 1,4,7,
24、160; 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);【解析】即輸出x02 x11 x20分別為3 5 7 9.18 若有定義語句int (*p)M; 其中的標(biāo)識符是 A)M個指向整型變量的指針
25、; B)指向M個整型變量的函數(shù)指針C)一個指向具有M個整型元素的一維數(shù)組指針 D)具有M個指針元素的一維指針數(shù)組,每個元素都只能指向整型量 二、填空題 9.19 若有以下定義: double w10;則數(shù)組元素下標(biāo)的上限是 9 ,下限是
26、;0 。 9.20 以下程序的輸出結(jié)果是6 。main() int a=2,4,6,*ptr=&a0,x=8,y,z;for(y=0;y<3;y+)z=(*(ptr+y)<x)?*(ptr+y):x;printf("%dn",z);【解析】因為a中元素永遠小于x=8,所以每次For循環(huán)都執(zhí)行
27、z=(*(ptr+y),循環(huán)3次最后輸出的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十個
28、數(shù),for循環(huán)4次,k+=arri+i;得k=0+0+1+1+2+2+3+3=12 9.22 以下程序的輸出結(jié)果是 3 .#define N 5fun(char *s,char a,int n) int j;*s=a;j=n;while(a<sj) j-;return j;main() char sN+1; int k,p;for(k=1;k<=N;k+) sk='A'+k+1;printf("%d
29、n",fun(s,'E',N); 9.23 若輸入3個整數(shù)3、2、1,則以下程序的輸出結(jié)果是 2721 。#include <stdio.h>#include <stdlib.h>void sub(int n,int uu) int t;t=uun-; t+=3*uun; n+;if(t>=10) uun+=t/10; uun=t%10;else
30、 uun=t; main() int i,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);printf("n"); 9.24 以下程序的輸出結(jié)果是 -850,2,0 .main()
31、160;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返回數(shù)組s中
32、最大元素的下標(biāo),數(shù)組中元素的個數(shù)由t傳入,請?zhí)羁?。findmax(int s,int t) int k,p; for(p=0,k=p;p<t;p+) if(sp>sk) k=p return k; 9.26 以下程序統(tǒng)計從終端入的字符中大寫字母的個數(shù),中統(tǒng)計字母的個數(shù),其它依次類推。用號結(jié)束輸入,請?zhí)羁铡?include "stdip.h"
33、;#include "ctype.h"main() int num26=0,i; char c;while(c=getchar()!="#") if(isupper(c) num +=1;for(i=0;i<26;i+)if(numi) printf("%c:%dn",i+'A',numi);
34、;三、編程題 9.27 輸入一行數(shù)字字符,請用數(shù)組元素作為計數(shù)器來統(tǒng)計每個數(shù)字字符的個數(shù)。用下標(biāo)為0元素統(tǒng)計字符“1”的個數(shù),下標(biāo)為1的元素統(tǒng)計字符“2”的個數(shù),.?!窘馕觥?include <stdio.h>#include <stdlib.h>#include <ctype.h>main() int num10=0,number;char aa;printf("請輸入一串?dāng)?shù)字,并以#結(jié)束:");while(aa=getchar()!='#')number=(int)aa; /將字符強制轉(zhuǎn)
35、化為數(shù)字number -=48; /由于0的ASCII碼為48,所以轉(zhuǎn)換后要減去48numnumber-1+; /出現(xiàn)一個字符,將記錄該字符個數(shù)的數(shù)組元素相應(yīng)加1for(int i=0;i<9;i+)printf("%d的個數(shù)為:%dt",i+1,numi); /輸出結(jié)果printf("n"); 9.29 編寫函數(shù)把數(shù)組中所有奇數(shù)放在另一個數(shù)組中返回。#include <stdio.h>#define N 10main() int num1N=2,3,56,78,13,45,66,79,80,91,*pt
36、r,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+)if(num2i!=0)printf("Odds的元素為:%2dt",num2i);printf("n"); 9.30 編寫函數(shù)對字符數(shù)組中的輸入字母,按由大到小的字母順序進行排序。#include <stdio.h>main() char chr='a','h','c&
37、#39;,'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=0;i<15;i+)printf("chr%2d: %c t",i,chr
38、i);printf("n"); 9.31 輸入若干有序數(shù)放在數(shù)組中。然后輸入一個數(shù),插入到此有序數(shù)列中,插入后,數(shù)組中的數(shù)仍然有序。請對以下三種情況運行你的程序,以便驗證你的程序是否下確。 (1)插在最前 (2)插在最后 (3)插在中間#include <stdio.h>#include <stdlib.h>#include <ctype.h>#define N 6int judgePositi
39、on(int ,int);void exchange(int ,int,int);main() int arrN=10,20,30,40,50,insert,posit;printf("請輸入待插入的數(shù):n");scanf("%d",&insert);posit=judgePosition(arr,insert);exchange(arr,posit,insert);printf("n");int judgePosition(int temp,int insert)int i; for(i=0;i<N-1;i+)if(i
40、nsert<tempi) break; return i;void exchange(int temp,int posit,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); 9.32 編寫函數(shù)把任意十進制下整數(shù)轉(zhuǎn)換成二進制數(shù)。提示:把十進制數(shù)不斷被2除余數(shù)放在一個一維數(shù)組中,直到商數(shù)為零。在主函數(shù)中進行輸出,要求不得按逆序輸出。#include &
41、lt;stdio.h>#define N 10main() int origin,resultN,i=0;printf("請輸入一個十進制的數(shù):n");scanf("%d",&origin);do resulti=origin%2;origin /=2;i+;while(origin); printf("該十進制數(shù)轉(zhuǎn)化為二進制數(shù)為:"); for(int j=i-1;j>=0;j-) printf("%d",resultj); printf("n"); 9.33
42、160; 編寫函數(shù)調(diào)用隨機函數(shù)產(chǎn)生0到19之間的隨機數(shù),在數(shù)組中存入15個互不重復(fù)的整數(shù)。要求在主函數(shù)中輸出結(jié)果。若已定義為類型,調(diào)用隨機函數(shù)步驟如下: #include "stdlib.h" x=rand()%20 /*產(chǎn)生0到19的隨機數(shù)*/#include <stdio.h>#inc
43、lude <stdlib.h>#define N 15void random();int compare(int ,int,int);main() random(); printf("n");void random()int randomN=0,tag=0,x=-1,i;for(i=0;i<N;i+)x=rand()%20; /*產(chǎn)生0到19的隨機數(shù)*/tag=compare(random,x,i);while(tag!=1)x=rand()%20; /*產(chǎn)生0到19的隨機數(shù)*/tag=compare(random,x,i);randomi=x;print
44、f("15個0-19的不同隨機數(shù)為:");for(i=0;i<N;i+)printf("%dt",randomi); int compare(int random,int x,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;f
45、or(int i=0;i<M;i+)for(int j=0;j<M;j+)printf("請輸入元素:");scanf("%d",&recij);for( i=0;i<M;i+)for(int j=0;j<M;j+)printf("rec%d%d=%dt",i,j,recij);printf("n");printf("n");for( i=0;i<M;i+)for(int j=0;j<M;j+) coli =coli+recij;veri +=recj
46、i;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);若要改變矩陣的維數(shù)可以只改變M的大小即可。 9.35 編寫程序求兩個矩陣的和。#include <stdio.h>#define M 4#define N 3void input(int MN )
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小區(qū)設(shè)備供應(yīng)管理辦法
- 腸梗阻說課課件
- 豐縣教招數(shù)學(xué)試卷
- 二上西師數(shù)學(xué)試卷
- 建筑領(lǐng)域培訓(xùn)課件
- 高二懷化市統(tǒng)考數(shù)學(xué)試卷
- 肝中醫(yī)講解課件
- 福建小學(xué)畢業(yè)班數(shù)學(xué)試卷
- 肉癭的護理課件
- 肝病的診斷和治療技術(shù)進展
- 2025年廣東省中考英語試題卷(含答案解析)
- 2025年吉林省中考物理試卷真題及答案詳解(精校打印版)
- 江蘇省南京市六校聯(lián)合體2024-2025學(xué)年高一下學(xué)期期末調(diào)研測試歷史試題(含答案)
- 標(biāo)準(zhǔn)的編寫講課件
- 學(xué)堂在線 護理研究方法 期末考試答案
- 2025年湖南省中考英語試卷真題(含答案解析)
- 2025年法律職業(yè)資格考試民法專項練習(xí)卷:合同法真題解析及試題
- 2025年天津市中考英語真題試卷及答案
- 鄉(xiāng)鎮(zhèn)會議制度管理制度
- 玻尿酸介紹課件
- 2024年個人信用報告(個人簡版)樣本(帶水印-可編輯)
評論
0/150
提交評論