关于C中变量的范围

时间:2013-11-20 16:50:28

标签: c scope

#include<stdio.h>
int countdigits(int n);
int main(void)
{
   int t,k;
   scanf("%d %d",&t,&k);

   long long N[t];
   int i;

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

       scanf("%lld",&N[i]);
   }

int j,main_count=0;
for (j=0;j<t;j++)
{

    int counter=0;
    while (N[j] !=0)
    {

        if (N[j]%10 <=k)
        {
            counter++;
        }
        else
            ;
        N[j]=N[j]/10;
    }
        if (counter==countdigits(N[j]))
            main_count+=1;

}
   printf("%d",main_count);

    return 0;
}

int countdigits(int n)
{
    int num,counter=0;
    num=n;
    for(;num !=0;num=num/10)
    {
        counter++;
    }

    return counter;
}

我确定算法,问题在这里 如果它包含不超过k(0,...,k)的所有数字,那么我们称它为数字k-good 你有一个数字k和一个包含n个数字的数组 找出a中有多少个k-good数字(每次在数组a中出现时计算每个数字)。

输入
第一行包含整数n和k(1≤n≤100,0≤k≤9)。以下n行中的第i行包含不带前导零的整数ai(1≤ai≤109)。

输出
打印一个整数 - 一个.- / p>中的k-good数字的数量

有人可以告诉我哪里出错了?

1 个答案:

答案 0 :(得分:0)

#include<iostream>
#include<string>
using namespace std;

int main()
{
  string s;
  int n, k, count = 0;
  cin >> n >> k;
  while (n--)
  {
      cin >> s;
      int f[10] = {0};
      bool good = true;
      for (int i=0;i<s.size();i++)
          f[s[i]-'0']=1;

      for (int i=0;i<=k;i++)
          if (f[i]==0)
             good = false;
      if (good)
          count ++;
  }
  cout << count << endl;
  return 0;
}

网站上接受的代码。特里克在“包含所有数字不超过”。问题描述说必须包括所有数字&lt; = k。问题没有说数字&gt; k不应该包括在内。大于k的数字存在或不存在的事实并不重要。