学C语言这一篇就够了——C语言实践从打印输出到网络编程_1

在猫猫看来,学语言很重要的一个点就是应该知道怎么用。这是猫猫上班后,学习到的一些C语言的的练习题,从简单的输入输出,到后面UDP,TCP的网络通信。如果有写的不对或者需要补充的知识,欢迎指正。
这里一共包含9个基本应用,剩余在其他的文章里。

大家可以通过下面的链接跳到相应文章。
C语言实践第一篇基本的输入输出,基本类型,加减乘除,函数的调用
C语言实践第二篇主要是结构体,指针,内存的释放,文件的读取
C语言实践第三篇我们开始内存共享的客户端和服务端,socket通讯的服务端客户端吗,以及自定义通讯协议的客户端和服务端。

1.基本类型的打印输出

C语言基本类型:整型,字符型,浮点型,布尔,枚举,空类型。

#include <stdio.h>
#include <conio.h>

int main()
{
    int a = 123;
    printf("%d\n", a); // 输出:123
    char ch = 'A';
    printf("%c\n", ch); // 输出:A
    float f = 123.456;
    printf("%f\n", f); // 输出:123.456000
    bool b = 1; // 真
    printf("%d\n", b); // 输出:1
    enum Color { RED, GREEN, BLUE };
    printf("%d\n", RED); // 输出:0,因为枚举值通常从0开始
    printf("请点击任意键继续....\n");
    _getch();
    return 0;
}

在这里插入图片描述

2.基本类型的输入

#include <stdio.h>
#include <conio.h>

int main()
{
	int iNum1 = 3;
	char acStr[10];
	double dNum2 = 3.14;

	printf( "请依次输入整数 字符串 浮点数:\n" );
	scanf( "%d %s %f", &iNum1, &acStr, &dNum2 );
	printf( "%d\n", iNum1 );
	printf( "%s\n", acStr );
	printf( "%.2lf\n", dNum2 );
	printf( "请点击任意键继续...." );
	_getch();

	return 0;
}

在这里插入图片描述

3.基本运算

加减乘除

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <conio.h>
int main()
{
	int iNum1 = 8;
	int iNum2 = 7;
	double dNum1 = 6.67;
	double dNum2 = 2.12;

	printf( "%d + %d = %d \n", iNum1, iNum2, iNum1 + iNum2 );
	printf( "%d - %d = %d \n", iNum1, iNum2, iNum1 - iNum2 );
	printf( "%d * %d = %d \n", iNum1, iNum2, iNum1 * iNum2 );
	printf( "%d / %d = %d \n", iNum1, iNum2, iNum1 / iNum2 );

	printf("%.2f + %.2f = %.2f \n", dNum1, dNum2, dNum1 + dNum2);
	printf("%.2f - %.2f = %.2f \n", dNum1, dNum2, dNum1 - dNum2);
	printf("%.2f * %.2f = %.2f \n", dNum1, dNum2, dNum1 * dNum2);
	printf("%.2f / %.2f = %.2f \n", dNum1, dNum2, dNum1 / dNum2);
	printf( "请点击任意键继续...." );
	_getch();
	return 0;
}

在这里插入图片描述

4. if判断

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
	int iGrade = 0;
	
	while (true) {
		scanf("%d", &iGrade);
		if (90 <= iGrade && 100 > iGrade)
		{
			printf("%d分,优秀\n", iGrade);
		}
		else if (80 <= iGrade && 90 > iGrade)
		{
			printf("%d分,良好\n", iGrade);
		}
		else if (70 <= iGrade && 80 > iGrade)
		{
			printf("%d分,一般\n", iGrade);
		}
		else if (60 <= iGrade && 70 > iGrade)
		{
			printf("%d分,及格\n", iGrade);
		}
		else if (0 <= iGrade && 60 > iGrade)
		{
			printf("%d分,不及格\n", iGrade);
		}
		else
		{
			printf("分数不在范围内\n");
		}
	}
	
	printf( "请点击任意键继续...." );
	_getch();
	return 0;
}

在这里插入图片描述

5.for循环

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
	int iSum = 0;

	for ( int i = 1; 100 >= i; i++ )
	{
		iSum += i;
	}
	printf( "1加到100 = %d\n", iSum );
	printf( "请点击任意键继续...." );
	_getch();

	return 0;
}

在这里插入图片描述

6.while do AND do while

两个i的初始量,不同。while do是先做判断,在做,而do while是先做在判断,这是要注意的一点。

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
	int i = 1;
	int iSum = 0;

	while (100 >= i)
	{
		iSum += i;
		i++;//这里应该注意i++的位置
	}
	printf("1加到100 = %d\n", iSum);
	printf("请点击任意键继续....");
	_getch();

	return 0;
}
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <conio.h>

int main()
{
	int i = 0;
	int iSum = 0;
	do {
		iSum += i;
		i++;
	} while( 100>=i );
	printf( " 1加到100结果为%d \n", iSum );
	_getch();

	return 0;
}

在这里插入图片描述

