C++实验报告——实验十三、十四
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0;i<10;i++){
for(j=1;j<=i+1;j++)cout<<a[i][j]<<'\t';
cout<<endl;
}
return 0;
}
3.分别编写实现下列字符数组处理的函数,用数组作为参数:
(1)void trim(char s[ ]) //删除字符串s 的尾部空格。
(2)void lefstring(char s1[ ], char s2[ ],int n) //得到指定字符串s1中前n个字符的子串s2.
}}
return n;
}
实验心得:
通过实验,对数组的理解加深了,明白数组的存储和读取原理,知道二维数组是怎样操作的。
了解了指针参数的执行,但是对于指针的优势不是很理解,我觉得在这种小程序中,指针的优势是不能体现出来的。我认为这次实验主要是模仿,因为我们是第一次使用指针,而且只是指针中的一小部分,还有指针函数等,指针参数是其中一个。
if(carray[i]!=carray[len-1-i]){
is_palindrome=0;
break;
}}
if(is_palindrome) cout<<"The string is a palindrome.\n";
else cout<<"The string isn't a palindrome.\n";
}
if(m<10)
cout<<m;
switch(m)
{
case 10:cout<<"A";break;
case 11:cout<<"B";break;
case 12:cout<<"C";break;
case 13:cout<<"D";break;
case 14:cout<<"E";break;
case 15:cout<<"F";break;
cout<<st<<endl;
secret(st);
cout<<st<<endl;
desecret(st);
cout<<st<<endl;
return 0;
}
(1)阅读程序,如果将两个函数中else if(*s==122) *s='a';和else if(*s==97) *s='z';处的else 去掉,对程序有何影响?使用数据”I am a boy !” 重新测试看看。
for(i=0;i<n;i++)
for(j=0;j<4;j++)
if(array[i][j]>max)
max=array[i][j];
return(max);
}
修改上述程序使其不仅求矩阵中的最大元素而且还能求最大元素的行列值。
#include<iostream>
using namespace std;
cout<<"串str3:"<<str3<<"长度为:"<<strlen(str3)<<endl;
cout<<"串str2:"<<str2<<endl;
n=index(str1,str2);
if(n!=-1) cout<<"串str1包含串str2,从第"<<n<<"个字符开始(由0开始计数)。"<<endl;
n=index(str1,str2);
if(n!=-1) cout<<"串str1包含串str2,从第"<<n<<"个字符开始(由0开始计数)。"<<endl;
else cout<<"串str1不包含串str2。"<<endl;
return 0;
}
void trim(char*s){
int i=0;
int max_value(int array[][4],int k);
int main(){
int a[3][4]={{1,3,6,7},{2,4,6,8},{15,17,34,12}};
cout<<"最大数为:"<<max_value(a,3)<<'\n';
return 0;
}wenku.baidu.com
int max_value(int array[][4],int n)
}
2.打印杨辉三角形(10行)。使用二维数组并利用每个系数等于其上两系数之和。
#include<iostream>
using namespace std;
int main(){
int a[10][11]={0,1},i,j;
for(i=1;i<10;i++)
for(j=1;j<=i+1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];
#include"iostream"
using namespace std;
int main()
{
int n,m;
cout<<"请输入一个十进制数(小于256):"<<endl;
cin>>n;
cout<<"相应16进制数为:";
while(n/16!=0)
{
m=n/16;
while(m>16)
{
m=m/16;
bool b=0;
int i,j,n=-1,n1=strlen(s1),n2=strlen(s2);
for(i=0;i<n1;i++){
if(s1[i]==s2[0]){
b=1;
for(j=1;j<n2;j++){
if(s1 [i+j]!=s2[j]){
b=0;
break;
}}}
if(b==1){
n=i;break;
void trim(char s[]);
void leftstring(char s1[],char s2[],int n);
int index(char s1[],char s2[]);
int main(){
char str1[]="I'm student.",str2[]="student",str3[4];
int index(char *s1,char *s2);
int main(){
char str1[]="I'm student.",str2[]="student",str3[4];
int n;
cout<<"包括尾部空格的串时str1:"<<str1<<"长度为:"<<strlen(str1)<<endl;
case 15:cout<<"F";break;
}
cout<<endl;
}
实验十四指针与数组
1.范例:判断用户输入的C字符串是否为"回文",所谓"回文"是指顺读和反读都一样的串, 例如串 12321、madam。
#include<iostream>
#include<cstring>
using namespace std;
else cout<<"串str1不包含串str2。"<<endl;
return 0;
}
void trim(char s[]){
int i=0;
while(s[i]!='\0') i++;
i--;
while(s[i]==' ') s[i--]='\0';}
void leftstring(char s1[],char s2[],int n){
else if (*s==122) *s='a';
s++;
}}
void desecret(char*s){
while(*s!='\0'){
if(*s>97&&*s<123) *s=*s-1;
else if (*s==122) *s='z';
s++;
}}
int main(){
char st[]="This is a secret code:";
const SIZE=100;
int main(){
char carray[SIZE];
int i,len,is_palindrome=1;
cout<<"Please input a string.\n";
cin.get(carray,SIZE);
len=strlen(carray);
for(i=0;i<len/2;i++){
b=1;
for(j=1;j<n2;j++){
if(s1 [i+j]!=s2[j]){
b=0;
break;
}}}
if(b==1){
n=i;break;
}}
return n;
}
4.编程:编写函数itoa0(int n, char s[ ], int b),将十进制整数n转换为以十六进制为基数的数字字符数组。
结果如下:出现当字符为y时,首先将被代替为z,再被替换为a.
3.编程:重新编写实验十三中题3的字符串处理函数,用指针作为参数。
#include<iostream>
#include<cstring>
using namespace std;
void trim(char*s);
void leftstring(char *s1,char *s2,int n);
int main(){
int a[3][4]={{1,3,6,7},{2,4,6,8},{15,17,34,12}};
cout<<max_value(a,3)<<'\n';
return 0;
}
int max_value(int array[][4],int n)
{
int i,j,max=array[0][0];
编写一个程序对输入串加密,输出加密前和加密后的串,再将加密后的字符串解密输出。主函数如下,请编写加密函数和解密函数。
#include<iostream>
using namespace std;
void secret(char*s){
while (*s!='\0'){
if(*s>98&&*s<122) *s=*s+1;
(3)int index(char s1[ ], char s2[ ] )
//检查字符串s2是否为字符串s1 的子串,根据查找结果返回s2在s1中的开始位置,如果s2不是s1的子串,则返回-1
#include<iostream>
#include<cstring>
using namespace std;
实验十三数组与多维数组
1.范例:求一个 3×4 矩阵中的最大元素,将求矩阵中的最大元素的过程定义为一个函数。函数的第一个参数是矩阵本身,第二个参数是第一维的大小。
#include<iostream>
using namespace std;
int max_value(int array[][4],int k);
return 0;
}
2.范例:按一定的规则可以将一个字符串经加密转换为一个新的串,例如加密的简单方法是当为'a'~'y'的小写字母时用后一个字母代替前一个字母,
其中'z'变换为'a',其他字符时不变。
例如: 原串为 This is a secret code!
加密后的串为 Tijt jt b tfdsfu dpef!
}
n=n%16;
}
if(n<10)
cout<<n<<endl;
switch(n)
{
case 10:cout<<"A";break;
case 11:cout<<"B";break;
case 12:cout<<"C";break;
case 13:cout<<"D";break;
case 14:cout<<"E";break;
int n;
cout<<"包括尾部空格的串时str1:"<<str1<<"长度为:"<<strlen(str1)<<endl;
trim(str1);
cout<<"无尾部空格的串时str1:"<<str1<<"长度为:"<<strlen(str1)<<endl;
leftstring (str1,str3,3);
while(s[i]!='\0') i++;
i--;
while(s[i]==' ') s[i--]='\0';}
void leftstring(char *s1,char *s2,int n){
int i;
for(i=0;i<n;i++) s2[i]=s1[i];
s2[i]='\0';}
int index (char *s1,char *s2){
{
int i,j,max=array[0][0],a,b;
for(i=0;i<n;i++)
for(j=0;j<4;j++)
if(array[i][j]>max)
max=array[i][j],a=i,b=j;
cout<<"下标为(从0,0开始)"<<a<<","<<b<<endl;
return(max);
trim(str1);
cout<<"无尾部空格的串时str1:"<<str1<<"长度为:"<<strlen(str1)<<endl;
leftstring (str1,str3,3);
cout<<"串str3:"<<str3<<"长度为:"<<strlen(str3)<<endl;
cout<<"串str2:"<<str2<<endl;
int i;
for(i=0;i<n;i++) s2[i]=s1[i];
s2[i]='\0';}
int index (char s1[],char s2[]){
bool b=0;
int i,j,n=-1,n1=strlen(s1),n2=strlen(s2);
for(i=0;i<n1;i++){
if(s1[i]==s2[0]){
for(j=1;j<=i+1;j++)cout<<a[i][j]<<'\t';
cout<<endl;
}
return 0;
}
3.分别编写实现下列字符数组处理的函数,用数组作为参数:
(1)void trim(char s[ ]) //删除字符串s 的尾部空格。
(2)void lefstring(char s1[ ], char s2[ ],int n) //得到指定字符串s1中前n个字符的子串s2.
}}
return n;
}
实验心得:
通过实验,对数组的理解加深了,明白数组的存储和读取原理,知道二维数组是怎样操作的。
了解了指针参数的执行,但是对于指针的优势不是很理解,我觉得在这种小程序中,指针的优势是不能体现出来的。我认为这次实验主要是模仿,因为我们是第一次使用指针,而且只是指针中的一小部分,还有指针函数等,指针参数是其中一个。
if(carray[i]!=carray[len-1-i]){
is_palindrome=0;
break;
}}
if(is_palindrome) cout<<"The string is a palindrome.\n";
else cout<<"The string isn't a palindrome.\n";
}
if(m<10)
cout<<m;
switch(m)
{
case 10:cout<<"A";break;
case 11:cout<<"B";break;
case 12:cout<<"C";break;
case 13:cout<<"D";break;
case 14:cout<<"E";break;
case 15:cout<<"F";break;
cout<<st<<endl;
secret(st);
cout<<st<<endl;
desecret(st);
cout<<st<<endl;
return 0;
}
(1)阅读程序,如果将两个函数中else if(*s==122) *s='a';和else if(*s==97) *s='z';处的else 去掉,对程序有何影响?使用数据”I am a boy !” 重新测试看看。
for(i=0;i<n;i++)
for(j=0;j<4;j++)
if(array[i][j]>max)
max=array[i][j];
return(max);
}
修改上述程序使其不仅求矩阵中的最大元素而且还能求最大元素的行列值。
#include<iostream>
using namespace std;
cout<<"串str3:"<<str3<<"长度为:"<<strlen(str3)<<endl;
cout<<"串str2:"<<str2<<endl;
n=index(str1,str2);
if(n!=-1) cout<<"串str1包含串str2,从第"<<n<<"个字符开始(由0开始计数)。"<<endl;
n=index(str1,str2);
if(n!=-1) cout<<"串str1包含串str2,从第"<<n<<"个字符开始(由0开始计数)。"<<endl;
else cout<<"串str1不包含串str2。"<<endl;
return 0;
}
void trim(char*s){
int i=0;
int max_value(int array[][4],int k);
int main(){
int a[3][4]={{1,3,6,7},{2,4,6,8},{15,17,34,12}};
cout<<"最大数为:"<<max_value(a,3)<<'\n';
return 0;
}wenku.baidu.com
int max_value(int array[][4],int n)
}
2.打印杨辉三角形(10行)。使用二维数组并利用每个系数等于其上两系数之和。
#include<iostream>
using namespace std;
int main(){
int a[10][11]={0,1},i,j;
for(i=1;i<10;i++)
for(j=1;j<=i+1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];
#include"iostream"
using namespace std;
int main()
{
int n,m;
cout<<"请输入一个十进制数(小于256):"<<endl;
cin>>n;
cout<<"相应16进制数为:";
while(n/16!=0)
{
m=n/16;
while(m>16)
{
m=m/16;
bool b=0;
int i,j,n=-1,n1=strlen(s1),n2=strlen(s2);
for(i=0;i<n1;i++){
if(s1[i]==s2[0]){
b=1;
for(j=1;j<n2;j++){
if(s1 [i+j]!=s2[j]){
b=0;
break;
}}}
if(b==1){
n=i;break;
void trim(char s[]);
void leftstring(char s1[],char s2[],int n);
int index(char s1[],char s2[]);
int main(){
char str1[]="I'm student.",str2[]="student",str3[4];
int index(char *s1,char *s2);
int main(){
char str1[]="I'm student.",str2[]="student",str3[4];
int n;
cout<<"包括尾部空格的串时str1:"<<str1<<"长度为:"<<strlen(str1)<<endl;
case 15:cout<<"F";break;
}
cout<<endl;
}
实验十四指针与数组
1.范例:判断用户输入的C字符串是否为"回文",所谓"回文"是指顺读和反读都一样的串, 例如串 12321、madam。
#include<iostream>
#include<cstring>
using namespace std;
else cout<<"串str1不包含串str2。"<<endl;
return 0;
}
void trim(char s[]){
int i=0;
while(s[i]!='\0') i++;
i--;
while(s[i]==' ') s[i--]='\0';}
void leftstring(char s1[],char s2[],int n){
else if (*s==122) *s='a';
s++;
}}
void desecret(char*s){
while(*s!='\0'){
if(*s>97&&*s<123) *s=*s-1;
else if (*s==122) *s='z';
s++;
}}
int main(){
char st[]="This is a secret code:";
const SIZE=100;
int main(){
char carray[SIZE];
int i,len,is_palindrome=1;
cout<<"Please input a string.\n";
cin.get(carray,SIZE);
len=strlen(carray);
for(i=0;i<len/2;i++){
b=1;
for(j=1;j<n2;j++){
if(s1 [i+j]!=s2[j]){
b=0;
break;
}}}
if(b==1){
n=i;break;
}}
return n;
}
4.编程:编写函数itoa0(int n, char s[ ], int b),将十进制整数n转换为以十六进制为基数的数字字符数组。
结果如下:出现当字符为y时,首先将被代替为z,再被替换为a.
3.编程:重新编写实验十三中题3的字符串处理函数,用指针作为参数。
#include<iostream>
#include<cstring>
using namespace std;
void trim(char*s);
void leftstring(char *s1,char *s2,int n);
int main(){
int a[3][4]={{1,3,6,7},{2,4,6,8},{15,17,34,12}};
cout<<max_value(a,3)<<'\n';
return 0;
}
int max_value(int array[][4],int n)
{
int i,j,max=array[0][0];
编写一个程序对输入串加密,输出加密前和加密后的串,再将加密后的字符串解密输出。主函数如下,请编写加密函数和解密函数。
#include<iostream>
using namespace std;
void secret(char*s){
while (*s!='\0'){
if(*s>98&&*s<122) *s=*s+1;
(3)int index(char s1[ ], char s2[ ] )
//检查字符串s2是否为字符串s1 的子串,根据查找结果返回s2在s1中的开始位置,如果s2不是s1的子串,则返回-1
#include<iostream>
#include<cstring>
using namespace std;
实验十三数组与多维数组
1.范例:求一个 3×4 矩阵中的最大元素,将求矩阵中的最大元素的过程定义为一个函数。函数的第一个参数是矩阵本身,第二个参数是第一维的大小。
#include<iostream>
using namespace std;
int max_value(int array[][4],int k);
return 0;
}
2.范例:按一定的规则可以将一个字符串经加密转换为一个新的串,例如加密的简单方法是当为'a'~'y'的小写字母时用后一个字母代替前一个字母,
其中'z'变换为'a',其他字符时不变。
例如: 原串为 This is a secret code!
加密后的串为 Tijt jt b tfdsfu dpef!
}
n=n%16;
}
if(n<10)
cout<<n<<endl;
switch(n)
{
case 10:cout<<"A";break;
case 11:cout<<"B";break;
case 12:cout<<"C";break;
case 13:cout<<"D";break;
case 14:cout<<"E";break;
int n;
cout<<"包括尾部空格的串时str1:"<<str1<<"长度为:"<<strlen(str1)<<endl;
trim(str1);
cout<<"无尾部空格的串时str1:"<<str1<<"长度为:"<<strlen(str1)<<endl;
leftstring (str1,str3,3);
while(s[i]!='\0') i++;
i--;
while(s[i]==' ') s[i--]='\0';}
void leftstring(char *s1,char *s2,int n){
int i;
for(i=0;i<n;i++) s2[i]=s1[i];
s2[i]='\0';}
int index (char *s1,char *s2){
{
int i,j,max=array[0][0],a,b;
for(i=0;i<n;i++)
for(j=0;j<4;j++)
if(array[i][j]>max)
max=array[i][j],a=i,b=j;
cout<<"下标为(从0,0开始)"<<a<<","<<b<<endl;
return(max);
trim(str1);
cout<<"无尾部空格的串时str1:"<<str1<<"长度为:"<<strlen(str1)<<endl;
leftstring (str1,str3,3);
cout<<"串str3:"<<str3<<"长度为:"<<strlen(str3)<<endl;
cout<<"串str2:"<<str2<<endl;
int i;
for(i=0;i<n;i++) s2[i]=s1[i];
s2[i]='\0';}
int index (char s1[],char s2[]){
bool b=0;
int i,j,n=-1,n1=strlen(s1),n2=strlen(s2);
for(i=0;i<n1;i++){
if(s1[i]==s2[0]){