两个C++的题目

现有两个C++题目,希望有会的高手帮忙编一下,越快越好,题目如下:1,编写一函数add-matrix计算4*4矩阵的和。要求在主函数中定义两个矩阵,并进行输入,调用add... 现有两个C++题目,希望有会的高手帮忙编一下,越快越好,题目如下:
1, 编写一函数add-matrix计算4*4矩阵的和。要求在主函数中定义两个矩阵,并进行输入,调用add-matrix函数实现加法,最后在主函数中输出相加后的结果。
2, 在主函数中输入一段字符串,在自定义函数中统计字符串中包含的英文字符、数字、空格和其他的字符的个数,并将统计数据返回主函数输出。
展开
 我来答
jaycnvip
推荐于2016-06-03 · TA获得超过767个赞
知道小有建树答主
回答量:998
采纳率:100%
帮助的人:644万
展开全部
第一题
#include <iostream.h>
#include <stdlib.h>

class juzhen
{
int** a;
int row;
int col;
public:
juzhen();//默认生成 2 行 2 列的矩阵,元素初值为 0
juzhen(int r,int c);//生成 r 行 c 列的矩阵,元素初值为 0
juzhen(int r,int c,int d);//生成 r 行 c 列的矩阵,元素初值为 d
void rsetmatrixsize(int r,int c){row = r;col = c;}
friend istream & operator>>(istream&,juzhen&); //输入重载
friend ostream & operator<<(ostream&,juzhen&); //输出重载
juzhen& operator^(juzhen&);//将矩阵转置,注意转置后的行列设置
juzhen add_matrix(juzhen& lj,juzhen& rj);
}; //矩阵 lj 和 rj 相加

juzhen::juzhen(){
row = col =2;
a = new int*[row];
for(int i=0;i<row;i++){
a[i] = new int[col];
}
for(int m=0;m<row;m++)
for(int n=0;n<col;n++)
a[m][n] = 0;
}

juzhen::juzhen(int r,int c){
row = r;
col = c;
a = new int*[row];
for(int i=0;i<row;i++){
a[i] = new int[col];
}
for(int m=0;m<row;m++)
for(int n=0;n<col;n++)
a[m][n] = 0;
}

juzhen::juzhen(int r,int c,int d){
row = r;
col = c;
a = new int*[row];
for(int i=0;i<row;i++){
a[i] = new int[col];
}
for(int m=0;m<row;m++)
for(int n=0;n<col;n++)
a[m][n] = d;
}

istream & operator>>(istream& in,juzhen& a)
{
for(int i=0;i<a.row;i++)
for(int j=0;j<a.col;j++)
in>>a.a[i][j];
return in;
}

ostream & operator<<(ostream& out,juzhen& a)
{
for(int i=0;i<a.row;i++)
{
{
for(int j=0;j<a.col;j++)
out<<a.a[i][j]<<" ";
}
out<<endl;
}
return out;
}

juzhen& juzhen::operator^(juzhen& a)
{
int** p_a;
p_a = new int*[a.col];
for(int k=0;k<a.col;k++){
p_a[k] = new int[a.row];
}
for(int i=0;i<a.row;i++)
for(int j=0;j<a.col;j++) {
p_a[j][i] = a.a[i][j];
}
delete []a.a;
a.a = p_a;
int t = a.row;
a.row = a.col;
a.col = t;
return a;
}

juzhen juzhen::add_matrix(juzhen& lj,juzhen& rj){
juzhen reobj(1,1,0);
if (lj.row!=rj.row||lj.col!=rj.col)
{
return reobj;
}
int objrow = lj.row;
int objcol = lj.col;
reobj.rsetmatrixsize(objrow,objcol);
int** p_a;
p_a = new int*[lj.col];
for(int k=0;k<lj.col;k++){
p_a[k] = new int[lj.row];
}
for (int i=0;i<objrow;i++)
{
for (int j=0;j<objcol;j++)
{
p_a[i][j] = lj.a[i][j] + rj.a[i][j];
}
}
reobj.a = p_a;
return reobj;
}

int main()
{
/**/
juzhen a(4,4,0),b(4,4,0);
cout<<"4×4 矩阵 a:\n";
cin>>a;
cout<<"4×4 矩阵 b:\n";
cin>>b;
system("cls");
cout<<"a:\n"<<a<<endl;
cout<<"b:\n"<<b<<endl;
juzhen c = a.add_matrix(a,b);
cout<<"a+b:\n"<<c<<endl;
return 0;
}

第二题
/*****************判断一个字符是否是符号***********************/
bool is_symbol(char c){//ASCII码在 123-126,33-47,58-64,91-96 之间为符号
if('!'<=c&&c<='/'||':'<=c&&c<[email==]='@'||'['<=c&&c<='`'||'{'<=c&&c<='~'[/email])
return true;
return false;
}

/*******************判断一个字符是否是数字*********************/
bool is_digit(char c){//ASCII码在 123-126,33-47,58-64,91-96 之间为符号
if('0'<=c&&c<='9')
return true;
return false;
}