7.swich case语句

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
	char cLetter;

	scanf( "%c", &cLetter );
	switch ( cLetter )
	{
	case 'a':
		printf( "%c\n", cLetter - 32 );
		break;
	case 'b':
		printf( "%c\n", cLetter - 32 );
		break;
	case 'c':
		printf( "%c\n", cLetter - 32 );
		break;
	default:
		printf( "default\n" );
	}
	printf("请点击任意键继续....");
	_getch();

	return 0;
}

在这里插入图片描述

8.字符串的操作

C语言中对字符串的操作主要依赖于标准库中的字符串处理函数,这些函数定义在<string.h>头文件中。以下是一些常用的字符串操作及其简要说明:
(温馨提醒:这些都不用记忆,使用的时候查一下就好,这里只是为了展示,但里面有些,猫自己都没怎么用。大家看看就好。)

  • strcpy(s1, s2):复制字符串。将s2所指向的字符串复制到s1所指向的内存空间,包括\0结束符。

  • strncpy(s1, s2,
    n):复制字符串的前n个字符。将s2所指向的字符串的前n个字符复制到s1所指向的内存空间,包括\0结束符,如果s2不足n个字符,则s1以\0填充。

  • strcat(s1, s2):连接字符串。将s2所指向的字符串连接到s1所指向的字符串的末尾。

  • strncat(s1, s2, n):连接字符串的前n个字符。将s2所指向的字符串的前n个字符连接到s1所指向的字符串的末尾。

  • strcmp(s1, s2):比较字符串。比较s1和s2所指向的字符串,返回值根据比较结果不同而不同。

  • strncmp(s1, s2, n):比较字符串的前n个字符。比较s1和s2所指向的字符串的前n个字符。

  • strlen(s):计算字符串长度。返回s所指向的字符串的长度,不包括\0结束符。

  • strchr(s, c):查找字符。在s所指向的字符串中查找字符c第一次出现的指针。

  • strrchr(s, c):查找字符的最后一次出现。在s所指向的字符串中查找字符c最后一次出现的指针。

  • strstr(s1, s2):查找子字符串。在s1所指向的字符串中查找子字符串s2第一次出现的指针。

  • strtok(s1, s2):分割字符串。使用s2中的分隔符分割s1所指向的字符串,并返回第一次分割后子串的指针。

  • strdup(s):复制字符串。动态分配内存并复制s所指向的字符串到新分配的内存中。

  • memset(s, c, n):设置内存。将s所指向的内存的前n个字节设置为字符c。

  • memcpy(s1, s2, n):复制内存。从s2所指向的内存复制n个字节到s1所指向的内存。

  • memmove(s1, s2, n):复制内存,允许重叠。从s2所指向的内存复制n个字节到s1所指向的内存,即使它们重叠。

  • memcmp(s1, s2, n):比较内存。比较s1和s2所指向的内存的前n个字节。
    下面是实例代码:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <conio.h>

int main()
{
	
	char acStr1[] = "Hello";//初始字符串
	char acStr2[] = {'W','o','r','l','d','\0'};
	char acStr3[10];
	int iLen = 0;
	iLen = strlen( acStr1 );//获取字符串acStr1长度

	printf( "acsStr:Hello的长度为:%d\n", iLen );
	strcpy( acStr3, acStr2 );//将字符串acStr2拷贝到acStr3
	printf( "拷贝world:%s\n", acStr3 );
	if (0 != strcmp(acStr1, acStr2))//比较字符串
	{
		printf( "比较Hello和Wworld: 不相等\n" );
	}
	if (0 == strcmp(acStr2, acStr3))
	{
		printf( "比较world和World: 相等\n" );
	}
	strcat(acStr1, acStr2);//将字符串acStr1和acStr2拼接
	printf( "拼接Hello和World: %s\n", acStr1 );
	char* pcPointer = strstr(acStr1, acStr3);//查找字符串
	printf( "在Helloworld查找world字串: %s\n", pcPointer);
	printf( "请点击任意键继续...." );
	_getch();

	return 0;
}

在这里插入图片描述

9.有参和无参函数的调用

无参函数

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <conio.h>

void Prantf()
{
	printf( "Hello World!\n" );
}

int main()
{
	Prantf();
	printf( "请点击任意键继续...." );
	_getch();

	return 0;
}

在这里插入图片描述

有参函数

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <conio.h>

void Toggle_Case( char cLetter )
{
	if ( 'A' <= cLetter && cLetter <= 'Z' )
	{
		cLetter += 32;
	}
	else if ( 'a' <= cLetter && cLetter <= 'z' )
	{
		cLetter -= 32;
	}
	else
	{
		printf( "输入的不是字母...." );
		return;
	}

	printf( "%c\n", cLetter );
}

int main()
{
	char cLetter;
	scanf( "%c", &cLetter );
	Toggle_Case( cLetter );
	_getch();

	return 0;
}

在这里插入图片描述
有返回值函数的调用

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <conio.h>

int Sum(int iNum1, int iNum2);

int main()
{
	int iSum=0;
	int iNum1;
	int iNum2;

	scanf( "%d %d",&iNum1, &iNum2 );
	iSum = Sum( iNum1, iNum2 );
	printf( "iSum=%d", iSum );
	printf( "请点击任意键继续...." );
	_getch();

	return 0;
}

int Sum(int iNum1, int iNum2)
{
	int iSum = 0;
	iSum = iNum1 + iNum2;
	return iSum;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值