C++练习——2014/3/9

对应于二级书的第15-20题,前几题没有耐心看,所以大多都是抄的,关于指针还有很多很多的问题,但愿能够及时修补漏洞吧最近我会多进行实际操作的,对于理论题目,最近也要抓紧时间。

1.

#include <iostream.h>
void fun(int a[],int n,int b[],int m,int *c)
{
	int i,j;
	for(i=j=0;i<n&&j<m;)
		*c++=a[i]<b[j]?a[i++]:b[j++];
	while(i<n)
		*c++=a[i++];
	while(j<m)
		*c++=b[j++];


}

void main()
{
	int A[]={3,5,7,9,11,18,21};
	int B[]={6,5,19,21,39};
	int C[25],i;
	for(i=0;i<25;i++)
		C[i]=0;
	cout<<endl;
	cout<<"A[]=";
	for(i=0;i<7;i++)
		cout<<A[i]<<',';
	cout<<endl;
	cout<<"B[]=";
	for(i=0;i<5;i++)
		cout<<B[i]<<',';
	cout<<endl;
	fun(A,7,B,5,C);
	cout<<"C[]=";
	for(i=0;i<12;i++)
		cout<<C[i]<<',';
	cout<<endl;
	return;
2.

#include<iostream.h>
int fun(int a[],int n)
{
	if(n>0)
		return a[n-1]+fun(a,n-1);
    return 0;

}
void main()
{
	int A[]={1,2,3,4};
	cout<<fun(A,sizeof(A)/sizeof(int))<<endl;
	return;
}

关于递归函数一遇到就犯错,这是个大问题;希望能通过多练习然后有所提高;

3.

#include<iostream.h>
#define MAXLINE 100
int fun(int a[],int *index)
{
	int n=0,i;
	do
	{
		cout<<"Please enter n\n";
		cin>>n;
	}while(n>99);
	
	for(i=0;i<n;i++)
	{
		cout<<"please enter the a["<<i<<"]\n";
        cin>>a[i];
	}
	*index=0;
	for(int j=1;j<n;j++)
	{
		if(a[*index]<a[j] )
		{
    		*index=j;
		}
	}
	return a[*index];

}
void main()
{
	int A[MAXLINE];
	int index;
    int maxdata;
	maxdata=fun(A,&index);
	cout<<"the max data is:"<<maxdata<<" "<<"the posion is:"<<index<<endl;
	return;
}

4.

#include <iostream.h>
#define MAXLINE 1000
void fun(char *s1,char *s2)
{
	int n=0;
	for(n;s1[n]!=0;n++);//don't forget ';'
	for(int i=0;s2[i]!=0;i++)
		s1[n++]=s2[i];
	s1[n]=0;

}

void main()
{
	char s1[MAXLINE];
	char s2[256];
	cout<<"p;ease input a string:"<<endl;
	cin.getline(s1,MAXLINE);
	cout<<"please input other string:"<<endl;
	cin.getline(s2,256);
	fun(s1,s2);
	cout<<s1<<endl;
	return;
}

5.
#include <iostream>
void fun(char* s,char* s1,char* s2)
{
	int i,j,k;
	for(i=0;s1[i]!=0;i++)
	for(j=0;s[j]!=0;j++)
		if(s[j]==s1[i])
			s[j]=s2[i];

}
void main()
{
	char s[]="ABCABC";
	fun(s,"AC","ZX");
	std::cout<<s<<std::endl;
	return;
}
6.

#include <iostream>
int fun(int *a,int n)
{
	int k=0;
	for(int i=1;i<n+1;i++)
	{
		if(a[k]!=a[i])
		{	
			k++;
			a[k]=a[i];
			
		}


	}
	return k;

}
void main()
{
	int A[]={6,6,5,4,4,3,3,2,1};
	int j=fun(A,sizeof(A)/sizeof(int));
	for(int i=0;i<j;i++)
	{
		std::cout<<A[i]<<' ';
	}
	std::cout<<std::endl;
	return;
}

只有最后两个是完全独立自主写的;都是在vc6.0中测试通过了;唉,还要很大努力啊!所有程序都没有一次通过,都是经过很多调试,并不是说写程序非要一次性通过,但是我的错误一般都很简单,所以希望能够通过多练习得以避免从而节省时间,而且这些程序都很简单,我希望以后有机会写大程序的时候可以不用花心思去应对小错误了;
发布了47 篇原创文章 · 获赞 29 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章