數(shù)組習(xí)題解答_第1頁
數(shù)組習(xí)題解答_第2頁
數(shù)組習(xí)題解答_第3頁
數(shù)組習(xí)題解答_第4頁
數(shù)組習(xí)題解答_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 7 章 數(shù)組習(xí)題解答1以下各題中,選擇一個正確的翻案。 能正確對一維數(shù)組 a 中所有元素進(jìn)行初始化的是( D)。A. int a5= B. int a=0 C.int a5=0,0,0,0,0 D.int a5=0 #include<stdio.h> void main()int i;int a5=0; for(i=0;i<5;i+)printf("%d ",ai); 有說明 int k=3,a10; 則下列可以正確引用數(shù)組元素的表達(dá)式是( A ) 。A. ak B. a10 C.a1.3 D.a3*5 有定義 int d3=1,2,3,4,5,6;

2、執(zhí)行語句 printf("%c ",d10+'A'); 結(jié)果是( D)。A. A B. B C. D D. E #include<stdio.h> void main()int d3=1,2,3,4,5,6; printf("%c ",d10+'A');有定義 char c='A',ch20='a','b','c','0','d','0'若執(zhí)行: printf("%s ",ch);

3、 結(jié)果為( B)。A. abc ' B. abc C. abcd D. abc0d #include<stdio.h> void main()char c='A',ch20='a','b','c','0','d','0' printf("%s ",ch);對數(shù)組進(jìn)行初始化 char carr='s','t','u','d','e','n','

4、t',barr="student" 則正確的是( D)。A. carr 與 barr 長度相同 B. carr 比 barrC. carr 與 barr 相同 D. carr 比 barr 短 #include<stdio.h> void main()char carr='s','t','u','d','e','n','t',barr="student"182 閱讀下列程序,寫出運行結(jié)果。#in clude<stdio

5、.h> void mai n()int i,j,d44=1,2,3,4,5,6,7,8,4,3,2,1,1,2,3,4;for(i=0;i<4;i+) for(j=0;j<i;j+) if(dij>dji) dji=dij;for(i=0;i<4;i+)prin tf("n ”);for(j=0;j<4;j+)if(j>=i)prin tf("%6d",dij);顯示主對角線以上的元素elseprin tf("%6c",'');putchar('n');運行結(jié)果:1 54

6、46782 34若輸入十進(jìn)制數(shù)3291時,下列程序輸出為:6333#in clude<stdio.h> void mai n()int i,d,m,n; char s8;存儲字符數(shù)組下標(biāo)余數(shù)轉(zhuǎn)換為數(shù)字字符商作為下一輪行循環(huán)操作的被除數(shù)商不為0,繼續(xù)循環(huán)scan f("%d",&n); i=0;/dom=n/8; d=n%8;si='0'+d; i+;n=m; / while(n!=0); / for(i-;i>=0;i-)putchar(si);3.程序填空。從鍵盤輸入一個數(shù),將其插入到一個升序數(shù)組中,保持?jǐn)?shù)組仍然按升序排列。#in

7、 clude<stdio.h>void mai n()int data,temp,k;static int a9=-10,2,4,8,10,15,25,50;prin tf("nEn ter adata:");scan f("%d", &data);a8=data;for(k=8;k>=0;k-)if(ak<ak-1)temp=ak;ak=ak-1;ak-1=data;elsebreak;for(k=0;k<=8;k+)prin tf("%7d",ak);putchar('n');

8、注:原程序的代碼有誤,其核心部分有元素交換操作,這對已按升序排列各元素的數(shù)組,在插入一個元素時是沒有必要的。完整的代碼如下:#in clude<stdio.h>void mai n()int data,k;static int a9=-10,2,4,8,10,15,25,50;prin tf("nEn ter adata:");scan f("%d", &data);for(k=8;k>=0;k-)if(data>ak-1|k=O)akl=data;break;elseak=ak-1;for(k=0; k<=8;k+

9、)prin tf("%7d",ak);putchar('n');運行該程序:En ter adata:9-10248910152550并輸出字母及相從鍵盤輸入一串英文字符(不含空格與其他字符),統(tǒng)計每個字符的個數(shù), 應(yīng)的個數(shù)。#in clude<stdio.h>void mai n()int i=0,c52=0,m=0;char str80;prin tf("I nput a stri ng:");scanf(” ',str);while(stri)if(stri>='A' &&s

