當前位置:首頁 » 編程語言 » 減少c語言的bug
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

減少c語言的bug

發布時間: 2022-06-24 14:50:49

『壹』 c語言洗牌程序bug求助

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intmain()
{
intt;
//一個數組依次存儲撲克牌號碼—(1-54)、一個整形數組儲存輸入的新順序,再來一個字元串數組儲存新順序下的卡牌號碼
intcard[54];
for(t=1;t<=54;t++)card[t-1]=t;
intrepeat,sequence[54];
intnewcard[54];
inttemp[55];

scanf("%d",&repeat);
inti;
for(i=0;i<54;i++)
//scanf("%d",&sequence[i]);
sequence[i]=i+1;
intj;
for(i=0;i<repeat;i++)
{
for(j=0;j<54;j++)
{
newcard[(sequence[j])-1]=card[j];

printf("%2d,",newcard[j]);//這里老是輸出不對,好像是溢出。求助
printf("%2d,",sequence[j]);
printf("%2d ",j);

}

for(j=0;j<54;j++)
{
temp[j]=newcard[j];
newcard[j]=card[j];
card[j]=temp[j];
}
}

printf(" ");
for(i=0;i<54;i++)
{
if(card[i]<=13)
printf("S%d",card[i]);
elseif(card[i]<=26)
printf("H%d",card[i]-13);
elseif(card[i]<=39)
printf("C%d",card[i]-26);
elseif(card[i]<=52)
printf("D%d",card[i]-39);
else
printf("J%d",card[i]-52);
}

return0;

}

『貳』 C語言 bug

float max()
{
int a[10],b[10],c[10];
int n=0;
float temp;
temp=a[0][0];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]>=temp)
{
temp=a[i][j];
a[n]=i+1;

b[n]=j+1;

c[n]=temp;

n++;
}
}
}
return temp;
}

『叄』 用C語言寫的一個程序有bug跑不了,請幫忙檢查一下,同時希望能給我一些改進的建議

#include<stdio.h>

intmain()
{
intn,m,i,j,k=0,p[500],B=0,G=0;
scanf("%d",&n);
for(m=0;m<2*n;m++)
scanf("%d",&p[m]);

for(i=0;i<2*n;i++)
{
B=B+p[i];
G=0;
for(j=2*n-1;j>=0;j--)
{
G=G+p[j];
if(B!=G)
continue;
k++;
}
}
printf("%d ",k);

return0;
}

問題比較多,我直接給你貼改好後的。大致的問題有這幾個,你對照兩段代碼看一下就明白了

1、scanf("%d",&n); %d後面不用加 回車符號

2、不等於的表達方法錯誤,if(B=!G)應該改為,if(B!=G),你的代碼意思是B被賦值非G的值是否為真

3、在變數j參與的for循環裡面,G的值沒有提前置零。你的邏輯是拿男方的總數去和每一個女方的總數可能值去比較,所以每輪比較前G值應該置零。不然你的G值是一直累加下去的

4、int B=G=0,這種創建變數的方法有問題,變數G你並沒有提前創建,所以會報錯。正確的是像我上面修改的分別創建賦值,或者int G,B=G=0

『肆』 C語言編程幫忙解決bug

迴文數
#include<stdio.h>
#include<stdlib.h>
#defineM50
intinvt(charstr[])
{
inti,N;
char*p;
chars;
intcount=0;
for(i=0;*(str+i)!='';i++)
N=i;
p=str;
for(i=0;i<=N/2;i++)
if(*(p+i)==*(p+N-i))
count++;
if(count==i)
return1;
else
return0;
}
intmain(void)
{
chars[M];
scanf("%s",s);

if(invt(s))
printf("%s是迴文數 ",s);
else
printf("%s不是迴文數 ",s);
system("pause");
return0;
}

『伍』 C語言程序bug分析

你這個程序有死循環,不可能有任何輸出結果,那個scanf函數會一直執行

『陸』 c語言程序bug

#include<stdio.h>
#include<string.h>
#defineMAXSIZE512

intisMatch(charleft,charright)
{
if((left=='('&&right==')')||(left=='['&&right==']')||
(left=='<'&&right=='>')||(left=='{'&&right=='}'))
return1;
else
return0;
}

intmain()
{
inti,n;
charstr[MAXSIZE];

scanf("%d",&n);
while(n--)
{
inttop=-1;
charstack[MAXSIZE];
scanf("%s",str);
for(i=0;i<strlen(str);++i)
{
if(str[i]=='('||str[i]=='['||
str[i]=='<'||str[i]=='{'){
stack[++top]=str[i];
}elseif(str[i]==')'||str[i]==']'||
str[i]=='>'||str[i]=='}'){
if(top>=0&&isMatch(stack[top],str[i])){
--top;
}else{
break;
}
}
}

if(top==-1&&i==strlen(str)){
puts("true");
}else{
puts("false");
}
}

return0;
}

『柒』 關於c語言編程的bug

這時很正常的問題.打代碼沒有bug才不正常.但是編譯時的錯誤還是比較容易避免的,常見的可以通過以下幾種方法解決

  1. 語法錯誤:比如說變數名打錯,少一個分號,括弧之類的錯誤,經過你不斷的打代碼,這樣的錯誤慢慢就會減少了.

  2. 編譯出錯時,一半的方法是將問題從上到下一個一個解決.因為第一個錯誤可能引發後面的很多錯誤.因此你每次只需要留意第一個錯誤.很多情況下,第一個錯誤解決了,後面的錯誤自然迎刃而解.

  3. 編譯出錯時,編譯器通常會提示出錯的行號.尋找錯誤一半從出錯的行號往上找,不需要往下找,看看編譯錯誤的原因是什麼,遇到不懂的單詞可以查查,以後就明白了.因為錯誤就那麼幾個,錯來錯去還是那幾個.

  4. 建議寫程序的時候,不要等全部代碼打完之後再一次性編譯.可以分模塊,分函數寫.寫完一個之後,嘗試著編譯,看看有沒有問題,即使有問題,尋找起來也相對會方便一點.不必大海撈針.


至於運行時的bug,這需要隨著你的代碼量的提高而減少(相對).解決bug的常用方法是debug(調試),具體調試的方法因為不同的開發環境而不同.你可以根據你的開發環境查閱相應的debug文檔.

『捌』 c語言bug求助

遞歸結構體這樣定義
typedef struct Mystruct
{
int A;
struct Mystruct* next;
}Str;

『玖』 c語言bug

dict_array=malloc(1300*sizeof(char*));
dict_array[line_no]=malloc(sizeof(char*));
問題就在於你這兩句吧,後一句把前面所有的都覆蓋了,所以你在1處能單獨列印出來,但是也無法遍歷。