【问题描述】输入一个以“@”结束的字符串,从左至右翻译。若下一个字符是数字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@
>> 本文固定链接: http://www.vcgood.com/archives/2832
好的!待我研究研究再给你!
我抽时间写了一个
你看看行不行
#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;
}