日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

當(dāng)前位置:電子發(fā)燒友網(wǎng) > 圖書頻道 > 電子 > 《C++程序設(shè)計(jì)實(shí)踐例題》 > 第2章 第二章

第2節(jié) 第二部分

例5.1 數(shù)組元素的引用。

#include <iostream>

usingnamespacestd;

intmain( )

{inti,a[10];

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

a[i]=i;

 for(i=9;i>=0;i--)

cout<<a[i]<<" ";

 cout<<endl;

 return0;

}

 

例5.10 有3個(gè)字符串,要求找出其中最大者。要求用函數(shù)調(diào)用。

程序如下:

#include <iostream>

#include <string>

usingnamespacestd;

intmain( )

{ voidmax_string(charstr[][30],inti);        //函數(shù)聲明

inti;

  charcountry_name[3][30];

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

      cin>>country_name[i];                       //輸入3個(gè)國家名

  max_string(country_name,3);                   //調(diào)用max_string函數(shù)

  return0;

}

 

voidmax_string(charstr[][30],intn)

{

  inti;

  charstring[30];

  strcpy(string,str[0]);                    //使string的值為str[0]的值

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

      if(strcmp(str[i],string)>0)              //如果str[i]>string

strcpy(string,str[i]);               //將str[i]中的字符串復(fù)制到string

  cout<<endl<<"the largest string is:"<<string<<endl;

}

 

例5.11 輸入3個(gè)字符串,要求將字母按由小到大的順序輸出。

#include <iostream>

#include <string>

usingnamespacestd;

intmain( )

{string string1,string2,string3,temp;

 cout<<"please input three strings:";   //這是對用戶輸入的提示

 cin>>string1>>string2>>string3;        //輸入3個(gè)字符串

 if(string2>string3) {temp=string2;string2=string3;string3=temp;}

//使串2≤串3

 if(string1<=string2) cout<<string1<<" "<<string2<<" "<<string3<<endl;

    //如果串1≤串2,則串1≤串2≤串3

 elseif(string1<=string3) cout<<string2<<" "<<string1<<" "<<string3<<endl;

    //如果串1>串2,且串1≤串3,則串2<串1≤串3

 elsecout<<string2<<" "<<string3<<" "<<string1<<endl;

    //如果串1>串2,且串1>串3,則串2<串3<串1

}

 

例5.12 一個(gè)班有n個(gè)學(xué)生,需要把每個(gè)學(xué)生的簡單材料(姓名和學(xué)號)輸入計(jì)算機(jī)保存。然后可以通過輸入某一學(xué)生的姓名查找其有關(guān)資料。當(dāng)輸入一個(gè)姓名后,程序就查找該班中有無此學(xué)生,如果有,則輸出他的姓名和學(xué)號,如果查不到,則輸出“本班無此人”。

為解此問題,可以分別編寫兩個(gè)函數(shù),函數(shù)input_data用來輸入n個(gè)學(xué)生的姓名和學(xué)號,函數(shù)search用來查找要找的學(xué)生是否在本班。

程序可編寫如下:

#include <iostream>

#include <string>

usingnamespacestd;

string name[50],num[50];              //定義兩個(gè)字符串?dāng)?shù)組,分別存放姓名和學(xué)號

intn;                                //n是實(shí)際的學(xué)生數(shù)

intmain( )

{voidinput_data( );                    //函數(shù)聲明

 voidsearch(string find_name);        //函數(shù)聲明

 string find_name;                     //定義字符串變量,find_name是要找的學(xué)生

 cout<<"please input number of this class:";  //輸入提示:請輸入本班學(xué)生的人數(shù)

 cin>>n;                                      //輸入學(xué)生數(shù)

 input_data( );                              //調(diào)用input_data函數(shù),輸入學(xué)生數(shù)據(jù)

 cout<<"please input name you want find:";  //輸入提示:請輸入你要找的學(xué)生名

 cin>>find_name;                            //輸入要找的學(xué)生的姓名

 search(find_name);                         //調(diào)用search函數(shù),尋找該學(xué)生姓名

 return0;

}

 

voidinput_data( )                            //函數(shù)首部

{inti;

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

   {cout<<"input name and NO. of student "<<i+1<<":";   

//輸入提示

    cin>>name[i]>>num[i];}                    //輸入n個(gè)學(xué)生的姓名和學(xué)號    

}

 

voidsearch(string find_name)                 //函數(shù)首部

