⑴ 一個c語言小代碼超時怎麼辦
問題出在這一行
sort(a+1,a+n+1,cmp);
在輸入的時候,你僅錄入了n個數據,而排序的時候是從第二個到第n+1個。
應該是
sort(a, a+n, cmp);
⑵ 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語言程序,時間超限,怎麼解決
將scanf輸入換成從文件讀取數據,使用fopen, fread, fwrite之類的函數,不要從終端上直接輸入。或者使用重定向<從文件讀取數據。
如果效率還是不行,再將printf改成輸出到文件中。
⑷ 為什麼這個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語言超時問題
for(i=a;i<=b;i++)
i每次遞增2,因為偶數不可能是。這樣可以少一半的時間。
改動幾點:
{for(j=2;j<=n;j++)
{if(i%j==0) c=1;}
j 可以從3開始,每次遞增2,這樣可以少一半的時間。
結合下面的查表法,可以得到更好的結果。
⑹ C語言代碼顯示運行超時,該如何改進
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,m;
printf("請輸入下界:\n");
scanf("%d",n);
printf("請輸入上界:\n");
scanf("%d",m);
for(int i=n;i<=m&i<104)
{
for(int j=1;j<n/2;j++)
{
if(n/j)
scanf("%d ",n);
}
}
}
⑺ 我想問一下我這個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語言新手問題】這個程序超時怎麼辦
你好,你要優化時間效率。這里可以考慮在計算和的平方之前,對於根本不符合的直接排除。
1.首先,對於數x,它的平方根不可能超過sqrt(x);所以當你計算出兩部分和的時候,先檢查這個條件是否滿足,不滿足則continue下一輪循環
2.一個數x平方的個位數跟x的個位數存在一定關系。
x個位數 x^2個位數
1或9 1
2或8 4
3或7 9
4或6 6
5 5
0 0
因此在計算兩部分和的時候如果1條件滿足,那麼檢測條件2。
根據上面兩個條件,應該可以提高一定的效率。
3.應用多線程,這樣同時可以處理幾個數據,不過你的演算法就要修改一下了。
⑽ C語言運行超時,求大佬解惑
童鞋。。。你不知道遞歸相對於循環來說比較慢的嗎。。。是使用for循環來,如果不行我就沒轍了
其實 if 那一句可以改成n<=1