c 面试编程问题

时间:2020-11-08 09:06:04 面试问题 我要投稿

c 面试编程问题

1、输出和为一个给定整数的所有组合
例如 n=5
5=1+4;5=2+3(相加的数不能重复)
则输出
1,4;2,3。
#include <stdio.h>
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 <stdio.h>
void main()
{
unsigned long int a,i=1;
scanf("%d",&a);
if(a%2==0)
{
for(i=1;i<a/2;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 <stdio.h>
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;
}

c 面试编程问题

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] );
}

【c 面试编程问题】相关文章:

一个C/C++编程面试题11-22

计算机C语言编程问题分析论文06-21

C语言编程练习11-23

C语言编程题11-23

c语言指针面试常见问题09-28

面试中编程实例11-21

考查C++/C程序员的基本编程技能11-25

计算机程序c语言面试常见问题12-08

C++和操作系统面试问题分类11-15

C++面试常用问题:"引用"与指针的区别11-21