前段时间做的部分笔试题和答案(提醒自己)

本文包含数组递归求和、字符串转长整型、字符串复制、判断整数是否为回文及插入排序等常见编程笔试题的解答代码。适用于C语言初学者及准备面试者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间做的部分笔试题和答案(提醒自己)

编写一函数实现数组的递归求和
None.gif #include < stdio.h >
None.gif#include
" config.h "
None.gif
None.gif
None.gif
int sum( int A[],size_tn)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif
if(1==n)
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gif
return1;
ExpandedSubBlockEnd.gif}

InBlock.gif
else
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gif
returnsum(&A[n-1],n-1)+n;
ExpandedSubBlockEnd.gif}

ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif
int main( void )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif
intA[]=dot.gif{1,2,3,5,9,1};
InBlock.gif
InBlock.gifprintf(
"%d/n",sum(A,ARRAY_LENGTH(A)));
InBlock.gif
InBlock.gif
return0;
ExpandedBlockEnd.gif}
头文件config.h的内容如下:
None.gif #ifndefCONFIG_H
None.gif
#define CONFIG_H
None.gif
None.gif
None.gif
#define ARRAY_LENGTH(x)sizeof(x)/sizeof(x[0])
None.gif
None.gif
None.gif
#endif





编写一函数实现str到long的转换
None.gif #include < stdio.h >
None.gif#include
< string .h >
None.gif#include
< assert.h >
None.gif
None.gif
None.gif
None.gif
long str2long( const char * str)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif
longresult=0;
InBlock.gif
InBlock.gif
while('/0'!=*str)
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gifresult
=result*10+(*str-'0');
InBlock.gif
++str;
ExpandedSubBlockEnd.gif}

InBlock.gif
InBlock.gif
returnresult;
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif
None.gif
None.gif
int main( void )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif
char*str="1234";
InBlock.gif
InBlock.gifprintf(
"/n%d/n",str2long(str));
InBlock.gif
InBlock.gif
return0;
ExpandedBlockEnd.gif}

上面的代码没有考虑负数^_^



实现strcpy函数
None.gif char * mystrcpy( char * dst, const char * src)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifassert(NULL
!=dst&&NULL!=src);
InBlock.gif
while(*dst++=*src++);
InBlock.gif
InBlock.gif
returndst;
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif
int main( void )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif
char*dst[20];
InBlock.gif
char*src="test";
InBlock.gifmystrcpy(dst,src);
InBlock.gif
InBlock.gifputs(dst);
InBlock.gif
InBlock.gif
return0;
ExpandedBlockEnd.gif}



判断一个整数是否是回文
None.gif long symm( long n)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif
longi,m;
InBlock.gifm
=0;
InBlock.gifi
=n;
InBlock.gif
while(i)
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gifm
=m*10+i%10;
InBlock.gifi
/=10;
ExpandedSubBlockEnd.gif}

InBlock.gif
return(n==m?1:0);
ExpandedBlockEnd.gif}



实现Insertion sort
None.gif #include < stdio.h >
None.gif#include
< string .h >
None.gif
None.giftypedef
int ElemType;
None.gif
None.gif
void InsertionSort(ElemTypeA[],size_tn)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif
inti;
InBlock.gif
intpass;
InBlock.gifElemTypetmp;
InBlock.gif
InBlock.gif
for(pass=1;pass<n;pass++)
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.giftmp
=A[pass];
InBlock.gif
for(i=pass;i>0&&A[i-1]>tmp;i--)
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gifA[i]
=A[i-1];
ExpandedSubBlockEnd.gif}

InBlock.gifA[i]
=tmp;
ExpandedSubBlockEnd.gif}

ExpandedBlockEnd.gif}

None.gif
None.gif
int main( void )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif
inti;
ExpandedSubBlockStart.gifContractedSubBlock.gifElemTypeA[]
=dot.gif{1,2,4,8,6,98,11,25,44,35};
InBlock.gif
InBlock.gifputs(
"Beforesort:");
InBlock.gif
for(i=0;i<sizeof(A)/sizeof(ElemType);i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gifprintf(
"%d",A[i]);
ExpandedSubBlockEnd.gif}

InBlock.gifprintf(
"/n");
InBlock.gif
InBlock.gifInsertionSort(A,
sizeof(A)/sizeof(ElemType));
InBlock.gif
InBlock.gifputs(
"Aftersort:");
InBlock.gif
for(i=0;i<sizeof(A)/sizeof(ElemType);i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gifprintf(
"%d",A[i]);
ExpandedSubBlockEnd.gif}

InBlock.gif
InBlock.gifprintf(
"/n");
InBlock.gif
InBlock.gif
return0;
ExpandedBlockEnd.gif}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值