Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nptel pascal编程作业_C - Fatal编程技术网

Nptel pascal编程作业

Nptel pascal编程作业,c,C,我正在nptel的MOOC学习编程和数据结构课程。 课程中的编程作业要求我们计算选定系数之和。 现在,我编写的程序计算了答案,但我遇到了运行时错误。 现在我倾向于使用get()而不是scanf(),以加快输入速度。 我该怎么做? 代码如下: #include<stdio.h> int combi(int ,int); long fact(int); int main() { int r,i,v[20],p[20],t,l=

我正在nptel的MOOC学习编程和数据结构课程。 课程中的编程作业要求我们计算选定系数之和。 现在,我编写的程序计算了答案,但我遇到了运行时错误。 现在我倾向于使用get()而不是scanf(),以加快输入速度。 我该怎么做? 代码如下:

    #include<stdio.h>


int combi(int ,int);
 long fact(int);
 int main()
         {
              int r,i,v[20],p[20],t,l=1,b=0,sum=0,a=0,flag=0;
      char ch='a';

scanf("%d",&r);


scanf("%d",&t);

for(i=0;i<t;i++)
{

         scanf("%d",&v[0]);
         if(getchar()==' ')
            {
                if(r<v[0])
                {
                    while(ch!='\n')
                    {

                        scanf("%d",&v[l]);
                        l++;
                        if(getchar()=='\n')
                        {
                            p[a]=-1;
                            a++;
                            l=1;
                            break;
                        }
                    }

                }
                else
                {
                  while(ch!='\n')
                    {

                        scanf("%d",&v[l]);
                        if(v[l]>v[0])
                          {
                                flag=1;

                          }
                        l++;
                        if(getchar()=='\n')
                        {

                            if(flag>0)
                            {
                                 p[a]=-1;
                                 a++;
                                 l=1;
                                 sum=0;
                        flag=0;
                                 break;

                            }
                            else
                            {
                                for(b=1;b<l;b++)
                                {
                                    sum=sum+combi(v[0],v[b]);
                                }
                                p[a]=sum;
                                a++;
                                sum=0;
                                l=1;
                                break;
                            }
                        }
                    }

              }
          }
}

  for(i=0;i<t;i++)
  {
      printf("%d\t ",p[i]);
  }
  printf("\n");
}
int combi(int x,int y)
{
     int a=fact(x)/(fact(x-y)*fact(y));

     return a;
}
long fact(int z)
{
    int i=1;
    long f=1;
    while(i<=z)
    {
      f=f*i;
      i++;
    }

    return f;
 }
#包括
int-combi(int,int);
长事实(int);
int main()
{
int r,i,v[20],p[20],t,l=1,b=0,sum=0,a=0,flag=0;
char ch='a';
scanf(“%d”、&r);
scanf(“%d”、&t);
对于(i=0;i0)
{
p[a]=-1;
a++;
l=1;
总和=0;
flag=0;
打破
}
其他的
{

对于(b=1;b建议:永远不要使用
gets()
。而是使用
fgets()
。这会提高运行时间吗?您建议我如何更改为fgets?为此,您需要详细说明
,但我遇到了一个运行时错误
。显然,他希望加快速度,以便更快地找到错误