對應於二級書的第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中測試通過了;唉,還要很大努力啊!所有程序都沒有一次通過,都是經過很多調試,並不是說寫程序非要一次性通過,但是我的錯誤一般都很簡單,所以希望能夠通過多練習得以避免從而節省時間,而且這些程序都很簡單,我希望以後有機會寫大程序的時候可以不用花心思去應對小錯誤了;