算法学习

getchar和putchar

getchar用于输入单个字符,putchar用于输出单个字符

1
2
3
char c;
c=getchar();
putchar(c);

常见的math函数

使用math内置函数需要添加头文件

1
2
3
4
5
6
7
8
9
fabs(double x);  //取x的绝对值
floor(double x); //向上取整
ceil(double x); //向下取整
pow(double r,double p) //返回r的p次方
sqrt(double x); //返回x的算术平方根
log(double x); //返回ln(x)
sin(double x); //返回正弦值,要求x为弧度制
acos(double x); //返回反余弦值,pi=acos(-1);
round(double x); //对x进行四舍五入取整

memset函数

memset用于对数组中的每一个元素赋予相同的值(0或-1),下面的这个函数即是对数组a的元素全部赋予0的操作
memset(a,0,sizeof(a));

对字符数组的输入输出

scanf和printf

scanf(“%c”,&c)用于输入单个字符,scanf(“%s”,s)用于输入字符数组,%s识别空格作为字符串的结尾

1
2
3
char str[10];
scanf("%s",str); //输入TAT TAT
printf("%s",str); //输出TAT

gets和puts

gets用于输入一行字符串,以’\n’作为识别结尾,puts用于输出一行字符串并自动换行

1
2
3
char str[10];
gets(str);
puts(str);

cstring的使用

使用string类的内置函数需要包含头文件

strlen()

strlen()函数用于获取字符串的长度

1
2
3
char str[10];
gets(str)
int len=strlen(str); //获取字符串的长度

strcmp()

strcmp(str1,str2)函数用于比较2个字符串的大小(按照字典序),返回一个整数,若str1>str2,则返回一个正整数,若str1<str2,则返回一个负整数,若str1=str2,则返回0。示例如下:

1
2
3
4
char str1[10],str2[10];
gets(str1); //Dear
gets(str2); //Cat
strcmp(str1,str2) //返回一个正整数

strcpy()

strcpy(str1,str2)函数可以把str2复制给str1

1
2
3
4
5
char str1[50],str2[50];
gets(str1); //Hello
gets(str2); //World
strcpy(str1,str2);
puts(str1); //World

strcat()

strcat(str1,str2)函数可以将str2接到str1后面

1
2
3
4
5
char str1[50],str2[50];
gets(str1); //Hello
gets(str2); //World
strcat(str1,str2);
puts(str1); //HelloWorld

sscanf和sprintf

sscanf和sprintf是处理字符串的利器,可以理解为string+scanf(printf),其基本格式为:sscanf(str,”%d”,&n);sprinf(str,”%d”,n);

简单用法

sscanf的用法是把字符数组str里的内容以”%d”的格式写入n中,而sprintf是把n的内容写入str中,示例如下

1
2
3
4
5
char str[50],str1[50]="123";
int n,m=100;
sscanf(str1,"%d",&n);
sprintf(str,"%d",m);
printf("%d\n%s",n,str); //n=123,str='100'

进阶用法

不仅如此,sscanf和sprintf还可以进行复杂的输入输出,如下列代码所示

1
2
3
4
int n;double db;
char str[50],str1[50]="2020:3.14,sscanf";
sscanf(str1,"%d:%lf,%s",&n,&db,&str);
printf("%d\n%.2f\n%s\n",n,db,str); //n=2020,db=3.14,str=sscanf
1
2
3
4
int b=2020;double db=3.14;
char str[100],str1[100]="sprintf";
sprintf(str,"%d:%.2f,%s",b,db,str1);
printf("%s",str); //str=2020:3.14,sprintf