早教吧作业答案频道 -->其他-->
一个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;}
输入一行数字,如果我们把这行数字中的‘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都有&,其他错误慢慢自己琢磨
如果搞不出来的话,可以告诉我题号我把代码给你给参考
注意涉及到scanf都有&,其他错误慢慢自己琢磨
如果搞不出来的话,可以告诉我题号我把代码给你给参考
看了一个c++程序超时问题输入一行...的网友还看了以下:
1、一个数的20%是100,这个数5分之3是多少?2、一个数的8分之5比20少41、一个数的20% 2020-05-16 …
1.1囗2囗3囗4囗5囗6囗7囗8囗9=10(填上加号或减号)2.能否从4个3、3个5、2个7中选 2020-05-20 …
一个两位数,它的十位是最大的一位数.如果这个数是2的倍数,这个数可能是;如果这个数含有因数5,这个 2020-05-22 …
有依次排列的3个数-5,7,有依次排列的三个数-5,7,11,对任相邻的两个数,都用右边的数减去左 2020-06-02 …
一个圆形转盘上有三个数5,6,7,现在要给这个转盘上添加一个数一个圆形转盘上有三个数5、6、7,现 2020-06-22 …
数的估算有四个连续的正整数,它们都小于2005,第一个数(这四个数中最小的数)是5的倍数;第二个数 2020-06-27 …
1,2,3,4,5顺次排在一个圆上,先将相邻两数之差(大数减小数)写在两个数之间,然后擦去原来的5 2020-07-05 …
如图,把13、12、15、25、20这5个数依次排列.它们每相邻的两个数相乘得4个数,这4个数每相 2020-07-10 …
1.8减去3/5与2/5的积,再除以3/5,商是多少?2.3与2/5的差乘2/3的倒数,积是多少/ 2020-07-19 …
1、若5个连续奇数的和为65,求这5个数.2、若4个连续奇数的和为64,求这4个数.3、若5个连续 2020-08-02 …