0

我刚写了这个,我找不到问题。我使用代码块并编写此问题

error: expected 'while' before '{' token
=== Build finished: 1 errors, 1 warnings)

但我不能在那里写,因为它不正确。有人能帮助我吗?对不起我的英语。

printf("Put numbers for some reason\n");

int cislo;
int s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;

while(scanf("%d",&cislo)==1){
   if (cislo<0)
      printf ("Cislo %d, je zaporne, takove neberu", cislo);
}

s0=s1=s2=s3=s4=s5=s6=s7=s8=s9=0;


do (cislo/10);
    {
    switch (cislo%10);

    case 0; ++s0;  break;
    case 1; ++s1;  break;
    case 2; ++s2;  break;
    case 3; ++s3;  break;
    case 4; ++s4;  break;
    case 5; ++s5;  break;
    case 6; ++s6;  break;
    case 7; ++s7;  break;
    case 8; ++s8;  break;
    case 9; ++s9;  break;
    }

 while (cislo>0);

 printf("0  %d x \n 1  %d x \n 2  %d x \n 3  %d x \n 4  %d x \n 5  %d x \n 6  %d x \n 7  %d x \n 8  %d x \n 9  %d x \n",s0,s1,s2,s3,s4,s5,s6,s7,s8,s9);

 return 0;
}

在决赛中,它必须打印如下内容:

100
Number: 100 include this numbers :
0 ...  2x
1 ...  1x
2 ...  0x
3 ...  0x
4 ...  0x
5 ...  0x
6 ...  0x
7 ...  0x
8 ...  0x
9 ...  0x
4

4 回答 4

1

声明具有do .. while以下形式:

do statement while (expression)

在您的示例中,您有两个语句:

(cislo/10);

和另一个复合语句{ ... }。这没有任何意义。

于 2012-10-19T18:28:52.283 回答
1

do (cislo/10);应该

do 
{ 
  /* your code */ 
} while (cislo/10);

每个都case X;应该case X:

正如 hexist 所指出的,一个开关是这样写的:

switch (condition) {
  case X:
    /*something*/
    break;
}
于 2012-10-19T18:29:01.677 回答
1
do 
{
cislo /= 10;
switch (cislo%10);

case 0; ++s0;  break;
case 1; ++s1;  break;
case 2; ++s2;  break;
case 3; ++s3;  break;
case 4; ++s4;  break;
case 5; ++s5;  break;
case 6; ++s6;  break;
case 7; ++s7;  break;
case 8; ++s8;  break;
case 9; ++s9;  break;
}

while (cislo>0);

试试这个?

于 2012-10-19T18:33:58.977 回答
0

消除 ”;” 在 do() 之后。

do (cislo/10)
{
switch (cislo%10);
于 2012-10-19T18:30:17.200 回答