//例7-11
//判断回文,例“abcba"是回文;”abcdba"不是回文。
#include<stdio.h>
int main()
{
int i,k;
char line[80];
printf("Enter a string: ");
k=0;
while((line[k] =getchar())!='\n')
k++;
line[k]='\n';
i=0;
k=k-1;
while(i<k){
if(line[i]!=line[k])
break;
i++;
k--;
}
if(i>=k)
printf("It is a palindrome\n");
else
printf("It is not a palidrome\n");
return 0;
}
Enter a string: abcba
It is a palindrome
一维字符数组
用于存放字符型数据,定义形式:
char str [80];
初始化形式:
char t [5] ={ ' H ' ,' a ' , ' p ' , ' p ' , ' y ' };
static char s [ 6 ] = { ' H ' ,' a ' , ' p ' , ' p ' , ' y ' , ' \n ' }; ——前五个元素赋初值,其余元素为0。
H | a | p | p | y | \0 |
s[0] | s[1] | s[2] | s[3] | s[4] | s[5] |
循环语句输出数组t的所有元素:
for(i=0; i<5 ;i ++)
putchar( t [ i ] );
字符串
- 字符串常量是用一对双引号括起来的字符序列,结束标志是'\n'。字符串”Happy"是由六个字符组成,分别是 H ' ,' a ' , ' p ' , ' p ' , ' y ' , ' \n '。H ' ,' a ' , ' p ' , ' p ' , ' y ' 是有效字符,' \n '是字符串结束符。
- 字符串的有效长度是有效字符的个数。字符串”Happy"的有效长度是5。
- C语言将字符串作为一个特殊的一维字符数组来处理。
字符串的存储——初始化
- 放在一维数组中。 static char s [ 6 ] = { ' H ' ,' a ' , ' p ' , ' p ' , ' y ' , ' \n ' };
- 可以使用字符串常量。 static char s [ 6 ] ={ " Happy " };或 static char s [ 6 ] = " Happy " ;
- 字符串由于有结束符’ \0 ' ,所以存储它的数组长度是字符串有效长度加一。
- 字符串由有效字符和' \n ' 组成。
字符串的操作
- 比较数组元素的值是否为' \0 ',来决定是否结束循环。
字符串存储
static char s [80] ; s [0]='a'; s [1]='\0';
等价于
static char s [80] ="a";
2.区分"a"和'a'。前者是字符串常量,包括'a'和’\n'。后者是字符常量。
使用字符串编程
//例7-12
//统计字符串中数字字符的个数
#include<stdio.h>
int main()
{
int count,i;
char str [80];
printf("Enter a string: ");
i=0;
while((str[i] = getchar())!='\n')
i++;
str[i]='\0'; //不能省,将结束符存入最后一个地址
count=0;
for(i=0; str[i]!='\0'; i++) //循环条件:不等于'\n'
if(str[i] <= '9'&&str[i] >='0')
count++;
printf("count=%d\n",count);
return 0;
}
Enter a string: It/s512h
count=3
//例7-13
//提取数字字符中的数字字符转换成数字
#include<stdio.h>
int main()
{
int i,number;
char str[10];
printf("Enter a string: ");
i=0;
while((str[i]=getchar())!='\n')
i++;
str[i]='\0';
number=0;
for(i=0; str[i]!='\0'; i++)
if(str[i]>='0'&&str[i]<='9') //数字字符
number=number*10+str[i]-'0'; //转换成数字
printf("digit=%d\n",number);
return 0;
}
Enter a string: a123d3
digit=1233
ch='0'~'9' 运算时ch-'0'把数字字符转换成数字
val=0~9 运算val+'0'把数字转换成数字字符