c语言经典100例

1.字符串转为数字

cpp 复制代码
#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.二维字符数组转一维数组

cpp 复制代码
#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.数字转换为字符串

cpp 复制代码
#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.统计一行字符串中单词的个数

cpp 复制代码
#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.删除数组中相同的数

cpp 复制代码
#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;
}

6.移动字符串中的内容

cpp 复制代码
#include <stdio.h>

void moveBack(int m, char *p)
{
	char temp[24];  // 临时数组用于保存前 m 个字符
	int n = 0;      // 用于计算字符串长度

	// 手动计算字符串长度
	while (p[n] != '\0') {
		n++;
	}

	if (m > n) m = n;  // 确保 m 不会大于字符串的长度

	// 复制前 m 个字符到 temp 中
	for (int i = 0; i < m; ++i) {
		temp[i] = p[i];
	}

	// 将后面的字符向前移动
	for (int i = m; i < n; ++i) {
		p[i - m] = p[i];
	}

	// 将 temp 中的前 m 个字符放到末尾
	for (int i = 0; i < m; ++i) {
		p[n - m + i] = temp[i];
	}

	// 重新设置字符串的结尾
	p[n] = '\0';
}

int main() {
	char str[] = "world hello ";
	printf("前:%s\n", str);
	moveBack(6, str);
	printf("后:%s\n", str);

	return 0;
}

7.无符号整数去掉最高位

cpp 复制代码
#include <stdio.h>

unsigned int fun(unsigned int a)
{
	int b=1;
	int temp = a;
	while (temp/10>=10)
	{
		b *= 10;
		temp /= 10;
	}
	b=b *10;
	a=a%b;

	return a;
}

int main() {
	printf("%d", fun(7894));
	return 0;
}

8.打印下三角

cpp 复制代码
#include <stdio.h>

void xiasanjiao(int a[4][4])
{
	for (int i=0;i<4;++i)
	{
		for (int j=0; j <=i ; ++j)
		{
			printf("%d ",a[i][j]);
		}
		printf("\n");
	}
	
}

int main()
{
	int a[4][4] = {
		8,0,0,0,
		8,8,0,0,
		8,8,8,0,
		8,8,8,8
	};

	for (int i = 0; i < 4; ++i)
	{
		for (int j = 0; j <4; ++j)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	printf("下三角:\n");
	xiasanjiao(a);

	return 0;
}

9.移动数组中的内容

cpp 复制代码
#include <stdio.h>

void moveBack(int a[10], int m) {
	int b[10] = { 0 };

	// 复制前 m 个元素到 b
	for (int i = 0; i < m; ++i) {
		b[i] = a[i];
	}

	// 将后面的元素向前移动 m 位
	for (int i = m; i < 10; ++i) {
		a[i - m] = a[i];
	}

	// 将 b 中的元素放到数组的后 m 位
	for (int i = 0; i < m; ++i) {
		a[10 - m + i] = b[i];
	}
}

int main() {
	int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	moveBack(a, 3);
	for (int i = 0; i < 10; ++i) {
		printf("%d ", a[i]);
	}
	return 0;
}

10.删除字符串中的空格

cpp 复制代码
#include <stdio.h>

void delSpace(char* a) {
	char* original = a; // 保存原始字符串指针
	char* result = a;   // 用于存储处理后的结果

	// 遍历原始字符串
	while (*a != '\0') {
		if (*a != ' ' && *a != '\t') { // 只复制非空格和非制表符字符
			*result++ = *a; // 复制字符到结果字符串
		}
		a++;
	}
	*result = '\0'; // 添加字符串结束符
}

int main() {
	char a[] = "h  iph  o p";
	delSpace(a);
	printf("%s\n", a); // 打印处理后的字符串
	return 0;
}
相关推荐
一个会的不多的人5 分钟前
C# Solidworks二次开发:宏录制实战讲解(第二讲)
开发语言·c#
神奇夜光杯15 分钟前
Python酷库之旅-第三方库Pandas(181)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
tang138976425 分钟前
Python(包和模块)
开发语言·python
ya888g28 分钟前
信息学奥赛复赛复习19-CSP-J2023-02公路-贪心算法、向上取整、向下取整
c++·算法
ChoSeitaku35 分钟前
链表|反转链表|移除链表元素|链表的中间节点|返回倒数第k个节点|合并两个有序链表(C)
c语言·数据结构·链表
夜雨翦春韭37 分钟前
【代码随想录Day58】图论Part09
java·开发语言·数据结构·算法·leetcode·图论
纪怽ぅ43 分钟前
LSTM——长短期记忆神经网络
python·深度学习·神经网络·算法·机器学习·lstm
Justinc.44 分钟前
Flutter图片控件(七)
开发语言·flutter
czme1 小时前
C语言数组
c语言
yannan201903131 小时前
【算法】(Python)回溯算法
python·算法