您的位置:首页 > 其它

LR中对学习中遇到的问题记录

2016-11-04 09:05 197 查看
1. 求100~999以内,这样一个三位数,该三位数等于其每位数字的阶乘之和。即:abc= a! + b! + c! 

int fun_Factorial() {
    int i, hundreds, tens, units;
    long product;
    for ( i = 100; i < 1000; i++) {
        hundreds = i / 100;
        tens = (i - hundreds * 100) / 10;
        units = (i - hundreds * 100 - tens * 10);
        product = factorial(hundreds) + factorial(tens) + factorial(units);
        if (product == i)
        {
            lr_output_message("%d = %d!+%d!+%d!",i,hundreds,tens,units);
            break;
        }
    }

    return i;
}

long factorial(int n){
    if (n == 0) {
        return 1;
    } else {
        return factorial(n - 1) * n;
    }
}

/***
自定义一个函数,实现将字符串反序并在主函数中做输出;
*/

char * fun_Reverse(char * src){
    int len = strlen(src);
    char * dest = (char *)malloc(len * sizeof(char));
    char * start = dest;

    strcpy(dest, src);
    src = src + len - 1;
    while (*dest !='\0'){
        *dest++ = *src--;
    }

    return start;
}

/***
删除字符串中的所有空格.
**/
char * fun_delspace(char * src){
    int len = strlen(src);
    char * dest = (char *)malloc(len * sizeof(char));
    char * start = dest;

    while (*src!= '\0')
    {
        if (*src == ' '){   //*src == 0x20
            src++;
            continue;
        }
        else{
            *dest++ = *src++;
        }

    }
    *dest = '\0';
    return start;

}

/***
将字符串中所有下标为奇数位置上的字母转换成大写字母(若该位置上不是字母,则不转换)
**/

char * fun_upchar(char * src){
    int len = strlen(src), i;
    char * dest = (char *)malloc(len * sizeof(char)), * start;
    strcpy(dest, src);
    start = dest;

    do {
        if ((*dest >= 'a' && *dest <= 'z') && i % 2 == 1) {
            *dest = *dest - 32;
        }
        i++;
    } while (*dest++);

    return start;
}

/***
重写srtrchr函数,实现查找字符串中指定字符最后一次出现时,所有的字符输出,将其中指定字符串的小写字母变成对应的大写字母并输出
****/

char *fun_strrchr(char *str,char a){

    int len=strlen(str);
    int t_len;
    char * tmp =(char *)malloc(len*sizeof(char));
    str=str+len-1;

    while(len--){

        if (*str==a) {

            break;
        }
        str--;  
    }

   strcpy(tmp, str);

    *tmp = *tmp - 32;

  return tmp;
}

/***
当我们通过关联,会得到如下的字符串“tid=231&fid=322”,其中tid的值有可能是三位数,也有可能是2位数,不能确定,请编写一个函数,截取出“fid=322”的值
****/

char *fun_getnum(char *str,char a){

    int i,len;
    len = strlen(str);
    str=str+len-1;

   while(len--){

        if (*str==a) {

            break;
        }
        str--;  
    }

  return str+1;
}

----------------

char *str="tid=231&fid=322";
char *dest;
dest=(char *)calloc(20,sizeof(char));

// dest=(char *)fun_getFid(str,dest); 
fun_getFid(str,dest);
fun_getFid2(str,dest);
dest=(char *)fun_getFid3(str,dest);
lr_output_message("dest = %s",dest);
free(dest);
return 0;

}

char * fun_getFid(char *source,char *dest){
while(*source++!='&'){
dest=source+1;
}

// dest=source+i+1;

// lr_output_message(dest);
return dest;

}

char * fun_getFid2(char *source,char *dest){
while(*source++!='&'){
}
while(*source!='\0'){
*dest++=*source++;
}

// dest=source+i+1;

// lr_output_message(dest);
return dest;

}

/**

对字符串“jieofAoo)))eEe**7dfUe^^fds^%dfs%”进行处理,统计出非法字符的个数(字母,数字以外的字符都为非法字符)。

**/

Action()

