代碼如下:
10余年建站經(jīng)驗(yàn), 網(wǎng)站建設(shè)、做網(wǎng)站客戶的見(jiàn)證與正確選擇。創(chuàng)新互聯(lián)提供完善的營(yíng)銷型網(wǎng)頁(yè)建站明細(xì)報(bào)價(jià)表。后期開(kāi)發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。
#include stdio.h
#include string.h
#include stdlib.h
int main()
{
char str[100];
char buf[10];
int i;
int n = 0;
bool flag = 0;
int j = 0;
//gets(str);
scanf("%s", str);
for (i = 0; i != strlen(str); ++ i)
{
if (str[i] = '0' str[i] = '9')
{
? ?buf[j] = str[i];
? ?j++;
? ?flag = 1;
}
else if (flag)
{
? ?n += atoi(buf);
? ?memset(buf,0,10);//清空緩存區(qū)
? ?flag = 0;
? ?j = 0;
}
}
printf("%s",buf);
printf("%d\n", n);
}
擴(kuò)展資料
(C語(yǔ)言)常見(jiàn)字符函數(shù)和字符串函數(shù)
1、strlen
功能:計(jì)算字符串長(zhǎng)度,不包含’\0’
返回值:返回字符串的字符數(shù)
說(shuō)明:strlen() 函數(shù)計(jì)算的是字符串的實(shí)際長(zhǎng)度,遇到第一個(gè)’\0’結(jié)束;參數(shù)指向的字符串必須以 ’ \0 ‘結(jié)束。函數(shù)返回值一定是size_t ,是無(wú)符號(hào)的。如果你只定義沒(méi)有給它賦初值,這個(gè)結(jié)果是不定的,它會(huì)從首地址一直找下去,直到遇到’\0’停止。
sizeof返回的是變量聲明后所占的內(nèi)存數(shù),不是實(shí)際長(zhǎng)度,此外sizeof不是函數(shù),僅僅是一個(gè)操作符,strlen()是函數(shù)。
2、strcpy
功 能: 將參數(shù)src字符串拷貝至參數(shù)dest所指的地址
返回值: 返回參數(shù)dest的字符串起始地址
說(shuō)明:源字符串必須以’\0’結(jié)束。會(huì)將源字符串的’\0’拷貝到目標(biāo)空間。目標(biāo)空間必須可變。如果參數(shù)dest所指的內(nèi)存空間不夠大,可能會(huì)造成緩沖溢出的錯(cuò)誤情況,在編寫程序時(shí)需特別留意,或者用strncpy()來(lái)取代。
思路:遍歷字符數(shù)組,判斷字符是否是數(shù)字,如果是進(jìn)行相關(guān)操作,最后輸出字符串?dāng)?shù)組即可。
參考代碼:
#include?stdio.h
#includestring.h
void?fun(char?a[]){
int?i;
for(i=0;istrlen(a);i++)
if(a[i]='0'a[i]='8')?a[i]++;
else?if(a[i]=='9')?a[i]='0';
}?
int?main()
{
char?a[100];
gets(a);
fun(a);
puts(a);
return?0;
}
/*
運(yùn)行結(jié)果:?
abcABd24e9fg
abcABd35e0fg
*/
可以通過(guò)循環(huán)遍歷數(shù)組中的每個(gè)元素,并進(jìn)行累加。
累加的結(jié)果可以保存在變量中,需要注意,要保證變量足夠保存累加結(jié)果,不會(huì)出現(xiàn)溢出。
參數(shù)為整型數(shù)組a,長(zhǎng)度為l,對(duì)其元素實(shí)現(xiàn)累加并返回結(jié)果的函數(shù)可以寫作
int?sum(int?*a,?int?l)
{
int?r?=?0;?//?存儲(chǔ)累加結(jié)果。
int?i;
for(i?=?0;?i??l;?i?++)//遍歷a
r?+=?a[i];//累加元素。
return?r;//返回結(jié)果。
}