华为上机笔试题

来源:互联网 发布:排序算法 比较 编辑:程序博客网 时间:2024/06/06 06:57

摘要:构建一个dos命令行界面的MP3界面,可以输入u,d,l,r四种命令,代表上下左右翻滚,并且当前选择的歌曲由一个[]标记.当输入混合指令如uullr时,按顺序计算最后到达的页面.

基本思路:本题没有什么算法可言,主要是注意细节上的问题,比如界面翻到了第几页,剩下多少首歌,什么时候应该从底翻到顶等等.代码比较杂乱不清,是很久以前的东西了,有时间再修改吧、

// test_kong.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"#include "string.h"int _tmain(int argc, _TCHAR* argv[]){    int n=0,i;    int k = 0;    int m =0;    int t = 1;    int r = 0;    char s[10]={0};     printf("please input the number of songs n =:");         scanf("%d",&n);         for(int i =1;i<=4;i++)         {            if(i==1)             printf("[ ");             if(i==2)             printf("] ");             printf("%d",i);         }         printf("\n");    while(1)    {        printf("please input the command:");        scanf("%s",s);         if (s[0]=='e')        {            printf("MP3 is exited");            break;        }         if(n<=0)         {             printf("there is no song\n");         }         else//n>0         {             if(s[0]!='u'&&s[0]!='d'&&s[0]!='l'&&s[0]!='r')             {                 printf("the command is wrong\n");                 break;             }             if (n<=4)             {                 for ( i =1;i<=n;i++)                 {                     if(i==1)                         printf("[ ");                     if(i==2)                         printf("] ");                  printf("%d  ",i);                 }                 printf("up or down is unavaiable");             }            else//n>=4             {                 m =(n%4!=0?(n/4)+1:(n/4));                 k = n % 4;                     for( i =0;i<=strlen(s)-1;i++)             {                 if (s[i]=='d')                 {                     r=0;                     if(t<m)                         t+=1;                     else                        t = 1;                 }                 else if (s[i]=='u')                 {                     r=0;                     if(t>1)                         t-=1;                     else                         t +=m-1;                 }// u            }// compute up or down         }//n>=4                for( i =0;i<=strlen(s)-1;i++)             {             if (s[i]=='r')             {                 if (t==m&&r>=k-1)//r代表当前光标,从0开始算起                 {                     r = 0;                     t = 1;                 }                 else if(r>=3)                 {                     t+=1;                     r -=3;                 }                 else                     r+=1;             }             if (s[i]=='l')             {                 if (t==1&&r<=0)                 {                     t = m;                     r = 0;                 }                 else if (r<=0)                 {                     t = t-1;                     r+=3;                 }                 else                     r-=1;             }//command : l        }//compute l r             // output             if(t==m)             {                 for(int i =1+(m-1)*4;i<=n;i++)                 {                           if(i==r+1+(m-1)*4)                      {                         printf("[ ");                         printf("%d ",i);                         printf("] ");                      }                       else printf("%d ",i);                 }                 printf("\n");             }//t==m             else             {                 for(int i = 1+(t-1)*4;i<1+t*4;i++)                 {                      if(i==r+1+(t-1)*4)                      {                         printf("[ ");                         printf("%d ",i);                         printf("] ");                      }                       else printf("%d ",i);                 }                 printf("\n");             }//t!=m         }// n>0    }//while    return 0;}

这里写图片描述

0 0
原创粉丝点击