为什么我的代码忽略了一会儿?

时间:2014-09-15 19:03:48

标签: c while-loop

所以这里是代码,它忽略了while而我不知道为什么,只要你输入第一个printf的值就应该以while开头

#include <stdio.h>
     int main()
     {
        str WhoOwes,Fabri,Alen,Amilcar,Maxi,Lolo;
        int RandomInt=0,Deudores;

        printf("How many people owes?:");
        scanf("&d",&Deudores);
        while(RandomInt <= Deudores);
         {
         printf("who owes?:");
         scanf("&c",&WhoOwes);
         if(scanf("%c",&WhoOwes)==Fabri)
            {
                Fabri= Fabri+1;
                printf("Fabri debe $",Fabri*4);
            }
         }
        return 0;
     }

感谢1 H

1 个答案:

答案 0 :(得分:3)

变化:

while(RandomInt <= Deudores);

要(删除分号):

while(RandomInt <= Deudores)

此外,您在scanf中使用的分隔符应为%d而不是&d

此外,str是什么类型的?

您正在使用scanf分隔符%dint存储str类型,我认为这种类型是某种struct 。如果是,那就不是这样做的了。您必须分别将信息存储到struct的每个部分。或者将类型str更改为int。这可能是您的while循环没有发生的原因,因为您试图将intstr进行比较:

while(RandomInt <= Deudores);  // Deudores is a str

然后,您通过两次调用scanf()来阅读信息两次,但您只是比较第二次获得的信息。此外,第一次阅读时,使用无效的&c分隔符。它应该是%c。此外,您使用无效类型str Fabri创建上面的str变量,并且您也不会在代码中的任何位置为其赋值,因此您无法在if语句中进行比较:

scanf("&c",&WhoOwes);
if(scanf("%c",&WhoOwes)==Fabri)

由于您使用的是字符分隔符%c,因此您应将WhoOwesFabri声明为char类型以保持一致的逻辑,尽管从技术角度来说这不是{ {1}}和int存储可互换的信息。您还必须将char变量初始化为某个Fabri值。

但是,在代码的最后你有声明:

char

这不起作用,因为您缺少分隔符来打印printf("Fabri debe $",Fabri*4); 值。 将该行更改为:

Fabri*4

由于您在计算中使用printf("Fabri debe %d$",Fabri*4); // add the %d delimiter to print the actual value ,因此您应该将所有变量声明为Fabri,并使用int分隔符而不是%d来读取它们。< / p>

你的程序应该是这样的:

%c