IT面试笔试题全集_C语言篇_史上最全_Rain系列IT面试笔试题全集_史上最全_C语言篇_Rain系列
C面试题(编程)
_追雨制作
1) (例如):
12
34
56
:
56
34
12
(逆序)
2)输出和为一个给定整数的所有组合
例如n=5
5=1+4;5=2+3(相加的数不能重复)
则输出
1,4;2,3。
第一题,注意可增长数组的应用.
#include
#include
int main(void)
{ int MAX = 10;
int *a = (int *)malloc(MAX * sizeof(int));
int *b;
FILE *fp1;
FILE *fp2;
fp1 = fopen(
,
r
);
if(fp1 == NULL)
{printf(
error1
#8243;);
exit(-1);
}
fp2 = fopen(
,
w
);
if(fp2 == NULL)
{printf(
error2
#8243;);
exit(-1);
}
int i = 0;
int j = 0;
while(fscanf(fp1,
%d
,
amp;a[i]) != EOF)
{i++;
j++;
if(i >= MAX)
{
MAX = 2 * MAX;
b = (int*)realloc(a,MAX * sizeof(int));
if(b == NULL)
{printf(
error3
#8243;);
exit(-1);
}a = b;
}}
for(;
j >= 0;)
fprintf(fp2,
%d\n
,a[j]);
fclose(fp1);
fclose(fp2);
return 0;
}
第二题.
#include
int main(void)
{unsigned long int i,j,k;
printf(
please input the number\n
);
scanf(
%d
,
amp;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
,
amp;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);
}
兄弟,这样的题目若是做不出来实在是有些不应该, 给你一个递规反向输出字符串的例子,可谓是反序的经典例程.
void inverse(char *p)
{ if( *p = =
#8216;\0
#8242; )
return;
inverse( p+1 );
printf(
#8220;%c
, *p );
}
int main(int argc, char *argv[])
{
inverse(
abc\0
#8243;);
return 0;
}
借签了楼上的“递规反向输出”
#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
IT面试笔试题全集 C语言篇 史上最全 Rain系列 来自淘豆网m.daumloan.com转载请标明出处.