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

问题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实现代码:

/* author:宋金时 */
/* date:2011/11/03 */

#include "Stdio.h"
#include "Conio.h"

#define N 200

void InverseByWord(char* sentense);

int main(void)
{
 /* 此处添加你自己的代码 */
  char str[N],*str_temp;
  puts("please input a sentense:");
  gets(str);
  InverseByWord(str);
/*  puts(str); */
/* printf("%s\n",InverseByWord(str));*/
  getch();
  return 0;
}

void InverseByWord(char* sentense)
{
    char* begin_p,*end_p,*str_new;
    begin_p = sentense;
    end_p = sentense+strlen(sentense)-1;
    str_new = (char*)malloc(strlen(sentense)+1);
    memset(str_new,0,strlen(sentense)+1);
    while(end_p>begin_p)
    {
        while(*end_p!=' '&&end_p>begin_p)
        {
           end_p--;
        }
        if(*end_p==' ')
        {
            *end_p='\0';
            end_p++;
            strcat(str_new,end_p);
            strcat(str_new," ");
        }
        else
        {
            strcat(str_new,end_p);
        }
    }
    puts(str_new);
/*    strcpy(sentense,str_new);
    puts(sentense); */
    free(str_new);
    str_new = NULL;
/*    strcpy(sentense,str_new); */
/*    puts(sentense); */
/*    return str_new; */

}

问题19实现代码:
/* author宋金时 */
/* date:2011/11/03 */

#include "Stdio.h"
#include "Conio.h"

#define N 5

int main(void)
{
 /* 此处添加你自己的代码 */
 int m_num,m_temp,m_i,m_j,arr_bit[5];
 puts("please input a 5 bits number:");
 scanf("%d",&m_num);
 m_temp = m_num;
 for(m_i=0;m_i<N;m_i++)
 {
    arr_bit[m_i] = (m_temp%10 + 6)%8;
    m_temp/=10;
 }
 m_i=0;
 m_j=N-1;
 while(m_i<m_j)
 {
 /*    m_temp = arr_bit[m_i]; */
     arr_bit[m_i]^=arr_bit[m_j];
     arr_bit[m_j]^=arr_bit[m_i];
     arr_bit[m_i]^=arr_bit[m_j];
     m_i++;
     m_j--;
 }
 printf("maked digtal is %d\n",m_temp=(arr_bit[0]+\
 arr_bit[1]*10+arr_bit[2]*100+arr_bit[3]*1000+arr_bit[4]*10000));
  getch();
  return 0;
}

问题20实现代码:
/* author:宋金时 */
/* date:2011/11/03 */

#include "Stdio.h"
#include "stdlib.h"
#include "time.h"
#include "ctype.h"
#include "Conio.h"

int main(void)
{
 /* 此处添加你自己的代码 */
  int m_randnum,m_count=0,m_input;
  randomize();
  m_randnum  = random(100);
  while(m_count<10)
  {
     m_count++;
     puts("please 0-99 number:");
     scanf("%d",&m_input);
     if(m_input==m_randnum)
     {
        puts("congratulations you!answer very right!");
        break;
     }
     else
     {
        if(m_input>m_randnum)
        {
        puts("very be sorry!answer error,so big!");
        }
        else
            puts("very be sorry!answer error,so little!");
     }
  }
  printf("total guess %d once\n",m_count);
  getch();
  return 0;
}


你可能感兴趣的:(c,Date,加密,Random,input,语言)