刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

阅读以下说明和C代码,填写代码中的空(1)~(6),将解答写入答题纸的对应栏内。

【说明】

下面的C代码在输入的100个英文单词中找出最小单词和最大单词。约定每个单词是仅由英文字母构成的字符串,且都不超过20个字符。单词的大小按照字典序定义。例如,单词“entry”大于“enter”、“art”小于“ article”、“an”等于“An”。

 

【C代码】

#include <stdio.h>

#define NUMBER 100

int isValid(const char *s1);                  //若字符串s1仅包含英文字母则返回1,否则返回0

char toLower(char ch);                       //将大写字母转换为小写字母

int usr_strcmp(char *s1, char *s2);    //比较字符串s1和s2,相等时返回0,

                                                            //s1大则返回正整数,s1小则返回负整数

void usr_strcpy(char *s1,const char *s2);     //字符串s2拷贝给s1

 

int main()

{       char word[32];

        char maxWord[32]="", minWord[32] ="";

        int numWord=0;

        while(num Word<NUMBER) {

             scanf("%s",    (1)    );                                 / /输入一个单词存入word

             if(is Valid(word))     {

                   if (0==num Word) {usr_strcpy(min Word,word);usr_strcpy(max Word,word);}

                   num Word++;

                   if(         (2)       >0)                              / /调用usr_strcmp比较单词

                              usr_strcpy(max Word, word);      / /用max Word记下最大单词

                   else

                              if(       (3)      <0)                     / /调用usr_strcmp比较单词

                                    usr_strcpy(min Word,word); / /用min Word记下最小单词

            }

      }

      printf("max Word=%s                min Word=%s\n",max Word,min Word);

      return 0;

}

int is Valid(const char *s)

{

     for(; *s ; s++)

         if(!(*s>='a' && *s<='z') && !(*s>='A' && *s<='Z'))

             return 0;

     return 1;

 }

 

char toLower(char ch)

{     //若ch为大写字母则返回其小写形式,否则直接返回原字符

      if(ch>='A' && ch<='Z')

                 ch=         (4)         +'a';

      return ch;

}

 

int usr_strcmp(char *s1,char *s2)

{    //按字典序比较两个英文单词,若s1表示的单词大,则返回正整数,

     //若s1表示的单词小,则返回负整数;否则返回0

 

     for(;    (5)    ;) {

              if(toLower(*s1)==toLower(*s2))    {s1++,s2++;}

              else

                    break;

      }

     return(toLower(*s1) - toLower(*s2));

}

 

void usr_strcpy(char *s1,const char *s2)

{    //将s2表示的字符串复制给s1

       for(;       (6)       ;)

            *s1++= *s2++;

       *s1='\0';

}

使用微信搜索喵呜刷题,轻松应对考试!

答案:

(1)word

(2)usr_strcmp(word, maxWord)

(3)usr_strcmp(word, minWord)

(4)ch-‘A’

(5)*s1!=’\0’&&*s2!=’\0’或*s1||*s2等价表示

(6)*s2!=’\0’或*s2等价表示

解析:

(1)scanf函数需要将输入的数据赋值给相应的变量,此处需要将输入的数据赋值给word变量,所以填写的应该是变量名word。

(2)调用usr_strcmp函数比较单词时,需要比较的是当前输入的单词word与最大单词maxWord的大小关系,所以此处应填写usr_strcmp(word, maxWord)。

(3)同理,调用usr_strcmp函数比较单词时,需要比较的是当前输入的单词word与最小单词minWord的大小关系,所以此处应填写usr_strcmp(word, minWord)。

(4)toLower函数的作用是将大写字母转换为小写字母,此处需要根据ASCII码表,将大写字母的ASCII码值减去对应的小写字母的ASCII码值即可得到相应的小写字母的ASCII码值,因此填写ch-‘A’。

(5)usr_strcmp函数需要逐个字符比较两个字符串的大小,因此需要保证两个字符串都没有结束符’\0’,即此处应填写*s1!=‘\0’ && *s2!=‘\0’ 或 *s1||*s2 等价表示均可。

(6)usr_strcpy函数需要将字符串s2复制到s1中,因此需要保证s2未结束,即此处应填写*s2!=‘\0’ 或 *s2 等价表示均可。

创作类型:
原创

本文链接:阅读以下说明和C代码,填写代码中的空(1)~(6),将解答写入答题纸的对应栏内。【说明】下面的C代码

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share