C語言程式設計筆試題(一直更新)

2021-06-16 13:25:51 字數 3456 閱讀 6392

待入職的這段日子,生活也不能沒有目標。就來做筆試題咯。、

1. 刪除字串中所有給定的子串

問題描述:

在給定字串中查詢所有特定子串並刪除,如果沒有找到相應子串,則不作任何操作。

要求實現函式:

int delete_sub_str(const char *str, const char *sub_str, char *result_str)

【輸入】 str:輸入的被操作字串

sub_str:需要查詢並刪除的特定子字串

【輸出】 result_str:在str字串中刪除所有sub_str子字串後的結果

【返回】 刪除的子字串的個數

注:i、   子串匹配只考慮最左匹配情況,即只需要從左到右進行字串匹配的情況。比如:

在字串"abababab"中,採用最左匹配子串"aba",可以匹配2個"aba"字串。如果

匹配出從左到右位置2開始的"aba",則不是最左匹配,且只能匹配出1個"aba"字串。

ii、  輸入字串不會超過100 bytes,請不用考慮超長字串的情況。

示例 輸入:str = "abcde123abcd123"

sub_str = "123"

輸出:result_str = "abcdeabcd"

返回:2

輸入:str = "abcde123abcd123"

sub_str = "1234"

輸出:result_str = "abcde123abcd123"

返回:0

//自己寫的//

#include #include int delete_sub_str(const char *str, const char *sub_str, char *result_str)

else

*res_p++=*src_p++;

*res_p='/0';

free(temp);

return count;//返回包含子串的個數

}void main()

反思:使用自帶函式, memcpy strcmpmemset 更簡單。

2. 高精度整數加法(60分)

問題描述:

在計算機中,由於處理器位寬限制,只能處理有限精度的十進位制整數加減法,比如在32位寬處理器計算機中,

參與運算的運算元和結果必須在-231~231-1之間。如果需要進行更大範圍的十進位制整數加法,需要使用特殊

的方式實現,比如使用字串儲存運算元和結果,採取逐位運算的方式。如下:

9876543210 + 1234567890 = ?

讓字串 num1="9876543210",字串 num2="1234567890",結果儲存在字串 result = "11111111100"。

-9876543210 + (-1234567890) = ?

讓字串 num1="-9876543210",字串 num2="-1234567890",結果儲存在字串 result = "-11111111100"。

要求程式設計實現上述高精度的十進位制加法。

要求實現函式:

void add (const char *num1, const char *num2, char *result)

【輸入】num1:字串形式運算元1,如果運算元為負,則num1[0]為符號位'-'

num2:字串形式運算元2,如果運算元為負,則num2[0]為符號位'-'

【輸出】result:儲存加法計算結果字串,如果結果為負,則result[0]為符號位。

注:i、   當輸入為正數時,'+'不會出現在輸入字串中;當輸入為負數時,'-'會出現在輸入字串中,且一定在輸入字串最左邊位置;

ii、  輸入字串所有位均代表有效數字,即不存在由'0'開始的輸入字串,比如"0012", "-0012"不會出現;

iii、       要求輸出字串所有位均為有效數字,結果為正或0時'+'不出現在輸出字串,結果為負時輸出字串最左邊位置為'-'。

示例 輸入:num1 = "580"

num2 = "-50"

輸出:result = "530"

輸入:num1 = "580"

num2 = "-600"

輸出:result = "-20"

#include #include #include /*

功能:大數相加(可帶符號位)

輸入:可帶負號

*/void add (const char *num1, const char *num2, char *result)

} //填充數字

i=0;

while(num1[i+num1_flag])

*num1_data='\0';

if(strlen_num2i)

}i=0;

while(num2[i+num2_flag])

*num2_data='\0';

//恢復指標

num1_data=(char *)num1_bk;

num2_data=(char *)num2_bk;

//下面開始計算

//兩個正數想加

if(num1_flag==0 && num2_flag==0)

else

i--;

}if(up_flag==1)result_data[0]='1';

puts(result_bk);

} //負數計算

if(num1_flag==1 && num2_flag==1)

else

i--;

}if(up_flag==1)result_data[0]='1';

puts(result_bk);

} //一正一負計算

else

//判斷是否為純數字

while(*inmsisdn)

*inmsisdn++;

} inmsisdn=(char *)(inmsisdn-sizeof(char)*13);

if(*inmsisdn!='8')

inmsisdn++;

if(*inmsisdn!='6')

return 0;

}void main(void)

題目大意:有字串表示的乙個四則運算表示式,要求計算出該表示式的正確數值。四則運算即:加減乘除"+-*/"

,另外該表示式中的數字只能是

1位(數值範圍

0~9)。另若有不能整除的情況,按向下取整處理,

eg: 8/3

得出值為2。

若有字串"8+7*2-9/3"

,計算出其值為19。

、 主要考點:1. 

數字的字元形式變換為數字形式的方法; 

2. 數字的數字形式變換為數字的字串形式的方法。

Python程式設計小技巧(一直更新 )

python中的小技巧太多了,如果你會使用一些小技巧,有時候你的 會非常簡練,這邊我會一直記錄我在學習python過程中的一些小技巧。import itertools nums 1,2,3 print list itertools.permutations nums 這邊python 3是不能直接將...

liunx命令積累 一直更新

產看日誌 tail n200 logs catalina.out ps axu grep tomcat shutdown.sh tail f logs catalina.out vi logs catalina.out 清空日誌 logs catalina.out ps axu grep tomca...

cf模板題(一直更新)

尺取法裸題 676c vasya and string 樹狀陣列裸題 121e lucky array 2 sat裸題 875c.national property 二分裸題 706b interesting drink 強連通裸題 475b strongly connected city 矩陣快速...