请问一下这个代码哪错了

#include

main()

{

  int cock,hen,chicken;//cock,hen,chicken分别为公鸡,母鸡和小鸡



  printf("%10s%10s%10s\n","cock","hen","chicken");



  for(cock=1;cock<=20;cock++)



  {



         for(hen=1;hen<=33;hen++)



         {



                chicken=100-cock-hen;



                if(chicken%3==0)



                       if(chicken%3==0&&5*cock+3*hen+chicken/3==100)                               )



                              printf("%9d,%9d,%9d\n",cock,hen,chicken);



         }



  }

}

33行最右侧括号是多余的吧,而且不需要加chicken%3==0条件了,29行已经判断了

有多处错误:
1.if(chicken%3==0)后面少了左花括号{
2.添加之后for循环缺少对应的右花括号}
3.main函数的返回值为int型,所以要在最后一行加上return 0; 或者把main函数的返回类型改成void
4.if(chicken%3==0&&5*cock+3*hen+chicken/3==100) )后面多了一个右括号),需要删除,且chicken%3==0已经在上一层的if条件中满足了,不需要再判断一次(当然这个不算语法错误)。
修正后的代码·

#include <stdio.h>
int main () {
    int cock,hen,chicken;//cock,hen,chicken分别为公鸡,母鸡和小鸡
    printf("%10s%10s%10s\n","cock","hen","chicken");
    for(cock=1;cock<=20;cock++)
    {
        for(hen=1;hen<=33;hen++)
        {
            chicken=100-cock-hen;
            if(chicken%3==0){
                if(5*cock+3*hen+chicken/3==100)
                    printf("%9d,%9d,%9d\n",cock,hen,chicken);
            }
        }
    }
    return 0;
}  

运行结果

img

main 函数需要有返回类型,因此需要在 main 前面加上返回类型 int。

#include <stdio.h>

int main() {
  int cock, hen, chicken;

  printf("%10s%10s%10s\n", "cock", "hen", "chicken");

  for (cock = 1; cock <= 20; cock++) {
    for (hen = 1; hen <= 33; hen++) {
      chicken = 100 - cock - hen;
      if (chicken % 3 == 0 && 5 * cock + 3 * hen + chicken / 3 == 100) {
        printf("%9d,%9d,%9d\n", cock, hen, chicken);
      }
    }
  }
  return 0;
}


  • 你可以看下这个问题的回答https://ask.csdn.net/questions/1067910
  • 这篇博客也不错, 你可以看下浅入及第一个代码
  • 除此之外, 这篇博客: 数据结构基础代码中的 链表的反转 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 利用头插法实现链表反转

    #include <cstdio>
    //链表的创建
    int array[5] = {1,2,4,6,7};
    struct ListNode{
        int val;
        ListNode *next;
        ListNode(int Val): val(Val),next(NULL){}
    };
    ListNode* List_Create()//使用尾插法,是正序输入的;
    {
        ListNode *head= new ListNode(-1);
        for(int i = 0;i < 5; i++)
        {
            ListNode *node = new ListNode(array[i]);
            node->next = head->next;
            head->next = node;
        }
        return head->next;
    }
    void del(ListNode *&head,int sate)
    {
        ListNode *pre = head;
        ListNode *cur = pre->next;
        while(cur != NULL)
        {
            if(sate == cur->val)
            {
                pre->next = cur->next;
                delete cur;
            }
            pre= pre->next;
            cur = pre->next;
        }
    }
    int main() {
        ListNode *head = List_Create();
        ListNode *cur = head;
        while(cur != NULL)
        {
            printf("%d ",cur->val);
            cur = cur->next;
        }
    }
    
  • 您还可以看一下 孙玖祥老师的图解数据结构与算法课程中的 背包问题代码实现小节, 巩固相关知识点