当前位置:首页 » 编程语言 » c语言调试进程超时是为什么
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言调试进程超时是为什么

发布时间: 2022-07-08 01:22:25

‘壹’ 我想问一下我这个c语言程序为什么运行超时!需要怎么样修改呢

#include<stdio.h>
#include<stdlib.h>
/*
Name:
Copyright:
Author:
Date:28/01/1421:12
Description:
有n个格子,从左到右放成一排,编号为1-n。
共有m次操作,有3种操作类型:
1.修改一个格子的权值,
2.求连续一段格子权值和,
3.求连续一段格子的最大值。
对于每个2、3操作输出你所求出的结果。
输入格式
第一行2个整数n,m。
接下来一行n个整数表示n个格子的初始权值。
接下来m行,每行3个整数p,x,y,p表示操作类型,p=1时表示修改格子x的权值为y,p=2时表示求区间[x,y]内格子权值和,p=3时表示求区间[x,y]内格子最大的权值。
输出格式
有若干行,行数等于p=2或3的操作总数。
每行1个整数,对应了每个p=2或3操作的结果。
样例输入
43
1234
213
143
314
样例输出
6
3
数据规模与约定
对于20%的数据n<=100,m<=200。
对于50%的数据n<=5000,m<=5000。
对于100%的数据1<=n<=100000,m<=100000,0<=格子权值<=10000。
*/

typedefstructm0
{
intp;
intx;
inty;
}h;

intmain()
{
intn,m,i,*q=NULL,j,sum;
h*mm=NULL;
printf("输入第一组参数:nm
n表示有多少个数据
m表示接下来m行的输入参数pxy。 ");

scanf("%d%d",&n,&m);
q=(int*)malloc(sizeof(int)*n);//hanson--为初始数据分配单元
if(q==NULL){
printf("memoryallocateerror. ");
}
//加入判断
mm=(h*)malloc(sizeof(h)*m);//hanson--为m行的输入数据分配单元
//加入判断
if(mm==NULL){
printf("memoryallocateerror. ");
}

for(i=0;i<n;i++){
printf("输入第%d个数: ",i+1);
scanf("%d",&q[i]);
}

//debug
for(i=0;i<n;i++){
printf("%10d",q[i]);
if((i+1)%5==0){
printf(" ");
}
}
//debugend

printf(" 命令格式:pxy
p:1修改数据,x数据是y
2求xy之间的和
3求xy之间的最大值 ");

printf(" 共有%d条命令 ",m);

for(i=0;i<m;i++){
printf("输入第%d条命令 ",i+1);
scanf("%d%d%d",&(mm[i].p),&(mm[i].x),&(mm[i].y));
}

for(i=0;i<m;i++)
{
sum=0;
switch(mm[i].p)//hanson--命令
{
case1:
q[mm[i].x-1]=mm[i].y;
break;
case2:
//sum清零==在这里清零==而不是上面
sum=0;//hanson
for(j=mm[i].x-1;j<=mm[i].y-1;j++)
sum+=q[j];
printf("%d ",sum);
break;
case3:
sum=q[mm[i].x-1];

for(j=mm[i].x-1;j<=mm[i].y-1;j++)
if(sum<q[j])
sum=q[j];
printf("%d ",sum);
break;
}
}

getchar();
getchar();

return0;
}

1、有几个小问题,帮你修改了,你看下。有注释

2、哪里超时?==调试内容是什么?

‘贰’ c语言问题,运行时怎么显示超时了

按照操作系统中的说法,它给每一个进程都设定了时间的上限,超过一定的时间后就会报错,所以,可能是你写的程序里面算法使用的循环次数太多,或者是你的代码里面出现一些因为打字错误而导致的死循环(我以前经常犯这种错误)。总之,仔细检查你的代码,兴许可以发现错哪儿了。
#include<stdio.h>
int main()
{ int highapple[10];
int hightt;
int i,t=0;
for(i=0;i<10;i++)
{
scanf("%d%c",&highapple[i]);
}
scanf("%d",&hightt);
for (i=0;i<10;i++)
{
if(highapple[i]<=hightt+30)
{
t++;
}
}
printf("%d",t);
return 0;
if(highapple[i]<100&&highapple[i]>200&&hightt>120&&hightt<100)
{
return 0;
}
}

‘叁’ 我这C语言为什么超时 啊 要怎么改

求余是一个挺耗时的操作,我不知道你写的是什么题目,建议少用求余,当数字大,循环多的时候,求余挺耗时的,你可以考虑换一下思路

‘肆’ C语言什么情况下会出现超时

如果题目要求m==0时结束循环
你的
while(scanf("%d %d",&m,&n)&& m!=0)
可能不行
应该先读一个m
判断后再读n

你这样的话假设数据最后就只有一个m
你的程序就一直等着读完n后才判断m

‘伍’ c语言运行超时,求优化

int com_yi_func(int x)
{
int y;
if(x<1)y=x;
else if(x<10)y=2*x-1;
else y=3*x-11;
return y;
}
说明:
1、x是由参数引入,不用再输入数字了;
2、返回值是y,不用打印y的值。

‘陆’ 为什么这个C语言程序会运行超时,怎么改进

代码段中的

while(m%b!=0)
b++;
if(m==b)
printf("%5d",m),c++;

改为

for(;b*b<=m;++b)

if(m%b==0)

break;

if(b*b>m)

{printf("%5d",m),c++;}

‘柒’ c语言程序超时问题

把scanf("%d%d",&a,&b); 改为 scanf("%d %d",&a,&b);

试试~