Kathy_Won 2022-11-02 06:19 采纳率: 96.2%
浏览 79
已结题

C语言冒泡排序,报错如何修改

  1. //使用冒泡排序的方法,对输入的n个数进行从小到大排序
  2. #include <stdio.h>
  3. int main()
  4. {
  5. int n, i,
  6. scanf("%d", &n);
  7. int a[n];
  8. for (i=0; i<n; i++)
  9. scanf("%d", &a[i]);
  10. int j, k, swap;
  11. for (j=0; j<n-1; j++)
  12. {
  13. for (k=0; k<n-1-i; k++) //判断是否交换的次数随轮次的增加而减少(因为上一轮已经把大的排后面了)
  14. {
  15. if (a[k]>a[k+1])
  16. {
  17. swap=a[k];
  18. a[k]=a[k+1];
  19. a[k+1]=swap;
  20. }
  21. }
  22. }
  23. for(i=0; i<n; i++)
  24. printf("%d ", a[i]);
  25. return 0;
  26. }
  27. /*报错:
  28. c:5:11: error: expected declaration specifiers or '...' before string constant
  29. scanf("%d", &n);
  30. ^~~~
  31. c:5:17: error: expected declaration specifiers or '...' before '&' token
  32. scanf("%d", &n);
  33. ^
  34. */

请问以上报错是什么意思,怎么修改代码

展开全部

  • 写回答

4条回答 默认 最新

  • 语言-逆行者 2022-11-02 06:34
    关注
    1. int a[n];//不能这样动态定义的
    1. //使用函数调用方案,参考
    2. #include<stdio.h>
    3. void bubble_sort(int arr[],int sz)//参数类型解释②
    4. {
    5. for (int i = 0; i < sz-1; i++)
    6. {
    7. for (int j = 0; j <sz-1-i; j++)
    8. {
    9. if (arr[j] > arr[j + 1])
    10. {
    11. int temp = arr[j];
    12. arr[j] = arr[j + 1];
    13. arr[j + 1] = temp;
    14. }
    15. }
    16. }
    17. }
    18. int main()
    19. {
    20. int arr[] = { 9,8,7,4,5,6,1,2,3,0 };
    21. int sz = sizeof(arr) / sizeof(arr[0]);//变量sz位置及计算注意事项①
    22. bubble_sort(arr,sz);//参数类型解释②
    23. for (int i = 0; i < 10; i++)//输出交换后的数组
    24. {
    25. printf("%d ", arr[i]);
    26. }
    27. return 0;
    28. }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月2日
  • 修改了问题 11月2日
  • 创建了问题 11月2日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部