(5)巩固一下C语言基础知识,谁动手,谁收获

来源:互联网 发布:台湾自由行 知乎 编辑:程序博客网 时间:2024/05/18 13:07

问题18:
编写一个函数InverseByWord(char*sentence),实现一个英文句子按单词逆序存放的功能,并给出测试程序。(50分)

如:This is aninteresting programme .

逆序后变为:. programme interesting an isThis

问题19:
编程完成数据加密。数据是五位的整数,加密规则为:每位数字都加上6,然后用和除以8的余数代替该数字,再将第一位和第五位交换,第二位和第四位交换。(15分)

 

问题20:
请猜数字,该数字由系统随即产生。要求:用户最多有10次猜测的机会,如果在10次内猜对数字,则程序显示祝贺信息,如果连续10次都没有猜中数字,则游戏自动退出。(25分)

(提示:可能用到以下库函数:

randomize();用系统的时间作为随机种子;包含于stdlib.h库中

random(100):随机产生0-99之间的一个随机数;包含于stdlib.h库中

toupper():将字符c转换为大写英文字母,包含于ctype.h库中)

 

问题18实现代码:

view plainprint?
  1. /* author:宋金时 */  
  2. /* date:2011/11/03 */  
  3.   
  4. #include "Stdio.h"  
  5. #include "Conio.h"  
  6.   
  7. #define N 200  
  8.   
  9. void InverseByWord(char* sentense);  
  10.   
  11. int main(void)  
  12. {  
  13.  /* 此处添加你自己的代码 */  
  14.   char str[N],*str_temp;  
  15.   puts("please input a sentense:");  
  16.   gets(str);  
  17.   InverseByWord(str);  
  18. /*  puts(str); */  
  19. /* printf("%s\n",InverseByWord(str));*/  
  20.   getch();  
  21.   return 0;  
  22. }  
  23.   
  24. void InverseByWord(char* sentense)  
  25. {  
  26.     char* begin_p,*end_p,*str_new;  
  27.     begin_p = sentense;  
  28.     end_p = sentense+strlen(sentense)-1;  
  29.     str_new = (char*)malloc(strlen(sentense)+1);  
  30.     memset(str_new,0,strlen(sentense)+1);  
  31.     while(end_p>begin_p)  
  32.     {  
  33.         while(*end_p!=' '&&end_p>begin_p)  
  34.         {  
  35.            end_p--;  
  36.         }  
  37.         if(*end_p==' ')  
  38.         {  
  39.             *end_p='\0';  
  40.             end_p++;  
  41.             strcat(str_new,end_p);  
  42.             strcat(str_new," ");  
  43.         }  
  44.         else  
  45.         {  
  46.             strcat(str_new,end_p);  
  47.         }  
  48.     }  
  49.     puts(str_new);  
  50. /*    strcpy(sentense,str_new); 
  51.     puts(sentense); */  
  52.     free(str_new);  
  53.     str_new = NULL;  
  54. /*    strcpy(sentense,str_new); */  
  55. /*    puts(sentense); */  
  56. /*    return str_new; */  
  57.   
  58. }  

问题19实现代码:
view plainprint?
  1. /* author宋金时 */  
  2. /* date:2011/11/03 */  
  3.   
  4. #include "Stdio.h"  
  5. #include "Conio.h"  
  6.   
  7. #define N 5  
  8.   
  9. int main(void)  
  10. {  
  11.  /* 此处添加你自己的代码 */  
  12.  int m_num,m_temp,m_i,m_j,arr_bit[5];  
  13.  puts("please input a 5 bits number:");  
  14.  scanf("%d",&m_num);  
  15.  m_temp = m_num;  
  16.  for(m_i=0;m_i<N;m_i++)  
  17.  {  
  18.     arr_bit[m_i] = (m_temp%10 + 6)%8;  
  19.     m_temp/=10;  
  20.  }  
  21.  m_i=0;  
  22.  m_j=N-1;  
  23.  while(m_i<m_j)  
  24.  {  
  25.  /*    m_temp = arr_bit[m_i]; */  
  26.      arr_bit[m_i]^=arr_bit[m_j];  
  27.      arr_bit[m_j]^=arr_bit[m_i];  
  28.      arr_bit[m_i]^=arr_bit[m_j];  
  29.      m_i++;  
  30.      m_j--;  
  31.  }  
  32.  printf("maked digtal is %d\n",m_temp=(arr_bit[0]+\  
  33.  arr_bit[1]*10+arr_bit[2]*100+arr_bit[3]*1000+arr_bit[4]*10000));  
  34.   getch();  
  35.   return 0;  
  36. }  

问题20实现代码:
view plainprint?
  1. /* author:宋金时 */  
  2. /* date:2011/11/03 */  
  3.   
  4. #include "Stdio.h"  
  5. #include "stdlib.h"  
  6. #include "time.h"  
  7. #include "ctype.h"  
  8. #include "Conio.h"  
  9.   
  10. int main(void)  
  11. {  
  12.  /* 此处添加你自己的代码 */  
  13.   int m_randnum,m_count=0,m_input;  
  14.   randomize();  
  15.   m_randnum  = random(100);  
  16.   while(m_count<10)  
  17.   {  
  18.      m_count++;  
  19.      puts("please 0-99 number:");  
  20.      scanf("%d",&m_input);  
  21.      if(m_input==m_randnum)  
  22.      {  
  23.         puts("congratulations you!answer very right!");  
  24.         break;  
  25.      }  
  26.      else  
  27.      {  
  28.         if(m_input>m_randnum)  
  29.         {  
  30.         puts("very be sorry!answer error,so big!");  
  31.         }  
  32.         else  
  33.             puts("very be sorry!answer error,so little!");  
  34.      }  
  35.   }  
  36.   printf("total guess %d once\n",m_count);  
  37.   getch();  
  38.   return 0;  
  39. }