qq_37242775 2017-01-03 12:17 采纳率: 0%
浏览 887
已结题

求北大ACM3428题题解!!!!!!!!!!!!

#include

#include

#include

#include

using namespace std;

char format[50050], // format string

argument[1001][50050];

bool isDigit(char c)

{

return '0'<=c && c<='9';

}

bool judgeInt( char args[])

{

if(args[0]=='\0' || args[0]=='\n' )

return false;

for( int i=0;args[i] && args[i]!='\n' ;i++)

if( isDigit(args[i])==false) return false;

return true;

}

int calPara( char format[] )

{

int k = 0;

for( int i=0; format[i] && format[i]!='\n' ;i++){

if( format[i]=='%' ){

i++;

if( format[i]=='d' && judgeInt(argument[k])) k++;

else if( format[i]=='s' ) k++;

else if( format[i]=='%' ) continue;

else return -1;

}

}

return k;

}

void printInt(char args[])

{

int idx = 0;

while( args[idx]=='0' ) idx++;

if( args[idx]=='\n' || args[idx]=='\0' ){

putchar('0');

return ;

}

while( args[idx] && args[idx]!='\n' ) putchar(args[idx++]);

}

void printStr(char args[])

{

for( int i=0;args[i] && args[i]!='\n' ;i++)

putchar( args[i] );

}

void output(char format[],char args[][50050])

{

int k = 0;

for( int i=0; format[i] && format[i]!='\n' ;i++){

if( format[i]=='%' ){

i++;

if( format[i]=='d' ) printInt(argument[k++]);

else if( format[i]=='s' ) printStr(argument[k++]);

else if( format[i]=='%' ) putchar('%');

}

else putchar( format[i] );

}

}

int main(int argc, const char *argv[])

{

gets(format);

int nPara = 0;  
while(gets(argument[nPara]))  nPara++;  

if( calPara(format) != nPara )  printf("%s","ERROR");  
else    output(format,argument);      

return 0;  

}

要怎么输入才有输出。求

如果可以给出北大ACM
1076
1246
1372
1626
2016
2884
3289
3424
3428
3571
3575
3582
3583
3584
任意一题的题解就给悬赏!!谢谢各位大神。跪求!

  • 写回答

2条回答

  • threenewbee 2017-01-03 14:30
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料