待入職的這段日子,生活也不能沒有目標。就來做筆試題咯。、
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 矩陣快速...