![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
上機(jī)VC++2009春試題3 |
2009春上機(jī)3 一:改錯(cuò)題 以下程序中函數(shù)fun(char (*ss)[N],int *n)的功能是:查找ss所指向的字符串?dāng)?shù)組中長(zhǎng)度最短的字符串,將最短字符串的行號(hào)存放在指針n所指向的數(shù)組中(可能有多個(gè)長(zhǎng)度相同的字符串均為最短字符串),函數(shù)的返回值為長(zhǎng)度最短的字符串的個(gè)數(shù) #include <iostream.h> #include <string.h> #define M 5 #define N 20 int fun(char (*ss)[N], int *n) {int j=0,k=0,len,minlen; for(int i=0;i<M;i++){ //本for循環(huán)的作用是查找字符長(zhǎng)度最短字符長(zhǎng)度 len=strlen(ss[i]); //用len保存字符串長(zhǎng)度 if(i==0) //判斷第一個(gè)字符 {minlen=len;n[j++]=0;k=1; break; //此處不能用break,因?yàn)闀?huì)直接跳出for循環(huán),而改為continue,表示執(zhí)行下一次循環(huán) } if(len>minlen){ //因?yàn)榍笞钚?shù),所以要用< minlen=len;j=0; n[j++]=i;k=1; } else if(len==minlen){ //字符的長(zhǎng)度等于最小長(zhǎng)度就將下標(biāo)放入n數(shù)組中 n[j++]=i;k++; } } return k; } void main() {char ss[M][N]={" int n[M],k; cout<<"給定的字符串為:"; for(int i=0;i<M;i++) //本for循環(huán)輸出ss數(shù)組中的值 cout<<ss[i]<<'\t'; cout<<endl; k=fun(&ss,n); //語法錯(cuò)誤,數(shù)組創(chuàng)地址直接寫數(shù)組名字 cout<<"其中最短字符串有"<<k<<"個(gè),它們是:"; for(i=0;i<k;i++) cout<<ss[i]<<'\t'; //數(shù)組n中存放的是最短字符的下標(biāo),所以應(yīng)該輸出為ss[n[i]] cout<<endl; } |