对应41-45题,这些题和答案略有出入,45题是完全照答案的思路写的,不过我感觉按自己的想法也能写不过需要花点时间。
也算写了些程序了吧,感觉自己还没有形成编程的思维,今天去模拟上机,遇到了之前的题目但是仍然没做出来,不过我会努力的!
1.
#include<iostream.h>
#include<cstring>
#define MAXLEN 1024
void convert(char* des,char*str,char*str2)
{
for(int i=0;str[i]!=0;i++)
{
if(str[i]=='!')
{
*des='a';
des++;
*des=0;
}
else if(str[i]=='&')
{
*des='b';
des++;
*des=0;
}
else if(str[i]=='*')
{
for(int j=0;str2[j]!=0;j++)
{
*des=str2[j];
des++;
*des=0;
}
}
else
{
*des=str[i];
des++;
*des=0;
}
}
}
void main()
{
char dest[MAXLEN];
char* str="!&cefghi*!&";
char* str2="jklm";
convert(dest,str,str2);
cout<<dest<<endl;
return;
}
2.
#include <iostream.h>
#define MAXLEN 1024
void ToUpper(char* des,char* str)
{
for(int i=0;str[i]!=0;i++)
{
if(str[i]>='a'&&str[i]<='z')
{
*des=str[i]-32;
des++;
*des=0;
}
else
{
*des=str[i];
des++;
*des=0;
}
}
}
void main()
{
char dest[MAXLEN];
char*str="aBcdrFGHijK";
ToUpper(dest,str);
cout<<dest<<endl;
return;
}
3.
#include<iostream.h>
#include<ctype.h>
#define MAXLEN 1024
char* convert(char* des,char* str)
{
int count=0;
for(int i=0;str[i]!=0;i++)
{
if(isprint(str[i])&&str[i]!=' ')
{
*des=str[i];
des++;
*des=0;
count++;
}
}
return des-count;
}
void main()
{
char dest[MAXLEN];
char* str=" Ab cDeF hJ K";
cout<<convert(dest,str)<<endl;
return;
}
4.
#include <iostream.h>
#include <ctype.h>
int factorial(int n)
{
if(n<1)
return 0;
if(n==1)
return 1;
else
return n*factorial(n-1);
}
void main()
{
cout<<factorial(1)<<endl;
cout<<factorial(5)<<endl;
cout<<factorial(0)<<endl;
return;
}
5.
#include <iostream.h>
#include <ctype.h>
#define MAXLEN 1024
char* convert(char* des,char*str)
{
int length;
int i;
int k;
for(length=0;str[length]!=0;length++);
length--;
for(i=length;i>=0;i--)
{
if(str[i]!=' ')
break;
}
for(k=0;k<=i;k++)
{
des[k]=str[k];
}
des[k]=0;
return des;
}
void main()
{
char dest[MAXLEN];
char* string=" abc def ";
cout<<string<<"<--"<<endl;
cout<<convert(dest,string)<<"<--"<<endl;
return;
}