第十四章项目6-阅读程序(4、5、6、7、8、9、10、11)

/*
 *Copyright(c)2014,烟台大学计算机学院
 *All rights reserved.
 *文件名称:test.cpp
 *作者:满星辰
 *完成日期:2014年 11月 30日
 *版本号:v1.0
 *
 *问题描述:程序阅读
 *程序输入:
 *程序输出:
 */

4、

#include <iostream>
using namespace std;
int  main( )
{ 
 int n=0; 
 char str[80]="Beijing-China 2008";
 cout<<str<<endl;
 while(str[n]!='\0')
   str[n++]=str[n]>='a'&&str[n]<='z'?str[n]-'a'+'A':str[n];
 cout<<str<<endl;
 return 0;
}

预测结果:BEIJING-CHINA 2008

实际结果:Beijing-China 2008

                    BEIJING-CHINA 2008

学习心得:这是一个让小写字母变大写的程序,由ASCILL码来实现转换

5、

#include <iostream>
using namespace std;
int  main( )
{ 
    int x[2][3]={5,4,6,7,8,9};
    int m[2],i,j;
    for (i=0;i<2;i++)
    {
       m[i]=x[i][0];
       for(j=1;j<3;j++)
            if(x[i][j]<m[i]) m[i]=x[i][j];
    }
    for (i=0;i<2;i++)
        cout<<m[i]<<endl;
    return 0;
}

预测结果:4

                    7

实际结果:4

                    7

学习心得:将 x [ i ] [ j ] 中的每一行元素中的最小值赋值给 m [ i ]

6、

#include <iostream>
using namespace std;
int  main( )
{
    int a[4][4]= {1,2,4,7,2,3,5,8,4,5,6,9,7,8,9,10};
    int i,j,found=0;
    for(i=0; j<4; i++)
        for(j=0; j<=i; j++)
            if(a[i][j]!=a[j][i])
            {
                found=1;
                break;
            }
    if(found)  cout<<"No!"<<endl;
    else  cout<<"Yes!"<<endl;
    return 0;
}

预测结果:No!

实际结果:Yes!

学习心得:

我以为这是个判断是否为中心对称的程序

忽略了第二个 for 循环里面的 j <= i ,即这是个判断对角线元素是否对称的程序

7、

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int a[5][5]= {0},i,j,k;
    k=1;
    for (i=0; i<5; i++)
        for (j=i; j>=0; j--)
            a[j][i-j]=k++;
    for (i=0; i<5; i++)
    {
        for (j=0; j<5-i; j++)
            cout<<setw(4)<<a[i][j];
        cout<<endl;
    }
    return 0;
}

预测结果:

1

2

3

4

5

实际结果:

    1    3    6    10    15

    2    5    9    14

    4    8    13

    7    12

    11

学习心得:

第二个 for 循环 中将 i 赋值给了 j 这样每循环一次,就给上一行第 j-i 列 赋值

setw ( n ) 即空 n 格

8、

#include <iostream>
using namespace std;
void reverse(int a[],int n);
int  main( )
{
    int  b[10]= {1,2,3,4,5,6,7,8,9,10};
    int i,s=0;
    reverse(b,8);
    for(i=5; i<10; i++) s+=b[i];
    cout<<s<<endl;
    return 0;
}
void reverse(int a[],int n)
{
    int  i,t;
    for(i=0; i<n/2; i++)
    {
        t=a[i];
        a[i]=a[n-1-i];
        a[n-1-i]=t;  //将a[n]中的元素倒过来
    }
}

预测结果:25

实际结果:25

学习心得:

先将前八个元素倒过来,再累加后五个元素

 

9、

#include <iostream>
using namespace std;
void f(int a[],int i,int j);
int  main( )
{ 
   int  b[10]={1,2,3,4,5,6,7,8,9,10}; 
   int i,s=0;
   f(b,0,9);
   for(i=5;i<10;i++) s+=b[i];
       cout<<s<<endl;
   return 0;
}
void f(int a[],int i,int j)
{  
    int  t;
    if(i<j)
    {  
        t=a[i]; a[i]=a[j];a[j]=t;
        f(a,i+1,j-1);
    }
}

预测结果:15

实际结果:15

学习心得:15

同上,用累加法将数组的元素倒过来

10、

#include <iostream>
using namespace std;
int f(int n);
int main()
{
   cout<<f(5)<<"   ";
   cout<<f(8)<<endl;
   return 0;      
}

int f(int n)
{
   static int a=2;
   int b=0;
   a+=n;
   b+=a;
   return b;
}

预测结果:7 15

实际结果:7 15

学习心得:

static为静态变量,每用一次,初值就赋为最后一次使用的值

 

11、

#include <iostream>
#include <cstring>
using namespace std;
void f(char p[][10],int n);
int main()
{
    char p[][10]= {"China","America","Russia","England","France"};
    f(p,5);
    cout<<p[0]<<","<<p[4]<<endl;
    return 0;
}
void f(char p[][10],int n)
{
    char t[10];
    int  i,j;
    for(i=0; i<n-1; i++)
        for(j=i+1; j<n; j++)
            if(strcmp(p[i],p[j])<0)
            {
                strcpy(t,p[i]);
                strcpy(p[i],p[j]);
                strcpy(p[j],t);
            }
}

预测结果:Russia,America

实际结果:Russia,America

学习心得:
                strcpy ( t , p [ i ] ) ;
                strcpy ( p [ i ] , p [ j ] ) ;
                strcpy ( p [ j ] , t ) ;

也可以 交换 字符串,涨姿势了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值