您的位置:首页 > 编程语言 > PHP开发

2010华为软件设计大赛初级题目;

2010-05-26 21:06 357 查看
 2010年华为软件设计大赛试卷
类别:软件C++语言 高级
 
 
 
编程题(共3题,第1题20分,第2题30分,第3题50分。请上机编写程序,按题目要求提交文件。[详见考试说明]
本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交要求导致不能编译或用例不通过,不予评分)。
 
1. 逆序输出
问题描述:

输入一个字符串,将其逆序后输出。 
要求实现函数:

void converse(const char *pIn, char *pOut)
输入:pIn 输入的字符串
输出:pOut 输出的字符串(pOut空间已经分配,请直接写入,空间长度和pIn长度一致)
示例

输入:“teqwerasd341”  输出:“143dsarewqet”
 
2. 兔子产子
问题描述:

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,请实现函数,计算第month个月的兔子总数?
要求实现函数:

unsigned int rabbits(unsigned int month);
返回:兔子总数
输入:month 第几个月
示例

1)输入:month=3;函数返回:4
2)输入:month=6;函数返回:16
 
 
3. 单词交换
问题描述:

读入一行文本,包含若干个单词(以空格间隔,或到文本结束)。将其中以 A 开头的
单词与以 N 结尾的单词,用头尾交换的办法予以置换。
要求实现函数:

void exchange(const char *pIn, char *pOut)
输入:pIn 输入的文本
输出:pOut 输出的文本(pOut空间已经分配,请直接写入,空间长度和pIn长度一致)
示例

输入:“AM I OLDER THAN YOU”  输出:“THAN I OLDER AM YOU”

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

/*1. 逆序输出
•	问题描述:
输入一个字符串,将其逆序后输出。
•	要求实现函数:
void converse(const char *pIn, char *pOut)
输入:pIn 输入的字符串
输出:pOut 输出的字符串(pOut空间已经分配,请直接写入,空间长度和pIn长度一致)
•	示例
输入:“teqwerasd341”  输出:“143dsarewqet”
*/

void converse(const char*pIn,char *pOut)
{
int len=strlen(pIn);
for(int i=len-1,j=0;i>=0;--i)
{
pOut[j++]=pIn[i];
}
pOut[len]='/0';
}

int main()
{
char str[50];
char verStr[50];
gets(str);
converse(str,verStr);
printf("%s",verStr);
return 0;
}


#include <stdlib.h>
#include <stdio.h>

/*
2. 兔子产子
•	问题描述:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,请实现函数,计算第month个月的兔子总数?
•	要求实现函数:
unsigned int rabbits(unsigned int month);
返回:兔子总数
输入:month 第几个月
•	示例
1)输入:month=3;函数返回:4
2)输入:month=6;函数返回:16
*/

unsigned int rabbits(unsigned int month)
{

unsigned int n=(month/2)+1;
return (0x00000001)<<(n);
}

int main()
{
unsigned int n;
scanf("%u",&n);
printf("%d",rabbits(n));
return 0;
}


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
3. 单词交换
•	问题描述:
读入一行文本,包含若干个单词(以空格间隔,或到文本结束)。将其中以 A 开头的
单词与以 N 结尾的单词,用头尾交换的办法予以置换。
•	要求实现函数:
void exchange(const char *pIn, char *pOut)
输入:pIn 输入的文本
输出:pOut 输出的文本(pOut空间已经分配,请直接写入,空间长度和pIn长度一致)
•	示例
输入:“AM I OLDER THAN YOU”  输出:“THAN I OLDER AM YOU”
*/

//拆分字符串成单词数组,然后拼接进pOut

void exchange(const char*pIn,char *pOut)
{
char words[100][30]; //100以内个单词,每个单词长30以内
int length[100];//记录每个单词的长度
char temp[30];
int i=0,j=0,k=0,len=strlen(pIn);
while(k<len)
{
while((words[i][j]=pIn[k])!=' ')
{
++j;
++k;
}
length[i]=j;
words[i++][j]='/0';
++k;
j=0;
}
k=0;
int range=--i;

while(true)
{
while(words[k][0]!='A'&&k<range-1)
{
++k;
}
while(words[i][length[i]-1]!='N'&&i>1)
{
--i;
}
if(k==range-2||i==1||k>=i)
{
break;
}
else
{
strcpy(temp,words[k]);
strcpy(words[k],words[i]);
strcpy(words[i],temp);
++k;
--i;
}
}
for(int cnt=0;cnt<range+1;++cnt)
{
strcat(pOut,words[cnt]);
strcat(pOut," ");
}
pOut[len]='/0';

}

int main()
{
char input[100];
char output[100];
gets(input);
exchange(input,output);
puts(output);
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息