鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 乐乐学编程

[已解决]C语言越学越不懂了,请教

[复制链接]
 楼主| 发表于 2020-10-23 16:48:24 | 显示全部楼层
xieglt 发表于 2020-10-23 09:39
你认为复杂,是因为你不懂C++。人家用C++写,不违背题意吧,真纠结!

谢谢你对我那个程序错误的指出,无奈我不懂的 ------ 他的C++程序像答案的模样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-25 00:52:50 | 显示全部楼层    本楼为最佳答案   
本程序需要在DEV_C++的菜单--->工具--->编译选项--->编译时加入命令前打勾,并在下面的加入框中加入:-std=c++11


  1. #include <iostream>
  2. #include <iterator>
  3. #include <algorithm>

  4. void foo_c( int a[], size_t n )
  5. {
  6.     int* q = a;
  7.     for( int *p=a; p!=a+n; ++p )
  8.         if( *p != 0 )
  9.             *q++ = *p;
  10.     for( ; q!=a+n; ++q )
  11.         *q = 0;
  12. }

  13. template<typename T,size_t N> void foo_cpp( T (&a)[N] )
  14. {
  15.     std::stable_partition( a, a+N, [](T n){return n>0;} );
  16. }

  17. template<typename T,size_t N> void print( const T (&a)[N] )
  18. {
  19.     std::copy( a, a+N, std::ostream_iterator<T>(std::cout," ") );
  20.     std::cout << std::endl;
  21. }

  22. int main( void )
  23. {
  24.     {
  25.         int nums[] = { 9,0,0,0,10,0,0,0,11,0,12,0,13,0,14,0,15,0,16,0 };
  26.         foo_c( nums, sizeof(nums)/sizeof(*nums) );
  27.         print( nums );
  28.     }
  29. }

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-25 08:26:14 | 显示全部楼层
本帖最后由 shooan 于 2020-10-25 09:40 编辑

纯C语言写的,刚好之前在leetcode上面做过

  1. void moveZeroes(int* nums, int numsSize){
  2.     int p = numsSize-1;
  3.     while (nums[p]==0)      // 找到最后一个非零元素的下标
  4.     {
  5.         if (p == 0)
  6.             return;
  7.         --p;
  8.     }

  9.     int k = p;
  10.     for (int i = k-1; i >= 0; i--)
  11.     {
  12.         if (nums[i]==0)     // 找到最近的一个零元素的下标
  13.         {
  14.             int m = i;
  15.             while (m < p)   // 把零往后面推
  16.             {
  17.                 int t = nums[m];
  18.                 nums[m] = nums[m+1];
  19.                 nums[m+1] = t;
  20.                 m++;
  21.             }
  22.             p--;
  23.         }
  24.     }
  25. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-25 08:41:43 | 显示全部楼层
风过无痕1989 发表于 2020-10-25 00:52
本程序需要在DEV_C++的菜单--->工具--->编译选项--->编译时加入命令前打勾,并在下面的加入框中加入:-std= ...

谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-25 08:42:47 | 显示全部楼层
shooan 发表于 2020-10-25 08:26
纯C语言写的,刚好之前在leetcode上面做过

谢谢 ! 纯C语言的程序,我上面那个就是呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-25 09:32:08 | 显示全部楼层
乐乐学编程 发表于 2020-10-25 08:42
谢谢 ! 纯C语言的程序,我上面那个就是呀

不客气
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-1 22:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表