{

    char * str ="jieofAoo)))eEe**7dfUe^^fds^%dfs%";

    int cont;

    int len;

    len = strlen(str);

    lr_output_message("字符串个数为:%d",len);

    while (*str != '\0') {

        if(*str<=57&&*str>=48){

             len--;

            }else if(*str<=90&&*str>=65){

                len--;

            }else if(*str<=122&&*str>=97){

                len--;

            }

        str++;

    }

    lr_output_message("字符串的非法字符的个数为:%d",len);

    return 0;

}

/**

 * 

 * 通过关联,我们获取到了一个字符串"192,000,123",现在要求去掉字符串中的逗号

 * ,并替换成两个%%,即:192%%000%%123请编写一个函数来实现它

 *  */

Action()

{

    char * str ="192,000,123";

    int len,i;

    char *desc;

    len = strlen(str);

    desc=(char *)malloc(2*len*sizeof(char *));

     fun_No2(str,desc);

    lr_output_message("转换后的字符串为:%s",desc);

    free(desc);

    return 0;

}

char *fun_No2(char *str,char *desc){

    while(*str!='\0'){

        if(*str == ','){

            *desc++='%';

            *desc++='%';

            str++;

        }

        *desc++=*str++;

    }

    *desc='\0';

    return desc;

}

/**

 * 

 * 编写一个函数,查到1至10000内,能被7或者11整除,

 * 同时不能被7和11同时整除的数,并放到数组中打印出来

 *  */

Action()

{

   fun_No3();

return 0;

}

fun_No3(){

    int arry[1000];

    int i,j,n;

    for (i=0;i<1000;i++) {

        if( (i%7==0 || i%11==0 ) && (!( i%7==0 && i%11==0 ))){

            arry
=i;

            n++;

        }

    }

    for(j=0;j<n;j++){

        lr_output_message("%d",arry[j]);

    }

}

/**

 * 

 * 定义一个函数,实现对字符串做如下操作:当字符为字母时,

 * 对应的ASCII值加5,当字符为数字时,原样输出

 * ,当有其它字符出现时,结束操作,返回已处理的字符串(需要用指针的方式来实现)

 *  */

Action()

{

     char *str = "aee$8873#ee";

     char *desc;

     int len=strlen(str);

    desc=(char *)malloc(len*sizeof(char *));

     fun_No4(str,desc);

    lr_output_message("处理后的字符串为:%s",desc);

    free(desc);

return 0;

}

char *fun_No4(char *str,char *desc){

    while (*str != '\0') {

        if((*str<=90&&*str>=65)||*str<=122&&*str>=97){

            *desc=*str+5;

            desc++;

            str++;

        }else if(*str<=57&&*str>=48){

            *desc=*str;

            desc++;

            str++;

        }else 

        {

         *desc='\0';

         break;

        }

    }

    return desc;

}

/**

 * 

 *通过对数据库的查询,我们得知,数据库对用户所在的省市县存成了一个字段,

 *规则如下:以大写字母来区分启始字母。如HebeiShijiazhuangXinghua

 *表示 河北省石家庄市新华区,又如ZhejiangHanzhouXihu 表示

 *浙江省杭州市西湖区,现脚本中只需要获取到市一级的行政单位,如Shijiazhuang\Hanzhou

 *等,请编写一个函数来实现

 *  */

Action()

{

     char *str = "HebeiShijiazhuangXinghua";

     char *desc;

     int len=strlen(str);

    desc=(char *)malloc(len*sizeof(char *));

     fun_No5(str,desc);

    lr_output_message("处理后的字符串为:%s",desc);

    free(desc);

return 0;

}

char *fun_No5(char *str,char *desc){

     int n;

    while (*str != '\0') {

        if((*str<=90&&*str>=65)){

            n++;

              if(n==2){

                *desc++=*str++;

                   while (*str>90){

                       *desc++=*str++;

                   }

              }

        }

            str++;

    }

    return desc;

}

/**

 * 

在一个订单脚本的处理过程中,我们得到了一串如下的字符串"GZPI655768", 

 *其中"GZPI"代表了产品的缩写,后面的数值是产品编号。

 *现在脚本需要提交一个订单验证号,以防重复提交订单,

* 此验证号的规则是:

* 产品编号+当前日期(请利用lr_save_datetime()函数获取时间,

 *使用方法请在F1中查看使用方法)证号的生成。

 *(不一定需要自定义函数,能拼接出来即可)

 * 注:日期的格式如下:20151105070656(年月日时分秒) * * *

 *  */

Action()

