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

c语言程序运行为什么时间超限

发布时间: 2022-07-26 10:56:05

❶ 我想问一下我这个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语言输出超限什么意思

C语言输出超过内存字节所规定的长度。C语言中short与long两个限定符的引入可以为我们提供满足实际需要的不同长度的整形数。int通常代表特定机器中证书的自然长度。short类型通常为16位,long类型通常为32位,int类型可以为16位或32位。

各编译器可以根据硬件特性自主选择合适的类型长度,但要遵循下列限制:short与int类型至少为16位,long类型至少为32位,并且short类型不得长于int类型,而int类型不得长于long类型。

(2)c语言程序运行为什么时间超限扩展阅读

C语言常见类型占用字节数

常见的有char、int、long、short、float、double及指针等。

(1)字符类型

这里单只char,char变量在内存中存储的是字符对应的ASCII码值。所以长度也是固定的,为1个字节。

(2)整数类型

查了资料发现对各个类型的整数占用字节数是有一个规定的,虽然16位32位或者64位的机子各种类型所占用的长度并不一样。规则如下:

1、short 至少占用2个字节。

2、int 建议为一个机器字长。32位环境下机器字长为4字节,64位环境下机器字长为8字节。

3、short 的长度不能大于 int,long 的长度不能小于 int。

4、short并不一定短,long并不一定短,有可能都和int一样长。

(3)浮点数(小数)

C中浮点数有两种,float和double,不像整数,小数的长度始终是固定的,float占用4个字节,double占用8个字节。

(4)指针

C中指针即为地址,所以编辑器的寻址空间则是指针的地址范围。所以指针变量在32位机器的寻址空间为2^32,要将所有地址都表示出来则需要为4个字节长度,所以要占用4个字节长度。同理64位的编译器则需要8个字节长度。

❸ C语言OJ时间超限是什么原因造成

不好意思,不想看代码.
我的想法是, 输入一个数,控制输入的行数比如while(a--){......}
然后嵌套循环, 每行输入一个数,控制输入的单词个数,以空格结束while(b--){......}
然后输入每个单词,一个一个字符读入,while((c=getchar())!=' '){.......}
第三个循环里判断每个字符,比如第一个字符是'_'还是字母,第二第三个字符.....

当然,实现起来也麻烦,但值得一试,不是吗?至少可以不用数组了吧,你觉得呢

❹ C语言程序运行,为什么时间超限

这样改改试试
#include <stdio.h>
void main( )
{
char str[1000];
int i;
gets(str);
for(i = 0; str[i]; i++)
{
if(str[i] >= 'A' && str[i] <= 'Z')
str[i] += 32;
}
puts(str);
}

❺ 请问C语言中“占用CPU时间超限”的错误是单纯因为死循环引起的吗

还有的是因为转换类型而造成的```比如23本来是整形的``但是如果你转换成双精度实型``那有效数字达到16位数``在内存中是64位存储```如果一个C程序有很多这样的转换``那就会造成CPU工作负荷过大时间超限而无法进行```

❻ 为什么这个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语言超过时间限制

从你的程序可以看出,是在求"从键盘输入一个大于2的整数k,输出不大于k的最大的素数。"你的程序尽管也可找出来,但选择的算法效率太低,你是从小到大逐一判断,然后取其最大的,这种方法需先求出不大于k的所有的素数,效率当然低了。正解是从大到小逐一判断,遇到的第一个素数即为不大于k的最大素数。程序可如下
#include <stdio.h>
#include <math.h>
void main( ) {
int i, k, n, f, s;
scanf("%d", k);
for(n = 0, f = k; !n && (f > 1); f--)
{
for(n = 1, i = 2, s = sqrt(f); n && (i <= s); i++)
if(f % i == 0) n = 0;
}
printf("The max prime number is %d\n", f);
}