字符串
1.sizeof字符串,数组都是其总长度而不是用了多少个,sizeof字符串会算上封尾0
2.字符串名和数组名都是指针,a[i]="math"只是让指针指向了m的地址
###字符串的打印:
char subject[20]="computer science";
printf("%s",subject);
//若写为%10.4s,则是在十个空中写出前四个字符且右对齐
//%后加-为左对齐
~~~~~~
putchar函数:每次只能put一个,用在for循环中。
~~~~~~
puts函数:puts(str);
字符串输入
1.scanf(“%s”,str),由于本身就是指针不用取地址,而且scanf时候遇到空格回车及转义字符都停止
2.getchar(),在循环中用,且注意不带参数。
监测不为换行符的情况下循环getchar
do
{
t=getchar();
a[i]=t;
i++;
}
while(t!='\n');
算数运算
处理函数
1.strcpy(des,sour),要保证终点大小要大于源大小
2.strlen监测字符串大小,没有封尾0
3.strcat(s1,s2)去掉s1封尾0,将2拼到1之后
4.strcmp按字典序进行比较
###字符串数组
1.相当于二维字符数组,会有冗余的位置
char city[][11]={"shanghai","beijing"};//二维数组中一维必须声明长度,即列数
2.字符串指针数组
char *city[]={"beijing","tianjin"}
相当于每个元素都是指向字符串的指针,此时仅一维,不再有冗余的空间
当访问其中某个元素时,就和二维数组的写法一样
将一个十六进制的转化为10进制的整数
1.注意 16进制中a表示10,b表示11,
所以遇到字母,可以用num-‘a’+10,即为其对应10进制数。
2.遇到数字字符,num-‘0’
3.再为num赋予权重,如在第三位上就要乘三次16,用for循环从头到尾处理,每轮for循环后len–,对应get到后一位的char
样貌
int i=0,j=0,num=0,sum=0;
int len=strlen(str);
while(str[i]!='\0')
{
if(str[i]>='0'&&str[i]<='9')
num=str[i]-'0';
else if(str[i]>='a'&&str[i]<='f')
num=str[i]-'a'+10;
else if(str[i]>='A'&&str[i]<='F')
num=str[i]-'A'+10;
else
break;
for(j=0;j<len-1;j++)
{
num=num*16;
}
sum+=num;
i++;
len--;
}
printf("%d",sum);
最大最小单词简略版
编写程序找出一组单词中“最小”单词和“最大”单词。
用户输入单词后,程序根据字典顺序决定排在最前面和最后面的单词。
当用户输入4个字母的单词时,程序停止读入。假设所有单词都不超过20个字母。
1.思路:先用a输入一个字符串,作为最大值和最小值,然后接着输入字符串,比较大小并对最大最小值赋值
2.注意停止标志为输入一个四字单词,故不要忘记这个单词也要比较一次,前面if(strlen!=4),后面else