您的位置:首页 > 其它

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

2014-11-30 10:40 302 查看
/*
*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
!='\0')
str[n++]=str
>='a'&&str
<='z'?str
-'a'+'A':str
;
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
中的元素倒过来
}
}

预测结果: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 ) ;

也可以 交换 字符串,涨姿势了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: