当前位置:首页 » 编程语言 » 减少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处能单独打印出来,但是也无法遍历。