首页 > 用户发贴区 > 编程问题提问区 > c语言难题,求大虾解答!!!!!
2008
10-15

c语言难题,求大虾解答!!!!!

【问题描述】输入一个以“@”结束的字符串,从左至右翻译。若下一个字符是数字n(0<n≤9),表示后一个字符重复n+1次,不论后一个字符是否为数字;若下一个字符非数字,则表示自己。翻译后,以3个字符为一组输出,组与组之间用空格分开。
例如“A2B5E34FG0ZYWPQ59R@”可翻译成“ABB BEE EEE E44 44F GZY WPQ 999 999 R@”。
【输入文件】输入文件program3.in,为需要输入的字符串(串长≤255)
【输出文件】输出文件program3.out,为翻译后的字符串。
【样例输入】
A2B5E34FG0ZYWPQ59R@
【样例输出】
ABB BEE EEE E44 44F GZY WPQ 999 999 R@


c语言难题,求大虾解答!!!!!》有 3 条评论

  1. s9y9r9 说:

    好的!待我研究研究再给你!

     

  2. Perfect 说:

    我抽时间写了一个

    你看看行不行

  3. Perfect 说:

    #include<stdio.h>
    const char * in_File = “r.txt”;
    const char * out_File =”w.txt”;
    int main(){
     char str[255];
     char str1[500];
     char str2[500];
     char temp;
     int i = 0,j = 0;
     FILE *inFile = fopen(in_File,”r”);
     FILE *outFile = fopen(out_File,”w”);
     //把文件中的字符读到str字符数组中
     while(true){
      temp = fgetc(inFile);
      if(temp!=EOF&&temp!=’@’)
       str[i++] = temp;
      else
       break;    
     }
     (temp!=’@')?(str[i] = ‘\0′):(str[i++]=’@',str[i]=’\0′);
     //对从文件中读取的字符进行第一步操作
     i = 0;
     while(str[i]!=’\0′){
      if(str[i]>’0′&&str[i]<=’9′){
       for(int k=str[i]-’0′ ;k>0 ;k– ){
        str1[j++] = str[i+1];
       }
       i++;
       str1[j++] = str[i++];
      }
      else{
       if(str[i]!=’0′)
        str1[j++] = str[i++];
       else
        i++;
      }
     }
     str1[j]=’\0′;
     //第二步  加上空格
     i = j = 0;
     str2[j++]=str1[i++];
     while(str1[i]!=’\0′){
      if(i%3==0)
       str2[j++]=’ ‘;
      str2[j++]=str1[i++];
     }
     str2[j]=’\0′;
     fputs(str2,outFile);
     fclose(inFile);
     fclose(outFile);
     return 0;
    }

留下一个回复