1. 字符串处理
把一个字符串中的除大写字母、小写字母和数字字符之外的其他字符都去掉,输出新字符串。
要求实现函数:
void my_string(char* input, char* output)
【输入】 char* input,输入的字符串
【输出】 char* output, 输出的字符串
【返回】 无
示例
输入:input = “A*(BC&De+_fg/*” 输出:output = “ABCDefg” 输入:input = “aB+_9”
输出:output = “aB9”
#include "stdafx.h"
#include <iostream>
using namespace std;
void my_string(char* input,char* output)
{
while(*input!='\0')
{
if(((*input>='a')&&(*input<='z'))||((*input>='A')&&(*input<='Z'))||((*input>='0')&&(*input<='9')))
*output++=*input;
input++;
}
*output='\0';
}
int _tmain(int argc, _TCHAR* argv[])
{
char src[1000];
cin>>src;
char dst[1000];
my_string(src,dst);
cout<<dst;
system("pause");
return 0;
}
2. 掷骰子游戏
在掷骰子游戏中,会根据所掷数字在地图中前进几步,前进完成后需要根据当前地图位置所示的障碍进行相应操作,其中障碍表示:
1) 9:无障碍
2) 1:停掷一轮,即下轮所掷数字无效; 3) 2:后退两步,如果已经到起点不再后退; 4) 3:奖励前进一步
如果在游戏过程中,已经走到地图终点,则游戏结束。根据输入的地图数组,和5个骰子数的数组,返回最终玩家前进了多少步。
要求实现函数:
void dice(int map_len, int* map, int* dice_val, int* output)
【输入】 int map_len,地图数组的长度
int* map,地图数组,值表示障碍
int* dice_val,5个骰子数的数组
【输出】 int *output,玩家共前进了多少步
【返回】 无
注:玩家是从起始位置开始,即地图数组的第一位,骰子数只能是1~6
示例
1) 输入:map_len = 15, map = {9,1,9,9,9,2,9,9,9,9,9,9,9,9,9},dice_val = {1,2,1,3,1},
返回:4
2) 输入:map_len = 16, map = {9,9,9,9,9,1,9,3,9,9,2,9,9,9,9,9},dice_val = {2,1,4,1,6},
返回:15
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
void dice(int map_len,int* map1,int* dice_val,int* output)
{
int temp=0,i;
for(i=0;i<5;i++)
{
if(temp==map_len-1)
break;
temp+=*dice_val;
if(map1[temp]==1)
{
dice_val++;
i++;
}
else if (map1[temp]==2)
{
temp-=2;
if(temp<=0)
temp=0;
}
else if(map1[temp]==3)
temp++;
else
;
dice_val++;
}
*output=temp;
}
int _tmain(int argc, _TCHAR* argv[])
{
//int map_len=15,m_map[]={9,1,9,9,9,2,9,9,9,9,9,9,9,9,9},dice_val[]={1,2,1,3,1};
int map_len=16,m_map[]={9,9,9,9,9,1,9,3,9,9,2,9,9,9,9,9},dice_val[]={2,1,4,1,6};
int step=0;
dice(map_len,m_map,dice_val,&step);
cout<<step;
system("pause");
return 0;
}
3题目描述:
输入一个字符串,将其中大写字母转换为对应小写字母之后的第五个字母, 若原始大写字母为V~Z, 则转换为对应小写字母的值减21。 其他字符不变,输出转换后的字符串。
例如,对于字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b 要求实现函数:
void TransferString(const char * pInputStr, long lInputLen, char * pOutputStr);
【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例
输入:“Axs3mWss” 输出:“fxs3mbss”
4. 将一个字符串的元音字母复制到另一个字符串,并排序(30分)
问题描述:有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序(小写的元音字母在前,大写的元音字母在后,依次有序)。 说明:1、 元音字母是a,e,i,o,u,A,E,I,O,U。
2、 筛选出来的元音字母,不需要剔重;最终输出的字符串,小写元音字母排在前面,大写元音
字母排在后面,依次有序。
要求实现函数:void sortVowel (char* input, char* output);
【输入】 char* input,表示输入的字符串
【输出】 char* output,排好序之后的元音字符串。
【返回】 无
示例 : 输入:char *input = “Abort!May Be Some Errors In Out System.“
输出:char *output =“aeeeooAEIO “
#include "stdafx.h"
#include <iostream>
using namespace std;
void sortVowel(char* input,char* output)
{
int len=strlen(input);
int i,j;
char lchar[100];
char rchar[100];
int x=0,y=0;
for(i=0;i<len;i++)
{
if(input[i]=='a'||input[i]=='e'||input[i]=='i'||input[i]=='o'||input[i]=='u')
{
lchar[x++]=input[i];
}
else if(input[i]=='A'||input[i]=='E'||input[i]=='I'||input[i]=='O'||input[i]=='U')
{
rchar[y++]=input[i];
}
}
char temp;
//rchar[y]='\0';
//cout<<rchar<<endl;
for(i=0;i<x;i++)
{
for(j=i+1;j<x;j++)
{
if(lchar[j]<lchar[j-1])
{
temp=lchar[j-1];
lchar[j-1]=lchar[j];
lchar[j]=temp;
}
}
*output++=lchar[i];
}
for(i=0;i<y;i++)
{
for(j=i+1;j<y;j++)
{
if(rchar[j]<rchar[j-1])
{
temp=rchar[j-1];
rchar[j-1]=rchar[j];
rchar[j]=temp;
}
}
*output++=rchar[i];
}
*output='\0';
}
int _tmain(int argc, _TCHAR* argv[])
{
char stringin[50]="Abort!May Be Some Errors In Out System.";
char stringout[50];//空字符串初始化时必须赋初值
sortVowel(stringin,stringout);
cout<<stringout;
system("pause");
return 0;
}
5. 从两个数组的最后一个元素比较两个数组中不同元素的个数
如有array1[5]={77,21,1,3,5}, array2[3]={1,3,5},从array1[4]与array2[2]比较开始,到array1[2]与array[0]比较结束。这样得出它们不同的元素个数为0,若array1[6]={77,21,1,3,5,7},那么他们不同的元素为3。
函数原型为 int compare_array( int len1, int array1[], int len2, int array2[] );
其中,len1与len2分别为数组array1[]和array2[]的长度,函数返回值为两个数组不同元素的个数。
6. 单词统计
题目描述:
输入一段英文文本,用程序统计出现频率最高和最低的两个单词;
英文文本中仅出现这四类字符:空格( )、英文逗号(,)、英文句号(.)、英文大小写字母(a-z、A-Z) 单词之间的分隔符仅考虑这三种:空格( )、英文逗号(,)、英文句号(.); 仅大小写不同的单词算同一个单词;
如果两个单词出现次数相同,则在文本中首次出现的单词优先返回。 返回的单词统一用小写字母返回 例如:
输入字符串“Hello world, i said hello world to the world”,返回“world”,“i” 输入字符串“Somebody like somebody,i do not like it”,返回“somebody”,“i” 要求实现函数:
void WordStat(const char * pInputStr, char * pOutputHotWord, char * pOutputColdWord);
【输入】 pInputStr: 输入字符串,指向一段英文文本
【输出】 pOutputHotWord: 输出字符串,返回出现次数最多的单词,该指针所指存储空间已经分配好,且足够大
pOutputColdWord:输出字符串,返回出现次数最少的单词,该指针所指存储空间已经分配好,且足够大
【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例
输入:“Hello world, i said hello world to the world”
输入:"world "
" i"
#include <iostream>
#include <cstring>
using namespace std;
void WordStat(const char *pInputStr, char *pOutputHotWord, char *pOutputColdWord);
void WordStat(const char *pInputStr, char *pOutputHotWord, char *pOutputColdWord)
{
///先将字符串分成一个一个单词赋给一个二维数组
int len=strlen(pInputStr);
int i,j=0,k=0,num_space=0;
char temp[100][1000];
for(i=0;i<len;i++)
{
temp[j][k]=pInputStr[i];
if(temp[j][k]>='A'&&temp[j][k]<='Z')
temp[j][k]+=32;//大写转成小写
if(temp[j][k]==' '||temp[j][k]==','||temp[j][k]=='.')
{
temp[j][k]='\0';
j++;
k=0;
}
else
k++;
}
temp[j][k]='\0';///最后一个要加个结束符
//查找不同单词的类型
char diffect_word[100][1000];
int m,n,x=1;
strcpy(diffect_word[0],temp[0]);
bool flag=true;
for(m=1;m<=j;m++)
{
flag=true;
for(n=0;n<m;n++)
{
if(!strcmp(temp[m],temp[n]))
{
flag=false;
break;
}
}
if(flag)
strcpy(diffect_word[x++],temp[m]);
}
//计算每个不同的单词出现的次数
int num_word[100]={0};
for(i=0;i<x;i++)
{
for(k=0;k<=j;k++)
{
if(!strcmp(diffect_word[i],temp[k]))
num_word[i]++;
}
cout<<num_word[i]<<" "<<diffect_word[i]<<endl;
}
//查找num_word的第一个最大值与第一个最小值,对应在temp中的位置
int num_max=0;
int num_min=0;
for(i=1;i<x;i++)
{
if(num_word[num_max]<num_word[i])
num_max=i;
if(num_word[num_min]>num_word[i])
num_min=i;
}
pOutputHotWord=diffect_word[num_max];
pOutputColdWord=diffect_word[num_min];
cout<<pOutputHotWord<<endl;
cout<<pOutputColdWord;
}
void main()
{
const char *input="Hello world,i said hello world to the world ";//注意,豆号后面不要有空格
//const char *input="Somebody like somebody i do not like it";
char * pOutputHotWord=NULL;
char * pOutputColdWord=NULL;
WordStat(input,pOutputHotWord, pOutputColdWord);
system("pause");
}