我要投稿 投诉建议

c 面试编程问题

时间:2022-09-25 17:44:56 面试试题 我要投稿
  • 相关推荐

c 面试编程问题

  1、输出和为一个给定整数的所有组合

c 面试编程问题

  例如 n=5

  5=1+4;5=2+3(相加的数不能重复)

  则输出

  1,4;2,3。

  #include

  int main(void)

  {

  unsigned long int i,j,k;

  printf("please input the number\n");

  scanf("%d",&i);

  if( i % 2 == 0)

  j = i / 2;

  else

  j = i / 2 + 1;

  printf("The result is \n");

  for(k = 0; k < j; k++)

  printf("%d = %d + %d\n",i,k,i - k);

  return 0;

  }

  #include

  void main()

  {

  unsigned long int a,i=1;

  scanf("%d",&a);

  if(a%2==0)

  {

  for(i=1;i

  printf("%d",a,a-i);

  }

  else

  for(i=1;i<=a/2;i++)

  printf(" %d, %d",i,a-i);

  }

  2、递规反向输出字符串的例子,可谓是反序的经典例程.

  void inverse(char *p)

  {

  if( *p = = '\0' )

  return;

  inverse( p+1 );

  printf( "%c", *p );

  }

  int main(int argc, char *argv[])

  {

  inverse("abc\0");

  return 0;

  }

  对 1 的另一种做法:

  #include

  void test(FILE *fread, FILE *fwrite)

  {

  char buf[1024] = {0};

  if (!fgets(buf, sizeof(buf), fread))

  return;

  test( fread, fwrite );

  fputs(buf, fwrite);

  }

  int main(int argc, char *argv[])

  {

  FILE *fr = NULL;

  FILE *fw = NULL;

  fr = fopen("data", "rb");

  fw = fopen("dataout", "wb");

  test(fr, fw);

  fclose(fr);

  fclose(fw);

  return 0;

  }

  3、用递归算法判断数组 a[N]是否为一个递增数组。

  递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回 false结束:

  bool fun( int a[], int n )

  {

  if( n= =1 )

  return true;

  if( n= =2 )

  return a[n-1] >= a[n-2];

  return fun( a,n-1) && ( a[n-1] >= a[n-2] );

  }

http://www.cnrencai.com/