10、tri<='Z')cstri-'A'+;if(stri>='a' && stri<='z')cstri-'a'+26+;i+;for(i=0;i<26;i+)if(ci)if(m%8=0)putchar('n');m+;prin tf("%c:%-d ”,i+'A',ci);for(i=0;i<26;i+)if(ci+26)if(m%8=0)putchar('n');m+;prin tf("%c:%-d

11、 ",i+'a',ci+26);putchar('n');90, 85,92,77,80,4. 求一組成績的平均分?jǐn)?shù)以及高于平均分的成績,設(shè)給定的成績?yōu)?62。注:省略數(shù)據(jù)輸入,用隨機函數(shù)產(chǎn)生10 個數(shù),求其平均值。#include<stdio.h>#include<stdlib.h> #include<time.h> void main()int a10,i,sum=0; double average;srand(unsigned)time(NULL); for(i=0;i<10;i+) ai=rand()%

12、100; printf("%d ",ai); putchar('n');for(i=0;i<10;i+) sum+=ai;average=sum/10; printf("average=%lfn",average);運行:95 26 88 83 57 31 33 55 82 30 average=58.000000 5編寫程序,輸入一組整數(shù),將它們排序后由小到大輸出。 起泡法 思路:兩個數(shù)比較,小者前移,大者后移。#include<stdio.h> #include<stdlib.h>#include<

13、time.h> int main()int a10,i,j,t;srand(unsigned)time( NULL);/初始化 rand() 函數(shù)for(i=0;i<10;i+)用隨機數(shù)為數(shù)組元素賦值ai=rand()%100; / printf("Before sorted:n"); for(i=0;i<10;i+) printf("%d ",ai);putchar('n');for(j=0;j<9;j+)for(i=0;i<10-j;i+) if(ai>ai+1) t=ai;ai=ai+1;ai+1

14、=t;printf("After sorted:n");for(i=0;i<10;i+)printf("%d ",ai);putchar('n');return 0;程序運行后輸出:Before sorted: 21 14 78 57 3 61 82 8 52 45 After sorted:3 8 14 21 45 52 57 61 78 82 選擇法 思路:用一個變量 k 保存當(dāng)前最小元素的下標(biāo) , 不進(jìn)行交換 , 直到完成一次內(nèi)循環(huán)的比較后 把 a(k) 交換到希望的位置 a(i):令 k=0,a(k) 與 a(1) 比較 ,

15、 若 a(k)>a(1), 令 k=1, 小者的下標(biāo)存放在 k 中 ; a(k)又與a(2),a(3 ),直到a(10),重復(fù)的工作,結(jié)束后,實現(xiàn)10個數(shù)中的最小者存 放在 a(k) 中。 a(1)與a(k)交換,把最小者存放在a(1)中。 分別令 k=1,2,3 , .,9 重復(fù)的操作。#include<stdio.h>#include<stdlib.h>#include<time.h> int main()初始化 rand() 函數(shù)用隨機數(shù)為數(shù)組元素賦值int a10,i,j,t,k; srand(unsigned)time( NULL);/ fo

16、r(i=0;i<10;i+)ai=rand()%100;/printf("Before sorted:n"); for(i=0;i<10;i+)printf("%d ",ai);putchar('n');for(i=0;i<9;i+)k=i;for(j=i+1;j<10;j+) if(ak>aj)k=j;t=ai;ai=ak;ak=t;printf("After sorted:n"); for(i=0;i<10;i+)printf("%d ",ai);putcha

17、r('n');return 0;6.從鍵盤輸入一個4 X 4整數(shù)矩陣,以主對角線為對稱軸, 將左下角元素中較大元素代替右 上角對應(yīng)元素,并將右上角元素(含對角線元素)輸出。注:本題與 2 題的操作相同。#include<stdio.h>#include<stdlib.h> #include<time.h> int main()int d44,i,j;srand(unsigned)time( NULL);/ for(i=0;i<4;i+)for(j=0;j<4;j+)dij=rand()%100; /printf("%6d

18、",dij);putchar('n');for(i=0;i<4;i+)for(j=0;j<i;j+) if(dij>dji) dji=dij; for(i=0;i<4;i+)printf("n");for(j=0;j<4;j+)if(j>=i) printf("%6d",dij);/ elseprintf("%6c",' ');初始化 rand() 函數(shù)用隨機數(shù)為數(shù)組元素賦值顯示主對角線以上的元素 putchar('n'); return 0

19、;7.通過鍵盤給 3X 4 的二維數(shù)組輸入數(shù)據(jù), #include<stdio.h>然后分別按行和列輸出數(shù)組元素。#include<stdlib.h>#include<time.h>int main()int d34,i,j;srand(unsigned)time( NULL);/for(i=0;i<3;i+)for(j=0;j<4;j+)dij=rand()%100; / printf("%6d",dij);初始化 rand() 函數(shù)用隨機數(shù)為數(shù)組元素賦值 putchar('n');return 0;8編寫程

20、序,將兩個字符串連接起來,不要用strcat 函數(shù)。#include<stdio.h>int main()char a80,b40;int i,j;printf("Input a string:"); scanf("%s",a);printf("Input a string:");scanf("%s",b);i=0;while(ai)i+; / 搜索串尾元素下標(biāo) for(j=0;bj;j+,i+)ai=bj;ai='0'puts(a);return 0;9輸入一行字符串,統(tǒng)計該字符串中字

21、符對ab 的個數(shù)。#include<stdio.h>int main()char a80;int i,n=0;printf("Input a string:"); scanf("%s",a);for(i=0;ai;i+) if(ai='a' && ai+1='b') n+; printf("ab_number=%dn",n); return 0;10從鍵盤輸入 10 個字符串,找出一最長的字符串。 #include<stdio.h>int main()char a

22、580;int i,j,n,max=0;for(i=0;i<5;i+) printf("Input a string:"); scanf("%s",ai); for(i=0,j=0;i<5;i+,j=0)while(aij)j+;if(j>max)max=j;n=i;printf("Max_string:%sn",an);return 0;11 已知數(shù)組a中有m個按升序排列的元素,數(shù)組b中有n個按降序排列的元素,編程將a與b中的所有元素按降序存入數(shù)組c中。#include<stdio.h>#include

23、<stdlib.h>#include<time.h>void risesort(int a,int n)/int i,j,k,t;for(i=0;i<n;i+)k=i;for(j=i+1;j<10;j+)if(ak>aj)k=j; t=ai;ai=ak;ak=t;void dropsort(int a,int n)/int i,j,k,t;for(i=0;i<n;i+)k=i;for(j=i+1;j<n;j+)if(ak<aj)k=j; t=ai;ai=ak;ak=t;void disp(int a,int n) /int i;for

24、(i=0;i<n;i+)printf("%d ",ai); putchar('n');void f(int a,int n)int i;for(i=0;i<n;i+)ai=rand()%100;/升序排序降序排序顯示數(shù)組中的各元素用隨機數(shù)為數(shù)組元素賦值int mai n()int a10,b10,c20,i,j,k;srand(unsigned)time( NULL);/ 初始化 rand()函數(shù)f(a,10);risesort(a,10);disp(a,10);f(b,10);dropsort(b,10);disp(b,10);for(i=9,

25、j=0,k=0;k<20;)/i,j,k分別為數(shù)組 a,b,c 的下標(biāo)if(ai>bj && i!=-1 && j!=10)ck+=ai-;else if(ai=bi)ck+=ai-; ck+=bj+;else if(j!=10)ck+=bj+;else if(i!=-1)ck+=ai-;disp(c,20);return 0;實驗七數(shù)組2.填空程序把兩個數(shù)以下程序分別在a數(shù)組和b數(shù)組中放入an+1和bn+1個由小到大的有序數(shù),組中的數(shù)按由小到大的順序歸并在c數(shù)組中。#in clude<stdio.h>int mai n()int a10

26、=1,2,5,8,9,10,a n=5;int b10=1,3,4,8,12,18,b n=5;int i,j,k,c20,max=9999;aa n+1=bb n+1=max;i=j=k=0;while(ai!=max) | (bj!=max)if(ai<bj)ck=ai;k+;i+; _elseck=bj;k+;j+;for(i=0;i<k;i+)pri ntf("%4d",ci);prin tf("n");return 0;以下程序以每行輸出8個數(shù)據(jù)的形式輸出a數(shù)組。#in clude<stdio.h>#in clude&l

27、t;stdlib.h>#in clude<time.h>int mai n()int a50,i;for(i=0;i<50;i+)scanf(”sran d( un sig ned)time( NULL);for(i=0;i<50;i+)ai=ra nd()%100;for(i=0;i<50;i+)if(i%8=0)pri ntf("n");prin tf("%3d",prin tf("n");return 0;以下程序?qū)?shù)組中的數(shù)據(jù)按逆序存放。#in clude<stdio.h>#in

28、 clude<stdlib.h>#in clude<time.h>#define SIZE 12int mai n()int aSIZE,i,j,t;for(i=0;i<SIZE;i+)sca nf("%d",&ai);sran d( un sig ned)time( NULL);for(i=0;i<SIZE;i+)ai=ra nd()%100;pri ntf("%3d",ai); putchar('n');i=0;j=SIZE-1;while(i<j)t=ai;ai=aj;aj=t; i

29、+;j-=_for(i=0;i<SIZE;i+)pri ntf("%3d",ai);prin tf("n");return 0;假設(shè)a數(shù)組中的數(shù)按由小到大的順序存放,以下程序把a數(shù)組中相同的數(shù)刪得只剩下一個,然后以每行5個數(shù)的形式輸出a數(shù)組中的數(shù),請?zhí)羁铡?in clude<stdio.h>#in clude<stdlib.h>#in clude<time.h>#defi ne MAX 30int mai n()int aMAX,i,j,k,t,n;for(i=0;i<MAX;i+)sca nf("

