c++改错题

2025-02-27 17:55:27
推荐回答(5个)
回答1:

#include
#include
int select(char *a,int *b)
{
int i=0,j=0;
int n=strlen(a);
while(1)
{
if(a[i]<'0'||a[i]>'9')
i++;
else{
b[j]=0;
while(1)
{
if (a[i]>='0'&&a[i]<='9')
{
b[j]=b[j]*10+(a[i]-'0');
}
i++;
if (a[i]<'0'||a[i]>'9')
{
j++;
break;
}
}
}
if(i==n)break;
}
return j;
}
void main(void)
{
int i,count,b[100];
char a[100];
cout<<"Please input a string:"< cin>>a;
count=select(a,b);
cout<<"count="< for(i=0;i cout< cout<}
楼主看下啊!!!
我有时候不要一直用while
在某些地方用if比用while好
在你的程序上改的!!
首先while((a[i]>='0'&&a[i]<='9')&&a[i])
改为了while(1){if(a[i]<'0'||a[i]>'9')}
还有返回的j当它是字符的时候不能加!

回答2:

#include
#include

int select(char *a,int *b)
{
int i=0,j=0;
int n = strlen(a);
// int sum = 0;
bool flag = false; // b数组中存储数值指示器

while (1)
{
while (a[i] >= '0' && a[i] <= '9' && a[i] ) // 多余
{
/*获取字符串中的数字字符转换为数值,并赋值给b */
b[j] = 10 * b[j] + (a[i] - '0') ;

i++;
if (!flag)
flag = true; /*b中每获取一个数值时,使flag为ture提示j加1*/
}

if (flag)
{
++j;
flag = false; //j加1后使flag为假
}

if ( a[i] == '\0') //遇到null,跳出while(1)循环
break;

++i;
}
return j; //返回数组b获取数值的个数
}

/*主要思路是将内部的两个while循环合成一个while循环。删去下面的代码*/
// if (i==n)
// break;
/*
b[j]=0;
while (a[i]>='0'&&a[i]<='9')
{
b[j]=b[j]*10+(a[i]-'0');//
i++;
}
j++;
}*/

int main(void)
{
int i,count,b[100] = {0};//b数组应该初始化为0
char a[100];

cout<<"Please input a string:";
cin >> a;

count = select(a,b);
cout<<"count="<
for (i=0;i cout<
cout< return 0;
}

根据你的代码修改如下:思路基本上你的那个思路,只是略作了修改。
测试结果:
Please input a string:aksdjf457askjdfj343kj43j43kj4k3j43k4j5l4i
count=10
457 343 43 43 4 3 43 4 5 4

请按任意键继续. . .

回答3:

#
include

void
main(){

ofstream
outf(
"D:\\tem.dat"
,ios::trunc);

outf<<
"Look
out!"
;

outf.close(
);

ifstream
inf(
"D:\\tem.dat");

char
k[20];
inf.getline(k,20);
//inf>>k
因为 此行空格为字符串结束标示!
cout<
inf.close(
);

}

回答4:

#include


void
main(){

ofstream
outf(
"D:\\tem.dat"
,ios::trunc);

outf
<<
"Look
out!";

outf.close();

ifstream
inf("D:\\tem.dat");

char
k[20];
inf>>k;
cout< inf.close(
);

}

回答5:

#
include

void
main(){

ofstream
outf(
"
D:\\tem.dat
"
,ios::trunc);

outf<<
"
Look
out!
"
;

outf.close(
);

ifstream
inf(
"
D:\\tem.dat
");

char
k[20];
inf>>k;
cout<
inf.close(
);

}