{inti;

 boolflag=false;

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

   if(name[i]==find_name)               //如果要找的姓名與本班某一學(xué)生姓名相同

     { cout<<name[i]<<" has been found, his number is "<<num[i]<<endl;

//輸出姓名與學(xué)號

flag=true;

break;

 if(flag==false) cout<<"can't find this name";//如找不到,輸出“找不到”的信息

}

 

例5.2 用數(shù)組來處理求Fibonacci數(shù)列問題。

可以用20個(gè)元素代表數(shù)列中的20個(gè)數(shù),從第3個(gè)數(shù)開始,可以直接用表達(dá)式f[i]=f[i-2]+f[i-1]求出各數(shù)。

程序如下:

#include <iostream>

#include <iomanip>

usingnamespacestd;

intmain( )

  { inti;

    intf[20]={1,1};            //f[0]=1,f[1]=1

    for(i=2;i<20;i++)

          f[i]=f[i-2]+f[i-1];      //在i的值為2時(shí),f[2]=f[0]+f[1],依此類推

    for(i=0;i<20;i++)                 //此循環(huán)的作用是輸出20個(gè)數(shù)

      {if(i%5==0) cout<<endl;         //控制換行,每行輸出5個(gè)數(shù)據(jù)

         cout<<setw(8)<<f[i];         //每個(gè)數(shù)據(jù)輸出時(shí)占8列寬度

      }

    cout<<endl;                       //最后執(zhí)行一次換行

    return0;

}

 

例5.3 編寫程序,用起泡法對10個(gè)數(shù)排序(按由小到大順序)。

#include <iostream>

usingnamespacestd;

intmain( )

{

  inta[11];

  inti,j,t;

  cout<<"input 10 numbers :"<<endl;

  for(i=1;i<11;i++)                       //輸入a[1]~a[10]

    cin>>a[i];

  cout<<endl;

  for(j=1;j<=9;j++)                      //共進(jìn)行9趟比較

    for(i=1;i<=10-j;i++)                  //在每趟中要進(jìn)行(10-j)次兩兩比較

       if(a[i]>a[i+1])                   //如果前面的數(shù)大于后面的數(shù)

   {t=a[i];a[i]=a[i+1];a[i+1]=t;}   //交換兩個(gè)數(shù)的位置,使小數(shù)上浮

  cout<<"the sorted numbers :"<<endl;

  for(i=1;i<11;i++)                      //輸出10個(gè)數(shù)

    cout<<a[i]<<" ";

  cout<<endl;

  return0;

}

 

例5.4 將一個(gè)二維數(shù)組行和列元素互換,存到另一個(gè)二維數(shù)組中。例如

a=123

456b=14

25

36

程序如下:

#include <iostream>

usingnamespacestd;

intmain( )

{

 inta[2][3]={{1,2,3},{4,5,6}};

 intb[3][2],i,j;

 cout<<"array a:"<<endl;

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

 {

   for(j=0;j<=2;j++)

   {  cout<<a[i][j]<<" ";

      b[j][i]=a[i][j];

   }

   cout<<endl;

  }

  cout<<"array b:"<<endl;

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

  {

    for(j=0;j<=1;j++)

      cout<<b[i][j]<<" ";

    cout<<endl;            

   }        

return0;

}

 

例5.5 有一個(gè)3×4的矩陣,要求編程序求出其中值最大的那個(gè)元素的值,以及其所在的行號和列號。

開始時(shí)把a(bǔ)[0][0]的值賦給變量max,然后讓下一個(gè)元素與它比較,將二者中值大者保存在max中,然后再讓下一個(gè)元素與新的max比,直到最后一個(gè)元素比完為止。max最后的值就是數(shù)組所有元素中的最大值。

程序如下:

#include <iostream>

usingnamespacestd;

intmain( )

{ inti,j,row=0,colum=0,max;

  inta[3][4]={{5,12,23,56},{19,28,37,46},{-12,-34,6,8}};

  max=a[0][0];                     //使max開始時(shí)取a[0][0]的值

  for(i=0;i<=2;i++)               //從第0行~第2行

    for(j=0;j<=3;j++)             //從第0列~第3列

      if(a[i][j]>max)             //如果某元素大于max

{max=a[i][j];              //max將取該元素的值

row=i;                    //記下該元素的行號i

colum=j;                  //記下該元素的列號j

        }

  cout<<"max="<<max<<",row="<<row<<",colum="<<colum<<endl;

  return0;

}  

 

例5.6 用函數(shù)處理例5.5。

算法和例5.5是一樣的,今設(shè)一函數(shù)max_value,用來進(jìn)行比較并返回結(jié)果??删帉懗绦蛉缦拢?/p>

#include <iostream>

usingnamespacestd;

intmain( )

{ intmax_value(intx,intmax);                //函數(shù)聲明

   inti,j,row=0,colum=0,max

   inta[3][4]={{5,12,23,56},{19,28,37,46},{-12,-34,6,8}};  //數(shù)組初始化

      max=a[0][0];

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

     for(j=0;j<=3;j++)

{ max=max_value(a[i][j],max);          //調(diào)用max_value函數(shù)

if(max==a[i][j])                     //如果函數(shù)返回的是a[i][j]的值

{row=i;                            //記下該元素行號i

               colum=j;                          //記下該元素列號j

      }

}

   cout<<"max="<<max<<",row="<<row<<",colum="<<colum<<endl;

  }

 

intmax_value(intx,intmax)         //定義max_value函數(shù)

{if(x>max) returnx;               //如果x>max,函數(shù)返回值為x

elsereturnmax;                  //如果x≤max,函數(shù)返回值為max

  }

 

例5.7 用選擇法對數(shù)組中10個(gè)整數(shù)按由小到大排序。

所謂選擇法就是先將10個(gè)數(shù)中最小的數(shù)與a[0]對換;再將a[1]到a[9]中最小的數(shù)與a[1]對換……每比較一輪,找出一個(gè)未經(jīng)排序的數(shù)中最小的一個(gè)。共比較9輪。

根據(jù)此思路編寫程序如下:

#include <iostream>

usingnamespacestd;

intmain( )

{voidselect_sort(intarray[],intn);             //函數(shù)聲明

 inta[10],i;

 cout<<"enter the originl array:"<<endl;

 for(i=0;i<10;i++)                                //輸入10個(gè)數(shù)

   cin>>a[i];

 cout<<endl;

 select_sort(a,10);                              //函數(shù)調(diào)用,數(shù)組名作實(shí)參

 cout<<"the sorted array:"<<endl;

 for(i=0;i<10;i++)                               //輸出10個(gè)已排好序的數(shù)

   cout<<a[i]<<"  ";

 cout<<endl;

 return0;

}

 

voidselect_sort(intarray[],intn)              //形參array是數(shù)組名

{inti,j,k,t;

 for(i=0;i<n-1;i++)

{k=i;

     for(j=i+1;j<n;j++)                   

       if(array[j]<array[k]) k=j;

 t=array[k];array[k]=array[i];array[i]=t;

}

}

 

例5.8 有一個(gè)3×4的矩陣,求矩陣中所有元素中的最大值。要求用函數(shù)處理。

解此題的算法已在例5.5中介紹。

程序如下:

#include <iostream>

usingnamespacestd;

intmain( )

{intmax_value(intarray[][4]);

 inta[3][4]={{11,32,45,67},{22,44,66,88},{15,72,43,37}};

 cout<<"max value is "<<max_value(a)<<endl;

 return0;

}

 

intmax_value(intarray[][4])

{inti,j,max;

 max=array[0][0];

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

     for(j=0;j<4;j++)

       if(array[i][j]>max) max=array[i][j];

 returnmax;

}

 

例5.9 設(shè)計(jì)和輸出一個(gè)鉆石圖形。   

#include <iostream>

usingnamespacestd;

voidmain( )

{chardiamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},

{' ','*',' ','*'},{' ',' ','*'}};

     inti,j;

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

       {for(j=0;j<5;j++)

cout<<diamond[i][j];          //逐個(gè)引用數(shù)組元素,每次輸出一個(gè)字符

cout<<endl;

}

}

?
大兴区| 衢州市| 义马市| 兴山县| 灯塔市| 景东| 白朗县| 广昌县| 固阳县| 平江县| 石楼县| 明水县| 浦城县| 明星| 南通市| 永定县| 宣恩县| 高雄市| 囊谦县| 越西县| 鸡东县| 清镇市| 永兴县| 赤城县| 桐梓县| 大悟县| 聂拉木县| 铁岭县| 龙岩市| 留坝县| 交口县| 衢州市| 全南县| 库伦旗| 苏尼特左旗| 杂多县| 黄大仙区| 广河县| 大同县| 兰考县| 凭祥市|