《算法笔记》基础知识汇总(3)

1.memset 对数组中每一个元素赋相同的值

使用memeset要在程序开头添加 string.h 头文件,只建议用其来赋0或者-1

如果要对数组赋其他值,使用fill函数(第六章)

memset使用格式:memset(数组名,初值,sizeof(数组名))

memset(a,-1,sizeof(a));
	for(int i=0;i<5;i++){
		printf("%d ",a[i]);
	}

 

2.字符数组

字符数组初始化

方法一: 一个一个字符赋值

#include<stdio.h>
int main(){
	char str[15]={'g','o','o','d',' ','j','o','b'};
	for(int i=0;i<10;i++){
		printf("%c",str[i]);
	}
	return 0;
}

方法二:字符数组也可以通过直接赋值字符串来初始化(仅限于初始化。其他位置不允许这样直接赋值)

	char str[15]={"good job"};

字符数组的输入输出

scanf 和 printf

#include<stdio.h>
int main(){
//	char n;
	char str[10];
	scanf("%s",str);
//	scanf("%c",&n);
	printf("%s\n",str);
//	printf("%c\n",n);
	return 0;
}

 

疑问:怎么输出单个字符后再输出字符串???

scanf 对字符类型有两种形式: %c 和 %s

%c是单个字符,可以输出 空格

%s是字符串,以空格为结束标志

 

getchar 和 putchar

用来输入输出单个字符

#include<stdio.h>
int main(){
	char str[5][5];//5行5列的数组范围,但实际用不到这么多也可以 
	for(int i=0;i<3;i++){
		for(int j=0;j<3;j++){
			str[i][j]=getchar();
		}
		getchar();//把输入每行末尾的换行符吸收掉 (针对i循环来说) 
	}
	for(int i=0;i<3;i++){
		for(int j=0;j<3;j++){
			putchar(str[i][j]);
		}
		putchar('\n');//一个i大循环结束后换行 
	}
	return 0;
}

注意:输入每一轮(行)结束时要用getchar()来吸收空格。

          输出每一轮(行)结束时换行要用putchar('\n') , 注意是单引号。

 

gets 和 puts

用来输入输出一行字符串,将其存放在(输出)在一维数组或二维数组的一维中。

#include<stdio.h>
int main(){
	char str 1[20];
	char str 2[5][10];
	gets(str 1);//将第一个字符串存入字符数组str1 
	for(int i=0;i<3;i++){
	//通过for循环,将后三个字符串存入str 2[0] ,str 2[1],str 2[2]
		gets(str 2[i]);
	}
	puts(str 1);
	for(int i=0;i<3;i++){
		puts(str 2[i]);
	}
	return 0;
} 

程序有问题:待解决???

 

字符数组的存放方式

开字符数组的时候至少比实际长度多1,因为又结束符"\0"

疑惑如下:

 

3.string.h头文件 包含了很多字符数组的函数

strlen()  获得字符数组的长度(注意空格长度为1)

格式: strlen(数组名)

#include<stdio.h>
#include<string.h>
int main(){
	char str[10];
	gets(str);
	int len=strlen(str);
	printf("%d\n",len);
	return 0;
}

 

strcmp() 函数:返回两个字符串大小,按照字典序比较(例如a的字典序是32)

strcmp(字符数组1,字符数组2)

返回结果:

 

strcpy() 函数:把一个字符串赋值给另一个字符串(包含结束符  '\0'  )

格式: strcpy(字符数组1,字符数组2)    //把数组2的值赋值给数组1 

 

strcat() 函数: 把一个字符串接到另一个字符串后面

格式: strcat(字符数组1,字符数组2)   //把字符数组2接到字符数组1后面

 

sscanf 和 sprintf 是处理字符串问题的利器

sscanf(str,"%d",&n); //把字符数组str中的内容以 %d 的格式写入到n           从前往后赋值

sprintf(str,"%d",n);   //把 n 以%d 的格式写入到str字符数组中                      从后往前赋值

 

sscanf 例:不要忘了是两个s

#include<stdio.h>
int main(){
	int n;
	char str[100]="123";
	sscanf(str,"%d",&n);
	printf("%d\n",n);
	return 0;
}

sprintf 例: sprintf 好像是一个存储作用,把数据存到str数组后,最终还是要printf输出

int main(){
	int n=2333;
	char str[100];
	sprintf(str,"%d",n);
	printf("%s\n",str);
	return 0;
}

加强版sscanf例子:

#include<stdio.h>
int main(){
	int n;
	double db;
	char str[100]="2048:3.14:hello";
	char str2[100];
	sscanf(str,"%d:%lf,%s",&n,&db,str2);
	printf("n=%d,db=%.2f,str2=%s\n",n,db,str2);
	return 0;
}

程序有问题,那个hello这么回事???

 

加强版sprintf 例子:

#include<stdio.h>
int main(){
	int n=12;
	double db=3.1415;
	char str[100],str2[100]="good";
	sprintf(str,"%d:%.2f,%s",n,db,str2);
	printf("str=%s\n",str);
	return 0;
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值