1. <small id="kntrr"><delect id="kntrr"></delect></small>
    2. <sub id="kntrr"></sub>
        1. <form id="kntrr"><listing id="kntrr"></listing></form>
            江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
            上機VC++2009春試題3

            2009春上機3

            :改錯題

             以下程序中函數fun(char  (*ss)[N],int *n)的功能是:查找ss所指向的字符串數組中長度最短的字符串,將最短字符串的行號存放在指針n所指向的數組中(可能有多個長度相同的字符串均為最短字符串),函數的返回值為長度最短的字符串的個數

            #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循環的作用是查找字符長度最短字符長度

              len=strlen(ss[i]);                             //len保存字符串長度

              if(i==0)               //判斷第一個字符

              {minlen=len;n[j++]=0;k=1;

               break;             //此處不能用break,因為會直接跳出for循環,而改為continue,表示執行下一次循環

              }

              if(len>minlen){                                   //因為求最小數,所以要用<

                 minlen=len;j=0;

                      n[j++]=i;k=1;

              }

              else if(len==minlen){                          //字符的長度等于最小長度就將下標放入n數組中

                n[j++]=i;k++;

              }

            }

                      return k;

            }

             

            void main()

            {char ss[M][N]={"Beijing","Nanjing","Shanghai","Tianjin","Chongqin"};

              int n[M],k;

              cout<<"給定的字符串為:";

              for(int i=0;i<M;i++)                     //for循環輸出ss數組中的值

                       cout<<ss[i]<<'\t';

              cout<<endl;

              k=fun(&ss,n);                        //語法錯誤,數組創地址直接寫數組名字

              cout<<"其中最短字符串有"<<k<<",它們是:";

              for(i=0;i<k;i++)

                       cout<<ss[i]<<'\t';     //數組n中存放的是最短字符的下標,所以應該輸出為ss[n[i]]

              cout<<endl;

             

            }

             

            国产在线精品一区二区三区不卡_亚洲第一极品精品无码_永久免费无码网站在线观看_亚洲av综合日韩