30、;%d",& ai);sran d( un sig ned)time( NULL); for(i=0;i<MAX;i+) /為各元素賦值t=ra nd()%100;ai+=t;ai+=t;ai=t;prin tf("%3d%3d%3d",ai-1,ai-1,ai);putchar('n');for(i=0;i<MAX-1;i+) / 排序k=i;for(j=i+1;j<MAX;j+) if(ak>aj)k=j;if(k!=i) t=ai;ai=ak;ak=t;for(i=0;i<MAX;i+)pri ntf(&

31、quot;%3d",ai); putchar('n');n=i=MAX-1;while(i>0)if(ai=ai-1) /刪除相同元素for(j=i;j<=n;i+)ai-1=aj;n-;_/總元素個數(shù)減1i-;for(i=0;i<=n ;i+)if(i%5=0)pri ntf("n");prin tf("%3d",ai);prin tf("n");return 0;3.編程題。用篩法求2-100以內(nèi)的素數(shù)。#in clude<stdio.h> void mai n()int i

32、,j,k=0;用數(shù)組作篩為數(shù)組各元素賦值,下標(biāo)與元素值相等 是最小的素數(shù)當(dāng)前不為0的元素即為素數(shù)(不能被較小的數(shù)整除)int a100;/for(i=0;i<100;i+)ai=i; / for(i=2;i<100;i+)/2if(ai!=O)/for(j=i+1;j<100;j+)下標(biāo)為素數(shù)倍數(shù)的元素賦值 0if(j%i=0)/aj=0;for(i=2;i<100;i+)if(ai!=0) / 元素不為零的元素均為素數(shù)printf("%3d ",ai);/ 也可以輸出 ik+;if(k%10=0)putchar('n');putch