{

    char *str = "GZPI655768";

    char *newstr = (char *)malloc(strlen(str)*sizeof(char)+1);

    char *new_date_str=(char *)malloc(strlen(str)*sizeof(char)+10);

    fun_No6(str,newstr);

    lr_output_message("产品编号为:%s",newstr);

    lr_save_datetime("%Y%m%d%H%M%S",DATE_NOW , "newdate");

    strcpy(new_date_str,newstr);

    strcat(new_date_str,lr_eval_string("{newdate}"));

    lr_output_message("订单验证号为:%s",new_date_str);

    free(newstr);

    free(new_date_str);

    return 0;

}

fun_No6(char *str1,char *newstr1) {

    int i,len;

    len = strlen(str1);

    for (i=0;i<len;i++) {

        if (*str1>='A'&&*str1<='Z') {

            str1++;    

        }else{

            *newstr1++=*str1++;

        }

    }

    *newstr1 = '\0';

}

{
//4. 重写strrchr函数,实现查找字符串中指定字符最后一次出现时,所有的字符输出
//,将其中指定字符串的小写字母变成
// 对应的大写字母并输出。如字符串“testroad”,指定字符串为't',则输出"Troad";
char *str="testroad";
char *dest;
dest=(char *)calloc(10,sizeof(char));
fun_subStr(str,'t',dest);
lr_output_message(dest);
free(dest);
return 0;

}

char * fun_subStr(char *str,char c,char *dest){
int len=strlen(str);
char *p;
int i=0;
p=str+len-1;  //是指针p指向源字符串最后一个字符
while(*p--!=c){
i++;
}
*dest=c-32; //小写字母转换为大写字符
strcat(dest,str+len-i); //将其他字符串追加到目的字符串中

// lr_output_message(dest);
return dest;

}

{
//定义一个函数,对字符串“zhEshIgekenDiedeTimu”按从小到大的顺序排列,并截取前5位数;
char str[]="zhEshIgekenDiedeTimu";
char dest[50];
int len=strlen(str);
sortStr(str,dest,len);
lr_output_message(dest);
return 0;

}

//冒泡排序

//思想:通过两两交换,像水中的泡泡一样,小的先冒出来,大的后冒出来。

char *sortStr(char str[],char dest[],int n){
int i,j,k;
char temp;
for(i=0;i<n-2;i++){
for(j=i;j<n-1;j++){
if(str[i]>str[j]){
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
}
strncat(dest,str,5);
return dest;

}

Action3()

{
//3. 试编一函数:将字符串中所有下标为奇数位置上的字母转换成大写字母(若该位置上不是字母,则不转换);
char *str="dsdf254324sdfd";
char *dest;
dest=(char *)calloc(30,sizeof(char));
fun_newStr2(str,dest);
lr_output_message(dest);
free(dest);
return 0;

}

char * fun_newStr2(char *str,char *dest){
int len=strlen(str);
int i;
char *p=dest;

// lr_output_message("len = %d",len);
for(i=0;i<len;i++){
if(i%2==0){

  *dest++=*str++;  //偶数位置上的字符直接复制到目的字符串中
}else{
if(*str>='a'&&*str<='z'){

  *dest++=*str-32;

  str++;

  }else{

  *dest++=*str++;
}
}

    }
return dest;

}

-----------------

Action2()

{
//试编一函数:删除字符串中的所有空格;
char *str="   how are you!";
char *dest;
dest=(char *)calloc(30,sizeof(char));
//dest=(char *)fun_newStr(str,dest);
fun_newStr(str,dest);
lr_output_message(dest);
free(dest);
return 0;

}

char * fun_newStr(char *str,char *dest){
char *p=dest;
while(*str!='\0'){
if(*str==' '){
str++;
}else{
*p++=*str++;
}
}
return dest;

}

Action()

{

//1、自定义一个函数,实现将字符串反序并在主函数中做输出;

    char *source="abcdefg";

    char *dest;
dest=(char *)calloc(20,sizeof(char));//申请20个存储单位
fun_reverseStr(source,dest);
lr_output_message(dest);
free(dest);
return 0;

}

char * fun_reverseStr(char *source,char *dest){
int len=strlen(source);//abcdefg

char *p=source+len-1;
char *p2=dest;
while(len--){
*dest++=*p--; 

// dest+;

// p--;
}
return p2;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: