‘壹’ 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)!='