Anyiknight 2023-01-02 14:55 采纳率: 100%
浏览 84
已结题

c语言syntax error :'type'报错

求问此处为什么有 syntax error :'type'报错?
此问题源于C Primer Plus第八章练习题第五题:使用更智能的猜测策略,使程序可以猜出1-100内的任意一个整数。

如:程序最初猜50,询问用户是猜大了、猜小了还是猜对了。如果猜小了,那么下一次猜测的值应是50和100中值,耶尔就是75。如果这次猜大了,那么下一次猜测的值应是50和75的中值,等等。使用二分查找(binary search)策略,如果用户没有欺骗程序,那么程序很快就会猜到正确的答案

#include<stdio.h>
char get_choice(void);
char get_first(void);
int main()
{
    int head=1;
    int tail=100;
    int guess=(head+tail)/2;
    char ch;
    printf("I will guess an integer from 1 to 100.\n");
    printf("Please responde by Biger(B) or Lower(L) or Yes(Y).\n");
    do
    {
        printf("Is your number is %d?\n",guess);
        if((ch=get_choice())=='Y')
            break;
        if((ch=get_choice())=='B')
        {
            tail=guess-1;
            guess=(head+tail)/2;
            continue;
        }
        else if((ch=get_choice())=='L')
        {
            head=guess+1;
            guess=(head+tail)/2;
            continue;
        }
        while((ch=get_choice())!='Y');

        printf("I know the answer!\n");
        return 0;
}

char get_choice(void)
{
    int ch;
    ch=get_first();
    while(ch!='B'&&ch!='L'&&ch!='Y')
    {
        printf("I can only know Biger or Lower or Yes.\n");
        printf("Please try again!\n");
        ch=get_first();
    }
    return ch;
}

char get_first()
{
    int ch;
    ch=getchar();
    while(getchar()!='\n')
        continue;
    return ch;
}


在VC++6.0运行后会在第35行 char get_choice(void)处报错syntax error:'type'。想求问一下为什么会有这个报错?谢谢!

  • 写回答

6条回答 默认 最新

  • 白驹_过隙 算法领域新星创作者 2023-01-02 17:25
    关注

    定义的两个函数不用加void,还有一些其他的错误都改好了,望采纳回答

    img

    #include<stdio.h>
    char get_first()
    {
        int ch;
        ch=getchar();
        while(getchar()!='\n')
            continue;
        return ch;
    }
    char get_choice()
    {
        int ch;
        ch=get_first();
        while(ch!='B'&&ch!='L'&&ch!='Y')
        {
            printf("I can only know Biger or Lower or Yes.\n");
            printf("Please try again!\n");
            ch=get_first();
        }
        return ch;
    }
    
    
    int main()
    {
        int head=1;
        int tail=100;
        int guess=(head+tail)/2;
        char ch;
        printf("I will guess an integer from 1 to 100.\n");
        printf("Please responde by Biger(B) or Lower(L) or Yes(Y).\n");
        do
        {
            printf("Is your number is %d?\n",guess);
            ch=get_choice();
            if(ch=='Y')
                break;
            if(ch=='B')
            {
                tail=guess-1;
                guess=(head+tail)/2;
                continue;
            }
            else if(ch=='L')
            {
                head=guess+1;
                guess=(head+tail)/2;
                continue;
        }}
            while(ch!='Y');
    
            printf("I know the answer!\n");
            return 0;
    }
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 已采纳回答 1月2日
  • 赞助了问题酬金15元 1月2日
  • 创建了问题 1月2日

悬赏问题

  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