33、ar('n');10 個數(shù)。某數(shù)列前兩項為2、 3,其后每項為其前兩項之積,求此數(shù)列的第#include<stdio.h>void main()int i;int a8;a0=2;a1=3;for(i=2;i<8;i+)ai=ai-1*ai-2;for(i=0;i<8;i+)printf("%d ",ai);putchar('n');注:在VC下第9個數(shù)開始溢出(int和long均占用4個字節(jié))。讀入 20 個整數(shù),統(tǒng)計非負(fù)數(shù)和個數(shù)及其和,且按從小到大的次序輸出。 #include<stdio.h>#inc

34、lude<stdlib.h>#include<time.h>#define MAX 20void sort(int a,int n)int i,k,j,t;for(i=0;i<n;i+) /排序k=i;for(j=i+1;j<n;j+)if(ak>aj)k=j;if(k!=i)t=ai;ai=ak;ak=t;int main()int aMAX,i,j,t,n,s=0;srand(unsigned)time( NULL);for(i=0;i<MAX;i+) / 為數(shù)組各元素賦值t=rand()%10;if(t%3=0)ai=-rand()%100;elseai=rand()%100;printf("%4d",ai);if(i%10=0 && i!=0)putchar('n'); putchar('n');n=MAX;for(i=n-1;i>=0;i-) /刪除數(shù)組中的負(fù)值元素用后面的非負(fù)元素復(fù)蓋負(fù)值元素數(shù)組元素個數(shù)減 1 if(ai<0) for(j=i;j<n;j+)aj=aj+1;

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論