几道关于C语言的问题求解决

. 编写函数int fun(int m),计算并返回满足表达式:1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+……+n)<=m最大的n。例如,当m=10000时,程序输出:n=38。
#include
int fun(int m)
{
}
int main()
{int x;
scanf("%d",&x);
printf("n=%d\n",fun(x));
return 0;
}
. 编写函数void fun(int *x,int n),它的功能是:删除有n个数据的数组x中所有包含数字6的数据,后续的剩余元素赋值为-1。n为数组长度,规定x中数据都为正数。
如程序运行时若输入:122 1461 6234 16 11 663 911 2671 381 6
删除后输出: 122 11 911 381 -1 -1 -1 -1 -1 -1
#define N 10
#include
void fun(int *x,int n)
{
}
int main()
{int a[N],i;
for(i=0;i<N;i++)
scanf("%d",a+i);
fun(a,N);
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}

第二个
void fun(int *x,int n)
{
char buf[120];
int i = 0;
int m = n;
int tmp = 0;

    for(i = 0; i < n; i++)
    {
        memset(buf, 0x0, sizeof(buf));

        sprintf(buf, "%d",x[i]);
        ptr = strstr(buf, "6"); //记得包含头文件#include <string.h>
        while(ptr == NULL)
        {
            if((i != m) && (i < m))
            {
                tmp = x[i];
                x[i] = x[m -1];
                x[m -1] = -1;
                m--;

                memset(buf, 0x0, sizeof(buf));
                sprintf(buf, "%d",x[i]);
                ptr = strstr(buf, "6");
                if(ptr != NULL)
                break;
            }
            else 
            {
                 x[i] = -1;
            }
        }

    }

}

没运行,但是应该没问题

第一个:
#include
int fun(int m)
{
int n = 0;
int num = 0;
int total = 0;

for(n = 0; total<=m; n++)
{
    num += num;
    num++;
    total += num;
}

teturn n-1;

}
int main()
{int x;
scanf("%d",&x);
printf("n=%d\n",fun(x));
return 0;
}