输入两个正整数 m 和 k,其中 1
n要初始化成n[100],不要初始化成"a"
你只给他分配2字节长度,后面都越界了
越界了那么这个内存就不是给数组分配的,而是其他变量申请的内存
当其他变量改变的时候,内存里的数据被改了,你还把它当数组里的数据来用
能不出错吗
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char n[17];//若用n[]="a",则等效n[2]="a",下标可能越界,n[17]可防止越界
int k,x=0;
cin>>n>>k;
for(unsigned i=1;i<=strlen(n);i++){//strlen()采用unsigned返回结果,为避免警告,建议使用unsigned
if(n[i-1]=='3')
x++;
}
if(x==k)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: