1.字符串转为数字
#include <stdio.h>
int strToInt(char *s)
{
int num=0;
int sign=1;
int step=1;
if (*s == '-')
{
sign = -1;
s++;
}
while (*s >= '0'&&*s <= '9')
{
num = num*10+(*s-'0');
step += 10;
s++;
}
return num*sign;
}
int main()
{
char a[10] = "-1234";
char *s =a ;
printf("字符型:%s,整形:%d",s,strToInt(s));
return 0;
}
2.二维字符数组转一维数组
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[3][3] = { 'w','w','w','a','a','a','l','l','l'};
char n[10] = "";
for (int i = 0,m=0; i < 3; ++i)
{
for (int j = 0; j < 3; ++j)
{
printf("%c",a[i][j]);
n[m] = a[i][j];
m++;
}
printf("\n");
}
n[9] = '\0';
printf("%s\n",n);
return 0;
}
3.数字转换为字符串
#include <stdio.h>
void intToString(int num, char *str) {
int i = 0;
int isNegative = 0;
// 处理负数
if (num < 0) {
isNegative = 1;
num = -num; // 将负数转为正数
}
// 转换整数为字符串
do {
str[i++] = (num % 10) + '0'; // 获取当前数字并转换为字符
num /= 10; // 去掉当前的最后一位数字
} while (num > 0);
// 如果是负数,添加负号
if (isNegative) {
str[i++] = '-';
}
// 添加字符串结束符
str[i] = '\0';
// 反转字符串
for (int j = 0; j < i / 2; j++) {
char temp = str[j];
str[j] = str[i - j - 1];
str[i - j - 1] = temp;
}
}
int main() {
int number = -12345; // 示例整数
char str[20]; // 确保足够大以存放转换结果
intToString(number, str); // 调用转换函数
printf("整数转换的字符串为:%s\n", str); // 输出结果
return 0;
}
4.统计一行字符串中单词的个数
#include <stdio.h>
int main()
{
char a[] = "hello world my man!";
char *pa = a;
int count = 0;
int inWord = 0; // 用于跟踪是否在单词内部
while (*pa != '\0') // 直到字符串的结尾
{
if (*pa == ' ' || *pa == '\t' || *pa == '\n') // 如果是空格、制表符或换行符
{
inWord = 0; // 不在单词内部
}
else
{
if (inWord == 0) // 进入一个新单词
{
count++;
inWord = 1; // 现在在单词内部
}
}
pa++; // 移动到下一个字符
}
printf("单词的数量为:%d\n", count);
return 0;
}
5.删除数组中相同的数
#include <stdio.h>
#include <stdlib.h>
void del(int *a, int size) {
int *temp = (int*)malloc(size * sizeof(int)); // 临时数组,用于存储去重后的结果
int pre = 0;
int rear = 1;
int j = 0;
// 第一个元素肯定是要保留的
temp[j++] = a[pre];
// 遍历数组
while (rear < size) {
if (a[pre] != a[rear]) { // 如果当前元素和前一个元素不同
temp[j++] = a[rear]; // 保存不重复的元素
pre = rear; // 更新前指针
}
rear++; // 后指针继续前进
}
// 输出去重后的数组
printf("去重后的数组: ");
for (int i = 0; i < j; i++) {
printf("%d ", temp[i]);
}
printf("\n");
free(temp); // 释放动态分配的内存
}
int main() {
int a[] = {1, 1, 1, 2, 2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8, 9, 9, 9};
int size = sizeof(a) / sizeof(a[0]); // 计算数组大小
del(a, size); // 调用函数删除重复元素
return 0;
}