我想得到输入字符串中1s的数目(作为一个字符),但它不起作用。请告诉我原因。

#include"stdio.h"
#include"string.h"

int main()
{
  int n,l,count1=0,i;
  scanf("%d",&n);
  char a[n];
  gets(a);
  for(i=0;i<n;i++)
  {
    if(a[i]=='1')
      count1++;
  }
  printf("%d",count1);
  puts(a);
  return 0;
}

最佳答案

您的代码将跳过gets(),因为您在前面输入了新行字符,新行字符是gets()的分隔符。尽管在scanf之后使用getchar()应该可以,但我建议您使用

#include"stdio.h"
#include"string.h"
#include <iostream>

int main()
{
int n,l,count1=0,i;
scanf("%d",&n);
char a[n];
std::cin>>a;
for(i=0;i<n;i++)
{
    if(a[i]=='1')
        count1++;
}
printf("%d",count1);
std::cout<<a;
return 0;
}

07-26 04:20