/****************判断一个字符是否是字母************************/
bool is_character(char c){//ASCII码在 65-90,97-122 之间为字母
if ('a'<=c&&c<='z'||'A'<=c&&c<='Z')
return true;
return false;
}

void calate_char(char *p){
if(NULL==p)
return;
double len = strlen(p);
double ns=0,nc=0,num=0,nspace=0;
for(int i=0;i<len;i++){
if(p[i]==' '){
nspace++;
continue;
}
if(is_digit(p[i]){
num++;
continue;
}
if(is_character(p[i]){
nc++;
continue;
}
if(is_symbol(p[i]){
ns++;
continue;
}
}
cout<<"\n英文:"<<nc<<endl;
cout<<"数字:"<<num<<endl;
cout<<"空格:"<<nspace<<endl;
cout<<"其它:"<<ns<<endl;
}

手里正好写了一个矩阵类,这些判断也写了一些,用上了。说真的,调试那个矩阵加法时,还遇到了小小的困难。
不过,上述函数在VC6下已通过编译,得到预期结果。
cgsd2004
2009-04-08 · TA获得超过419个赞
知道小有建树答主
回答量:518
采纳率:55%
帮助的人:406万
展开全部
#include<iostream>
using namespace std;
1:
//行列数
#define ROWCOUNTS 4
#define COLCOUNTS 4
void InputMatrix(int a[ROWCOUNTS][COLCOUNTS],int b[ROWCOUNTS][COLCOUNTS])
{
int i=0,j=0;
cout<<"输入第一个矩阵:"<<endl;
for(i=0;i<ROWCOUNTS;i++)
{
cout<<"第"<<(i+1)<<"行:";
for (j=0;j<COLCOUNTS;j++)
{
cin>>a[i][j];
}
cout<<endl;
}
cout<<"输入第二个矩阵:"<<endl;
for(i=0;i<ROWCOUNTS;i++)
{
cout<<"第"<<(i+1)<<"行:";
for (j=0;j<COLCOUNTS;j++)
{
cin>>b[i][j];
}
cout<<endl;
}
cout<<"输入矩阵结束"<<endl;
}
void PrintMatrix(int a[ROWCOUNTS][COLCOUNTS])
{
for (int i=0;i<ROWCOUNTS;i++)
{
for (int j=0;j<COLCOUNTS;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}

void AddMatrix(int a[ROWCOUNTS][COLCOUNTS],int b[ROWCOUNTS][COLCOUNTS],int c[ROWCOUNTS][COLCOUNTS])
{
for (int i=0;i<ROWCOUNTS;i++)
{
for (int j=0;j<COLCOUNTS;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
}
void main()
{
int a[4][4],b[4][4],c[4][4];
InputMatrix(a,b);
AddMatrix(a,b,c);
PrintMatrix(c);
}
///////////////////////////////////////////////////////////////////2:
void CountNumber(const char* s,int counts[4])
{
int i=0;
int length =0;
length = strlen(s);
for(i=0;i<4;i++)
{
counts[i]=0;
}
i=0;
while (i<=length)
{
if ((s[i]>='A' && s[i]<='Z')||(s[i]>='a' && s[i]<='z'))
{//字母
counts[0]++;
}
else if (s[i]>='0' && s[i]<='9')
{//数字
counts[1]++;
}
else if (s[i] == ' ')
{//空格
counts[2]++;
}
else
{//其他
counts[3]++;
}
i++;
}
}
int main()
{
const char* str="we 2wer 3..,///^76dfs23#@4df s sv dfg45 34 s";
int counts[4];
CountNumber(str,counts);

for (int i=0;i<4;i++)
{
cout<<counts[i]<<" ";
}
cout<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dwthead
2009-04-08 · TA获得超过2309个赞
知道小有建树答主
回答量:1478
采纳率:0%
帮助的人:1931万
展开全部
#include<iostream>
using namespace std;

void add_matrix(int [][4],int [][4]);
void input(int [][4]);
void display(int [][4]);
int main()
{
int a[4][4],b[4][4];

input(a);
input(b);
add_matrix(a,b);

display(a);

return 0;
}

void input(int a[4][4])
{
cout<<"输入矩阵值:"<<endl;
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
cin>>a[i][j];
}
void add_matrix(int a[4][4],int b[4][4])
{

for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
a[i][j]+=b[i][j];

}

void display(int a[4][4])
{
cout<<"相加得到矩阵:"<<endl;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
cout<<a[i][j]<<' ';
cout<<endl;
}
}
///////////////////////////////////////
#include<iostream>
using namespace std;

int main()
{
char c[1000];
int letter=0,digit=0,space=0,others=0;
cout<<"输入字符串:"<<endl;
cin.getline(c,1000,'\n');

for(int i=0;c[i]!='\0';i++)
{
if((c[i]>='a'&&c[i]<='z')||(c[i]>='A'&&c[i]<='Z'))
letter++;
else if(c[i]>='0'&&c[i]<='9')
digit++;
else if(c[i]==' ')
space++;
else others++;
}

cout<<"字母:"<<letter<<"\n数字:"<<digit<<"\n空格:"<<space<<"\n其他:"<<others<<endl;

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式