/*
*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 ) ;
也可以 交换 字符串,涨姿势了