歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘 顏 暉 第7章數(shù)組

  • 資源ID:94143249       資源大小:77.50KB        全文頁(yè)數(shù):31頁(yè)
  • 資源格式: DOC        下載積分:20積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要20積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說(shuō)明有答案則都視為沒有答案,請(qǐng)知曉。

C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘 顏 暉 第7章數(shù)組

第7章 數(shù)組【練習(xí) 7-1】將例 7-3 程序中的 break 語(yǔ)句去掉,輸出結(jié)果有變化嗎?假設(shè)輸入數(shù)據(jù)不變,輸出什么?解答:當(dāng)去掉 break 語(yǔ)句后,一旦找到數(shù)據(jù)將不跳出循環(huán),而是繼續(xù)往下找值為 x 的元素,因此程序輸出會(huì)有變化。當(dāng)輸入數(shù)據(jù)仍為 2 9 8 1 9 時(shí),輸出將是 index is 1 index is 4?!揪毩?xí)7-2】將數(shù)組中的數(shù)逆序存放。輸入一個(gè)正整數(shù)n(1<n<=10),再輸入n個(gè)整數(shù),存入數(shù)組a中,輸出最大值及其對(duì)應(yīng)的最小下標(biāo),下標(biāo)從0開始。試編寫相應(yīng)程序。解答:#include<stdio.h>int main(void)int i,n,temp;int a10;printf("Input n:");scanf("%d",&n);printf("Input %d integer:",n);for(i=0;i<n;i+)scanf("%d",&ai);printf("After reversed:");for(i=0;i<n/2;i+)temp=ai;ai=an-1-i;an-1-i=temp;for(i=0;i<n;i+)printf("%d ",ai);return 0;【練習(xí)7-3】求最大值及其下標(biāo)。輸入一個(gè)正整數(shù)n(1<n<=10),再輸入n個(gè)整數(shù),存入數(shù)組a中,將先數(shù)組a中的這n個(gè)數(shù)逆序存放,在按順序輸出數(shù)組a中的n各元素。試編寫相應(yīng)程序。解答:#include<stdio.h>int main(void)int i,index,n;int a10;printf("Enter n:");scanf("%d",&n);printf("Enter %d integrs:",n);for(i=0;i<n;i+)scanf("%d",&ai);for(i=n-1;i>=0;i+)printf("%d ",ai);return 0; 【練習(xí) 7-4】找出不是兩個(gè)數(shù)組共有的元素。輸入一個(gè)正整數(shù) n (1n10),再輸入 n 個(gè)整數(shù),存入第1個(gè)數(shù)組中;然后輸入一個(gè)正整數(shù)m(1<m<=10),再輸入m個(gè)整數(shù),存入第2個(gè)數(shù)組,找出所有不是這兩個(gè)數(shù)組共有的元素。試編寫相應(yīng)程序。解答:#include<stdio.h>int main(void) int i,j,k,m,n,flag,equal;int a25,b25,c25; printf("Enter m:"); scanf("%d",&m); printf("Enter %d integers:",m); for(i=0;i<m;i+) scanf("%d",&ai); printf("Enter n:"); scanf("%d",&n); printf("Enter %d integers:",n); for(j=0;j<n;j+) scanf("%d",&bj); k=0; for(i=0;i<m;i+) flag=0; for(j=0;j<i;j+) if(ai=aj) flag=1;/判斷一個(gè)數(shù)組中是否有相重的元素,有的話不執(zhí)行 if(!flag) equal=0; for(j=0;j<n;j+) if(ai=bj) equal=1; break; if(!equal) ck+=ai; for(i=0;i<n;i+) flag=0; for(j=0;j<i;j+) if(bi=bj) flag=1; if(!flag) equal=0; for(j=0;j<m;j+) if(bi=aj) equal=1; break; if(!equal) ck+=bi; printf("%d",c0); for(i=1;i<k;i+) printf(" %d", ci); printf("n"); return 0;【練習(xí) 7-5】給二維數(shù)組賦值時(shí),如果把列下標(biāo)作為外循環(huán)的循環(huán)變量,行下標(biāo)作為內(nèi)循環(huán)的循環(huán)變量,輸入的數(shù)據(jù)在二維數(shù)組中如何存放?用下列 for 語(yǔ)句替換例 7-7 中的對(duì)應(yīng)語(yǔ)句,將輸入的 6 個(gè)數(shù)存入二維數(shù)組中,假設(shè)輸入數(shù)據(jù)不變,輸出什么?與例 7-7 中的輸出結(jié)果一樣嗎?為什么?for( j=0;j<2;j+)for( i=0;i<3;i+)scanf(“%d”,&aij);解答:當(dāng)把列下標(biāo)作為外循環(huán)的循環(huán)變量,行下標(biāo)作為內(nèi)循環(huán)的循環(huán)變量時(shí),輸入的數(shù)據(jù)將以列優(yōu)先的方式存放。當(dāng)用上述 for 循環(huán)方式時(shí),輸出結(jié)果為:max=a20=10,與原例 7-7不一樣,因?yàn)楫?dāng)用上述方式輸入是,二維數(shù)組中存放值如下: 3 - 9 2 610 - 1【練習(xí) 7-6】 在例 7-9 的程序中,如果將遍歷上三角矩陣改為遍歷下三角矩陣,需要怎樣修改程序?運(yùn)行結(jié)果有變化嗎?如果改為遍歷整個(gè)矩陣,需要怎樣修改程序?輸出是什么?為什么?解答:只需按要求修改矩陣的輸出部分,方法如下,其運(yùn)行結(jié)果不變。 for(i = 0; i < n; i+) for(j = 0; j < i; j+)temp = aij; aij = aji; aji = temp; 若修改為遍歷整個(gè)程序,方法如下,則運(yùn)行結(jié)果仍將輸出原矩陣,無(wú)法達(dá)到轉(zhuǎn)置要求,原因是矩陣中每個(gè)元素相應(yīng)被交換了 2 次。 for(i = 0; i < n; i+) for(j = 0; j < n; j+) temp = aij; aij = aji; aji = temp;/先是下三角進(jìn)行交換,后是上三角進(jìn)行交換 【練習(xí)7-7】矩陣運(yùn)算:讀入1個(gè)正整數(shù)n(1n6),再讀入n階方陣a,計(jì)算該矩陣除副對(duì)角線、最后一列和最后一行以外的所有元素之和。副對(duì)角線為從矩陣的右上角至左下角的連線。試編寫相應(yīng)程序。解答:#include <stdio.h>int main(void) int i,j,n,sum; int a66; printf("Input n:"); scanf("%d",&n); printf("Input array:n "); for(i=0;i<n;i+) for(j=0;j<n;j+) scanf("%d",&aij); sum=0; for(i=0;i<n;i+) for(j=0;j<n;j+) if(i!=n-1&&j!=n-1&&i+j!=n-1) sum+=aij; printf("sum=%dn",sum); return 0;【練習(xí) 7-8】方陣循環(huán)右移。讀入2個(gè)正整數(shù)m和n(1<=n<6),在讀入n階方陣a,將該方陣中的每個(gè)元素循環(huán)向右移m個(gè)位置,即將第0、1、n-1列變換為第n-m、n-m+1、n-1、0、1、n-m-1列,移動(dòng)后的方陣可以存到另一個(gè)二維數(shù)組中。試編寫相應(yīng)程序。解答:#include<stdio.h>int main(void)int m,n,i,j,count;int a66,b66;printf("Enter m:");scanf("%d",&m);printf("Enter n:");scanf("%d",&n);printf("Input array:n");for(i=0;i<n;i+) for(j=0;j<n;j+) scanf("%d",&aij);for(i=0;i<n;i+) count=0; for(j=0;j<n;j+) if(j<n-m) bij+m=aij; elsebicount+=aij;for(i=0;i<n;i+) for(j=0;j<n;j+) printf("%d ",bij); printf("n"); return 0;【練習(xí) 7-9】計(jì)算天數(shù):輸入日期(年、月、日),輸出它是該年的第幾天。要求調(diào)用例 7-10 中定義的函數(shù) day_of_year(year, month, day)。試編寫相應(yīng)程序。解答:#include<stdio.h>int day_of_year(int year, int month, int day);int main(void) int year,month,day,day_year; printf("Input year,month,day: "); scanf("%d%d%d",&year,&month,&day); day_year=day_of_year(year,month,day); printf("Days of year: %dn",day_year); return 0;int day_of_year(int year,int month,int day)int k,leap;int tab213= 0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31;leap=(year%4=0&&year%100!=0|year%400=0);for(k=1;k<month;k+) day=day+tableapk;return day; 【練習(xí)7-10】查找指定字符。輸入一個(gè)字符,再輸入一個(gè)以回車符結(jié)束的字符串(少于80個(gè)字符)。如果找到,則輸出該字符在字符串中所對(duì)應(yīng)的最大下標(biāo),下標(biāo)從0開始;否則輸出”Not Found”。試編寫相應(yīng)程序。解答:#include<stdio.h>int main(void)int i,max,flag;char a80,op;printf("Enter a x:");op=getchar(); fflush(stdin);/或setbuf(stdin,NULL);printf("Enter a string:");i=0;while(ai=getchar()!='n') i+;ai='0'max=0;flag=0;for(i=0;ai!='0'i+) if(ai=op) max=i; flag=1;if(flag=1) printf("Max=%d",max);else printf("Not Found!");return 0; 【練習(xí)7-11】字符串逆序:輸入一個(gè)以回車符結(jié)束的字符串(少于80個(gè)字符),將該字符串逆序存放,輸出逆序后的字符串。試編寫相應(yīng)程序。解答:#include<stdio.h>int main(void)int i;char str80,a80;printf("Enter a string:");i=0;while(stri=getchar()!='n') i+;stri='0'for(;i>=0;i-) putchar(stri); return 0;習(xí)題7一選擇題1假定int類型變量占用兩個(gè)字節(jié),其有定義:int x10=0,2,4; 則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是 D 。A3 B6 C10 D202以下能正確定義數(shù)組并正確賦初值的語(yǔ)句是 D 。Aint N=5,bNN;Bint a12=1,3;Cint c2=1,2,3,4;Dint d32=1,2,34;3 若有定義:int a23;以下選項(xiàng)中對(duì)數(shù)組元素正確引用的是 D 。Aa20 Ba23 Ca 03 Da1>214設(shè)有數(shù)組定義:char array ="China"則數(shù)組array 所占的空間為 C 。A4 個(gè)字節(jié) B5 個(gè)字節(jié) C6 個(gè)字節(jié) D7 個(gè)字節(jié)5下述對(duì) C 語(yǔ)言字符數(shù)組的描述中錯(cuò)誤的是 D 。A字符數(shù)組可以存放字符串B字符數(shù)組中的字符串可以整體輸入、輸出C可以在賦值語(yǔ)句中通過(guò)賦值運(yùn)算符"="對(duì)字符數(shù)組整體賦值D不可以用關(guān)系運(yùn)算符對(duì)字符數(shù)組中的字符串進(jìn)行比較6有以下定義:char x ="abcdefg" char y ='a','b','c','d','e','f','g' 則正確的敘述為 C 。A數(shù)組x和數(shù)組y等價(jià) B . 數(shù)組x和數(shù)組y的長(zhǎng)度相同C數(shù)組x的長(zhǎng)度大于數(shù)組y的長(zhǎng)度 D數(shù)組x的長(zhǎng)度小于數(shù)組y的長(zhǎng)度7以下程序的輸出結(jié)果是 C 。int main(void) int m 3=1,4,7,2,5,8,3,6,9;int i, j, k=2;for (i=0;i<3;i+)printf ("%d ",mki);A4 5 6 B2 5 8 C3 6 9 D7 8 98以下程序的輸出結(jié)果是 B 。int main(void) int aa44=1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6;int i, s=0;for(i=0;i<4;i+) s+=aai1;printf("%dn",s);A11 B19 C13 D20二填空題1設(shè)有定義語(yǔ)句:int a 3=0,1,2; 則數(shù)組元素a12的值是 0 。2下列程序的功能是:求出數(shù)組 x 中各相鄰兩個(gè)元素的和依次存放到a數(shù)組中,然后輸出。請(qǐng)?zhí)羁?。int main(void ) int x10,a9,i; for(i=0; i<10; i+) scanf("%d",&xi); for( _i=1_; i<10; i+ ) ai-1=xi+_xi-1 _ ; for(i=0; i<9; i+ +) printf("%d ",ai); printf("n");3寫出下列程序的運(yùn)行結(jié)果是 -12 。int main(void) int a10=10,1,-20,-203,-21,2,-2,-2,11,-21;int j,s=0;for(j=0;j<10;j+) if(a j%2=0) s+=aj; printf("s=%dn",s); 4寫出下面程序的運(yùn)行結(jié)果 。#include <stdio.h>int main(void) float s6=1, 3, 5, 7, 9; float x; int i; scanf(“%f”, &x);for (i=4 ; i>=0; i-) if(si>x) si+1=si; else break;printf("%d n",i+1);return 0;(1) 如果輸入 4,則輸出 2 。(2) 如果輸入 5,則輸出 3 。5下列程序的功能是輸出如下形式的方陣,請(qǐng)?zhí)羁铡?3 14 15 169 10 11 125 6 7 81 2 3 4int main(void) int i,j,x;for(j=4;_j>=1_;j-) for(i=1;i<=4;i+) x=(j-1)*4+_i_; printf("%4d",x);printf("n");6 以下程序的功能是用來(lái)檢查二維數(shù)組是否對(duì)稱(即對(duì)所有的i,j都有ai j=aj i)。請(qǐng)?zhí)羁铡nt main(void) int a44=1,2,3,4,2,2,5,6,3,7,8,6,7,4; int i,j,found=0;for(j=0;j<4;j+) for(i=0;i<4;i+) if(_aji!=aij_) _found=1;_ break; if(_found=1_)break;if(found!=0) printf("該二維數(shù)組不對(duì)稱n");else printf("該二維數(shù)組對(duì)稱n");return 0;三程序設(shè)計(jì)題1. 選擇法排序。輸入一個(gè)正整數(shù) n (1<n10),再輸入n個(gè)整數(shù),將它們從大到小排序后輸出。試編寫相應(yīng)程序。解答:#include<stdio.h>int main(void)int i,n,index,k,temp;int a10;printf("Enter n:");scanf("%d",&n);printf("Input %d integers:",n);for(i=0;i<n;i+) scanf("%d",&ai);for(k=0;k<n-1;k+) index=k; for(i=k+1;i<n;i+) if(aindex<ai) index=i; temp=aindex; aindex=ak; ak=temp; printf("After sorted:"); for(i=0;i<n;i+) printf("%d",ai); printf("n"); return 0;2. 求一批整數(shù)中出現(xiàn)最多的數(shù)字。輸入一個(gè)正整數(shù)n(1n1000),再輸入n個(gè)整數(shù),分析每個(gè)整數(shù)的每一位數(shù)字,求出現(xiàn)次數(shù)最多的數(shù)字。例如輸入3個(gè)整數(shù)1234、2345、3456,其中出現(xiàn)次數(shù)最多的數(shù)字是3和4,均出現(xiàn)了3次。試編寫相應(yīng)程序。解答:#include<stdio.h>int main(void)int i,j,k,g,n,max;int a1000,b1000,count1000;printf("Enter n:");scanf("%d",&n);printf("Enter %d integers:",n);for(i=0;i<n;i+) scanf("%d",&ai);for(i=0;i<=9;i+) counti=0;for(i=0;i<=9;i+) for(j=0;j<n;j+) for(k=0;k<n;k+) bk=ak; while(aj!=0) if(aj%10=i) counti+; aj=aj/10;for(k=0;k<n;k+) ak=bk;max=count0;for(i=0;i<=9;i+) if(max<counti) max=counti;printf("出現(xiàn)最多次數(shù)的數(shù)字和次數(shù)是:");for(i=0;i<=9;i+) if(max=counti) printf("%2d-%d",i,counti);return 0;3. 判斷上三角矩陣。輸入一個(gè)正整數(shù)n (1n6)和n階方陣a中的元素,如果a是上三角矩陣,輸出“YES”,否則,輸出“NO”。上三角矩陣,即主對(duì)角線以下的元素都為0的矩陣,主對(duì)角線為從矩陣的左上角至右下角的連線。試編寫相應(yīng)程序。解答:#include <stdio.h>int main(void) int i,j,n,flag;int a66; printf("Input n:"); scanf("%d",&n); printf("Input array:n"); for(i=0;i<n;i+) for(j=0;j<n;j+) scanf("%d",&aij); for(j=1;j<n;j+) flag=0; for(i=1;i<j;i+) if(aij=0) flag=1; if(flag) printf("YES!n"); else printf("NO!n"); return 0;4求矩陣各行元素之和。輸入2個(gè)正整數(shù)m和n (1m6,1 n6),然后輸入該m行n列矩陣a中的元素,分別求出各行元素之和,并輸出。試編寫相應(yīng)程序。解答:#include<stdio.h> int main(void) int i,j,m,n,sum; int a66; printf("Input m:"); scanf("%d",&m);printf("Input n:"); scanf("%d",&n); printf("Input array:n "); for(i=0;i<m;i+) for(j=0;j<n;j+) scanf("%d",&aij); for(i=0;i<m;i+) sum=0; for(j=0;j<n;j+) sum=sum+aij; printf("sum of row %d is %dn",i,sum); return 0;5找鞍點(diǎn)。輸入一個(gè)正整數(shù)n(1n6)和n階方陣a中的元素,假設(shè)方陣a最多有1個(gè)鞍點(diǎn),如果找到a的鞍點(diǎn),就輸出它的下標(biāo);否則,輸出"NO"。鞍點(diǎn)的元素值在該行上最大,,在該列上最小。試編寫相應(yīng)程序。解答:#include<stdio.h>int main(void) int flag,i,j,k,row,col,n;int a66; printf("Input n: "); scanf("%d",&n); printf("Input array:n "); for(i=0;i<n;i+) for(j=0;j<n;j+) scanf("%d",&aij); for(i=0;i<n;i+) flag=1; col=0; for(j=0;j<n;j+) if(aicol<aij) col=j; for(k=0;k<n;k+) if(aicol>akcol) flag=0;break; if(flag) row=i; break; if(flag) printf("a%d%d=%dn",row,col,arowcol); else printf("NOn"); return 0;7字符串替換。輸入一個(gè)以回車結(jié)束的字符串(少于 80 個(gè)字符),將其中的大寫字母用下面列出的對(duì)應(yīng)大寫字母替換,其余字符不變,輸出替換后的字符串。試編寫相應(yīng)程序。原字母 對(duì)應(yīng)字母 A Z B Y C X D W X C Y B Z A解答:#include <stdio.h>int main(void) int i; char ch,str80; printf("Input a string: "); i=0; while(ch=getchar()!='n') stri+=ch; stri='0' for(i=0;stri!='0'i+) if(stri<='Z'&&stri>='A') stri='A'+'Z'-stri; printf("After replaced:"); for(i=0;stri!='0'i+) putchar(stri); putchar('n'); return 0;8 字符串轉(zhuǎn)換成十進(jìn)制整數(shù)。輸入一個(gè)以字符”#”結(jié)束的字符串濾去所有的非十六進(jìn)制字符(不分大小寫),組成一個(gè)新的表示十六進(jìn)制數(shù)字的字符串,然后將其轉(zhuǎn)換為十進(jìn)制數(shù)后輸出。如果過(guò)濾后字符串的首字符為”-”,代表該數(shù)是負(fù)數(shù)。試編寫相應(yīng)程序。解答:#include<stdio.h>int main(void)int i,j,k;char hexad80,str80;long number;printf("Enter a string:");i=0;while(stri=getchar()!='#') i+;stri='0'k=0;for(i=0;stri!='0'i+) if(stri='-'|stri>='0'&&stri<='9'|stri>='a'&&stri<='f'|stri>='A'&&stri<='F') hexadk+=stri;hexadk='0'j=1;if(hexad0='-') for(k=1;hexadk!='0'k+) if(hexadk!='-') hexadj+=hexadk;else j=0; for(k=0;hexadk=!'0'k+) if(hexadk!='-') hexadj+=hexadk;printf("New string:");for(i=0;hexadi!='0'i+) putchar(hexadi);printf("n");number=0;for(i=0;hexadi!='0'i+)if(hexadi>='0'&&hexadi<='9') number=number*16+hexadi-'0'else if(hexadi>='A'&&hexadi<='F') number=number*16+hexadi-'A'+10;else if(hexadi>='a'&&hexadi<='f') number=number*16+hexadi-'a'+10; if(hexad0='-') printf("Number=%ldn",-number);else printf("Number=%ldn",number);return 0;

注意事項(xiàng)

本文(C語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘 顏 暉 第7章數(shù)組)為本站會(huì)員(xins****2008)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!