在CSDN上看到的一道有趣的网易笔试题目--附答案
编程题:
床前明月_ ,疑是地_霜,举头望_月,低头思故_。
A.光 上 明 乡
B.上 明 乡 光
C.乡 上 明 光
D.光 乡 上 明
请你编写一函数,随机扣掉每一句的一个字,然后生成3个错误选项,一个正确选项,选项的字必须是诗里所缺的字。请写出数据结构,算法。
code:
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
const int N = 4;
int main()
{
//每个汉字占两个字节
char str[N][11] = {"窗前明月光","疑是地上霜","举头望明月","低头思故乡"};
srand(time(0));
//存放第i句中抽出的汉字的位置
int a[N];
//存放随机抽出的四个汉字,每个汉字用三个字节存放(汉字+'\0')
char Tstr[4][3];
int i;
//从第i句中随机的抽取一个字
for(i = 0;i<N;++i)
{
//生成(1--4)*2的随机数,即要抽出的汉字的位置
a[i] = (rand() % 5) * 2;
memset(Tstr[i],0,3);
strncpy(Tstr[i],str[i]+a[i],2);
//用__替换抽出的汉字
str[i][a[i]] = '_';
str[i][a[i]+1] = '_';
cout<<str[i]<<endl;
}
cout<<"The following is answers:"<<endl;
for(i= 0;i < N;++i)
{
//输出选项:A. B. C. D.
cout<<(char)(i + 65)<<". ";
//第i+1个答案为 将第i个答案中某两个字交换位置 的结果
if(i != 0)
{
//交换汉字Tstr[i-1]与Tstr[i]的位置
char str[3];
strcpy(str,Tstr[i-1]);
strcpy(Tstr[i-1],Tstr[i]);
strcpy(Tstr[i],str);
}
//输出第i个备选答案
for(int j = 0;j<N;++j)
{
cout<<Tstr[j]<<" ";
}
cout<<endl;
}
system("pause");
return 0;
}
浙公网安备 33010602011771号