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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章