早教吧 育儿知识 作业答案 考试题库 百科 知识分享

一个c++程序超时问题输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个

题目详情
一个c++程序超时问题
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0).你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出. Input输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000.  输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成. Output对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行. Sample Input0051231232050775 Sample Output0 77 12312320问题要求时间是1000ms,我的程序如下,总是超时,求指导#include "stdio.h"#include "stdlib.h"#include "string.h"int cmp (const void *a,const void *b){ return *(int*)a>*(int*)b?1:-1;}int main(){ int i,j,n,flag; char c[1000]; long int number[500],tempsum; while((scanf("%s",c))) {  i=strlen(c),j=0;  for(n=0;j<i;n++)  {   flag=0;   tempsum=0;   for(;c[j]!='5'&&j<i;j++)   {    tempsum=tempsum*10+(c[j]-'0');    flag=1;   }   number[n]=tempsum;   j++;   if(!flag)    n--;  }  qsort(number,n,sizeof(long int),cmp);  for(i=0;i<n;i++)   printf("%ld ",number[i]);  printf("\n"); } return 0;} 
▼优质解答
答案和解析
while((scanf("%s",c))) 这里面要有& scanf("%s",&c)
注意涉及到scanf都有&,其他错误慢慢自己琢磨
如果搞不出来的话,可以告诉我题号我把代码给你给参考