『壹』 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)!='