c語言基礎隨著工作,慢慢遺忘的一乾二淨,簡單實現,不考慮效率,留作備忘。
一、反轉
char *str_reserve11(char *src)
return src;
}char *str_reserve22(char *src, int len)
#endif
while(start < end)
return src;
}
二、大數相加
注意:1、反轉, 2、判斷是否進製,3、注意迴圈哪個先到界,4、反序輸出
void dashu_add(char a[n], char b[n], char c[n+1])
if ('\0' != pb[i])
c[i] = pa[i] + pb[i] + cflag;
if (10 <= c[i])
else
c[i] = c[i] + '0';
} if (1 == cflag)
c[i] = 1;
pc = str_reserve11(c);
printf("c=>%s<\n", c);
return;
}
p.s:另一種不呼叫反序函式的方法。
void dashu_add22(char a[n], char b[n], char c[n+1])
, tmpb[n] = , tmpc[n+1] = ;
int ialen = 0, iblen = 0, iclen = 0, imax = 0;
ialen = strlen(a);
iblen = strlen(b);
imax = ((ialen > iblen) ? ialen : iblen);
for (i = 0; i < ialen; i++)
for (i = 0; i < iblen; i++)
for (i = 0; i < imax; i++)
else
tmpc[i] = tmpc[i] + '0'; }
if (1 == cflag)
tmpc[i] = 1;
iclen = strlen(tmpc);
for (i = 0; i < iclen; i++)
printf("c=>%s<\n", c);
return;
}
三、判斷ip位址範圍
一、主要是檢查,下邊**檢查還是不夠足夠嚴格,但一般可用。
typedef enum
w; //輸入ip, 並判斷型別
#define maxlen 15
#define minlen 7
w m(char *s)
for(iloop = 0; iloop < iiplen; iloop++)
if ('.' == s[iloop])
}if (3 != idotcount)
sscanf(s, %d.%d.%d.%d.%c, &ipart1, &ipart2, &ipart3, &ipart4,&cendchar);
if ( (0 >= ipart1) || (255 <= ipart1) || \
(0 > ipart2) || (255 <= ipart2) || \
(0 > ipart3) || (255 <= ipart3) || \
(0 >= ipart4) || (255 <= ipart4) )
if ( (0 < ipart1) && (127 >= ipart1) )
else if ( (127 < ipart1) && (191 >= ipart1) )
else if( (191 < ipart1) && (223 >= ipart1) )
else if ( (223 < ipart1) && (239 >= ipart1) )
else if ( (239 < ipart1) && (247 >= ipart1) )
else
return eret;
}
字串 大數相加
題目 定義兩個一維字元陣列a 20 b 20 表示兩個大正整數,定義c 50 表示a b的結果。輸入大數a和b的位數m n 3 m n 20 以字串形式分別輸入m位大數a和n位大數b,完成a b的計算,並以字元型資料儲存計算結果。因為是 大數 所以用int long long long都不行,需運用...
字串相加, 大數加法
題目描述 給定兩個字串形式的非負整數 num1 和num2 計算它們的和。注意 num1 和num2 的長度都小於 5100.num1 和num2 都只包含數字 0 9.num1 和num2 都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式。思路...
字串相加
題目 給定兩個字串形式的非負整數num1和num2,計算它們的和。注意 num1和num2的長度都小於 5100.num1和num2都只包含數字0 9.num1和num2都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式 分析 注意幾個方面 1 迴...