优化这个代码使其更简短 #include <stdio.h>#include <stdlib.h>void reverse(char s[]) { int i, j; char c; for (i = 0, j = strlen(s) - 1; i < j; i++, j--) { c = s[i]; s[i] = s[j]; s[j] = c; }}void itoa(int n, char s[]) { int i, sign; if ((sign = n) < 0) { n = -n; } i = 0; do { s[i++] = n % 10 + '0'; } while ((n /= 10) > 0); if (sign < 0) { s[i++] = '-'; } s[i] = '\0'; reverse(s);}int main() { int num = 12345; char str[10]; itoa(num, str); printf("Number: %d\nString: %s\n", num, str); return 0;}
时间: 2023-11-22 12:53:24 浏览: 69
可以将两个函数合并成一个函数,同时去掉不必要的变量和语句,使代码更简短:
```
#include <stdio.h>
#include <stdlib.h>
void itoa(int n, char s[]) {
int i = 0;
do {
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
s[i] = '\0';
for (int j = 0, k = i - 1; j < k; j++, k--) {
char c = s[j];
s[j] = s[k];
s[k] = c;
}
}
int main() {
int num = 12345;
char str[10];
itoa(num, str);
printf("Number: %d\nString: %s\n", num, str);
return 0;
}
```
这个版本的代码只包含一个函数,用一个指针变量遍历字符数组,然后直接倒序排列。
阅读全文