• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
我就是停不下来
业精于勤荒于嬉,行成于思毁于随
博客园    首页    新随笔    联系   管理    订阅  订阅

在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;
}

posted @ 2008-10-15 22:15  yijiangchunxue  阅读(471)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3