C程序設(shè)計教程與實驗第8章習(xí)題參考答案_第1頁
C程序設(shè)計教程與實驗第8章習(xí)題參考答案_第2頁
C程序設(shè)計教程與實驗第8章習(xí)題參考答案_第3頁
C程序設(shè)計教程與實驗第8章習(xí)題參考答案_第4頁
C程序設(shè)計教程與實驗第8章習(xí)題參考答案_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章習(xí)題一、選擇題

12345678CCCCCACD9101112131415CABDACC二、

填空題

1.

2

2.

6

7

200C3.p[5]

4.

定義p1為指向整型數(shù)據(jù)的指針變量

定義p2為指針數(shù)組,其數(shù)組元素均為指針

定義p3為指向一維數(shù)組的指針,其數(shù)組元素均為整型數(shù)

5.

5,36.

207.

r+b[k]

*x

8.

SecondLiFirstWang9.

25

10.

12

12三程序分析題1.72.1533973.244.abcDDfefDbD5.53四、編程題1.輸入2個字符串,每個字符串的長度均不超過80字符,用自己實現(xiàn)的cmpstr()函數(shù)完成這兩個字符串的大小比較,cmpstr()函數(shù)的功能和字符串比較函數(shù)strcmp()的功能相同#include<stdio.h>#include<string.h>intcmpstr(char*s1,char*s2){char*p,*q;p=s1;q=s2;while(*p!='\0'&&*q!='\0'){if(*p==*q){p++;q++;}elsebreak;}return*p-*q;}voidmain(){charstr1[81],str2[81];intc;printf("請輸入第1個字符串:");gets(str1);printf("請輸入第2個字符串:");gets(str2);c=cmpstr(str1,str2);if(c>0)printf("字符串%s大于字符串%s\n",str1,str2);elseif(c<0)printf("字符串%s小于字符串%s\n",str1,str2);elseprintf("字符串%s等于字符串%s\n",str1,str2);}2.定義一個函數(shù)floatreverse(intp[],intn),該函數(shù)有兩個參數(shù),第一個參數(shù)p為形參數(shù)組名,第二個參數(shù)n為該數(shù)組中的元素個數(shù),要求使用reverse()函數(shù)將該數(shù)組中的所有元素逆序排列,并返回該數(shù)組中所有元素的平均值。#include<stdio.h>floatreverse(intp[],intn){inti,t;floatave=0;for(i=0;i<n;i++)ave=ave+*(p+i);ave=ave/n;for(i=0;i<n/2;i++){t=*(p+i);*(p+i)=*(p+n-i-1);*(p+n-i-1)=t;}returnave;}voidmain(){inta[10]={1,2,3,4,5,6,7,8,9,10};inti;floatave;ave=reverse(a,10);printf("average=%.1f\n",ave);for(i=0;i<10;i++)printf("%4d",a[i]);printf("\n");}3.定義一個函數(shù)delSubstr(),刪除字符串中第k個字符開始的m個字符,例如刪除字符串a(chǎn)bcde第2個字符開始的3個字符,則刪除后結(jié)果為ae;又如刪除字符串a(chǎn)bcde第4個字符開始的5個字符,則刪除后結(jié)果為abc。#include<stdio.h>#include<string.h>intdelSubstr(char*str,intk,intm){char*p,*q;if(k<=0||m<=0)return-1;elseif(k>strlen(str))return-2;elseif(k+m>strlen(str)){str[k-1]='\0';return1;}else{p=str+k-1;q=str+k+m-1;while(*q!='\0')*p++=*q++;*p='\0';return1;}}voidmain(){charstr[81];intk,m,state;printf("請輸入字符串:\n");gets(str);printf("請輸入要刪除的子串起始字符的序號和子串長度:\n");scanf("%d%d",&k,&m);state=delSubstr(str,k,m);if(state<0)printf("要刪除子串起始字符的序號或子串長度輸入錯誤!\n");elseprintf("刪除指定子串后的字符串為:%s\n",str);}4.定義一個函數(shù)delSpechar(),使用字符指針刪除字符串中的所有指定字符(如把字符串“Iloveyou!”中的o字符刪除,得到“Ilveyu!”)。#include<stdio.h>#include<string.h>voiddelSpechar(char*str,charch){char*p,*q;p=str;while(*p!='\0'){if(*p==ch){q=p;while(*q!='\0'){*q=*(q+1);q++;}}elsep++;}}voidmain(){charstr[81],ch;printf("請輸入一個字符串:");gets(str);printf("請輸入要從字符串中刪除的字符:");ch=getchar();delSpechar(str,ch);printf("刪除所有指定字符后的字符串為:%s\n",str);}5.求整型二維數(shù)組a[M][N]中的最大元素值及最大元素的位置(用指針法引用數(shù)組元素)。#include<stdio.h>#defineM3#defineN4voidmax(int(*pa)[N],int*pRow,int*pCol{inti,j;for(i=0;i<M;i++)for(j=0;j<N;j++)if(pa[i][j]>pa[*pRow][*pCol]){*pRow=i;*pCol=j;}}voidmain(){inta[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}};introw=0,col=0;max(a,&row,&col);printf("二維數(shù)組中的最大元素值為a[%d][%d]=%d\n",row,col,a[row][col]);}6.已知字符串str[80],編寫函數(shù)lstrchar(),實現(xiàn)在數(shù)組str中查找字符ch首次出現(xiàn)的位置,如果字符串中找不到該字符,則返回-1。#include<stdio.h>#include<string.h>intlstrchar(char*str1,charch1){char*p,i=1;p=str1;while(*p!='\0'){if(*p==ch1)break;else{p++;i++;}}if(*p=='\0')return-1;elsereturni;}voidmain(){charch,str[80];intpoi;printf("請輸入字符串:");gets(str);printf("請輸入待查找的字符:");scanf("%c",&ch);poi=lstrchar(str,ch);if(poi==-1)printf("字符串中不存在指定字符!\n");elseprintf("該字符在字符串中出現(xiàn)的第一個位置為%d\n",poi);}7.定義一個整型二維數(shù)組并初始化,編程求該數(shù)組所有元素的和。要求:分別用數(shù)組下標(biāo)法、一級指針法、二級指針法實現(xiàn)。/*數(shù)組下標(biāo)法*/#include<stdio.h>#defineM3#defineN4intsum(intb[M][N]){inti,j,s=0;for(i=0;i<M;i++)for(j=0;j<N;j++)s=s+b[i][j];returns;}voidmain(){inta[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}};printf("二維數(shù)組中的所有元素之和為%d\n",sum(a));}/*一級指針法*/#include<stdio.h>#defineM3#defineN4intsum(int*pa){inti,s=0;for(i=0;i<M*N;i++)s=s+*pa++;returns;}voidmain(){inta[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}};printf("二維數(shù)組中的所有元素之和為%d\n",sum(a[0]));}/*二級指針法*/#include<stdio.h>#defineM3#defineN4intsum(int(*pa)[N]){inti,j,s=0;for(i=0;i<M;i++){for(j=0;j<N;j++)s=s+(*pa)[j];pa++;}returns;}voidmain(){inta[M][N]={{4,2,7,9},{1,3,13,0},{-5,6,-11,10}};printf("二維數(shù)組中的所有元素之和為%d\n",sum(a));}8.輸入一行數(shù)字字符存入字符數(shù)組str[80]中,用num[10]中的數(shù)組元素作為計數(shù)器來統(tǒng)計每個數(shù)字字符的個數(shù)。用下標(biāo)為0的元素統(tǒng)計字符“0”的個數(shù),用下標(biāo)為1的元素統(tǒng)計字符“1”出現(xiàn)的次數(shù),……。輸出每個奇數(shù)字符出現(xiàn)的次數(shù)。#include<stdio.h>voidcount(char*str,intnum[]){inti=0;while(str[i]!='\0'){switch(str[i]){case'0':num[0]++;break;case'1':num[1]++;break;case'2':num[2]++;break;case'3':num[3]++;break;case'4':num[4]++;break;case'5':num[5]++;break;case'6':num[6]++;break;case'7':num[7]++;break;case'8':num[8]++;break;case'9':num[9]++;break;}i++;}}voidmain(){charstr[80],*p=str;intnum[10]={0},i;printf("請輸入一行數(shù)字字符:");gets(p);count(p,num);for(i=1;i<10;i+=2)printf("數(shù)字串中%d出現(xiàn)的次數(shù)為%d\n",i,num[i]);}9.在主函數(shù)中輸入10個不等長字符串,用另一函數(shù)sort()對它們排序,然后在主函數(shù)中輸出已排好序的字符串。要求:每個字符串長度均不超過30字符,用指針數(shù)組進行處理。#include<stdio.h>#include<string.h>#defineM10#defineN31voidsort(char*pstr[]){inti,j;char*t;for(i=0;i<M-1;i++){for(j=0;j<M-1-i;j++)if(strcmp(pstr[j],pstr[j+1])>0){t=pstr[j];pstr[j]=pstr[j+1];pstr[j+1]=t;}}}voidmain(){charstr[M][N],*pstr[M]={NULL};inti;printf("請輸入10個字符串,每個字符串均不超過30個字符:\n");for(i=0;i<M;i++){gets(str[i]);pstr[i]=str[i];}sort(pstr);printf("排好序的字符串從小到大依次為:\n");for(i=0;i<M;i++)printf("%s\n",pstr[i]);}10.輸入一個字符串,內(nèi)有數(shù)字字符和非數(shù)字字符如123a345bcd567,將其中連續(xù)的數(shù)字作為一個整數(shù),依次存放到整型數(shù)組a中,例如,123放在a[0],345放在a[1]中,567放在a[2]中,……,統(tǒng)計共有多少個整數(shù),并輸出這些整數(shù)。#include<stdio.h>#include<string.h>voidmain(){charch[1000],*p=ch;inta[50],*q=a,num=0,i;gets(ch);for(;*p!='\0';p++)if(*p>='0'&&*p<='9'){*q=(*p)-'0';p++;while(*p>='0'&&*p<='9')*q=(*q)*10+(*(p++)-'0');num+=1;q+=1;}for(i=0,q=a;i<num;i++,q++)printf("%d",*q);printf("\n一共輸入了%d個整

溫馨提示

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

最新文檔

評論

0/150

提交評論