今天在做一道華為面試題目時候,就是因為沒有將變量初始化,而導致我用了一節課的時間調試:)
題目是:找出01字符串中0和1出現的最大次數.
代碼:
#include<iostream>
#include<string>
using namespace std;
void main()

{
char *a="010000010111101101000000000";
int i,temp0=0,temp1=0,max0=0,max1=0;//對變量初始化,如果不初始化,變量值是隨機的
for(i=0;i<strlen(a);i++)
{
switch(a[i])
{
case '0':
{
temp0++;
if(a[i+1]=='1'||i==strlen(a)-1)
{
if(max0<temp0) max0=temp0;
temp0=0;
}
break;
}
case '1':
{
temp1++;
if(a[i+1]=='0'||i==strlen(a)-1)
{
if(max1<temp1) max1=temp1;
temp1=0;
}
break;
}
}
}
cout<<"max0="<<max0<<endl;
cout<<"max1="<<max1<<endl;
}那為什么不對i初始化呢?因為盡管i沒被初始化,它的初始值是隨機的,但在循環參數表里面已經對他進行賦值,所以i的隨機值已經被0覆蓋。


