C语言学习系列二十八——判断回文和字符串数组

//例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。

             

Happy\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语言将字符串作为一个特殊的一维字符数组来处理。

字符串的存储——初始化

  1. 放在一维数组中。            static  char  s [ 6 ] = {  ' H ' ,' a ' , ' p ' , ' p ' , ' y '  ,  '  \n ' };
  2. 可以使用字符串常量。       static  char  s [ 6 ] ={ " Happy " };或 static  char  s [ 6 ] =  " Happy  " ;
  3. 字符串由于有结束符’ \0 ' ,所以存储它的数组长度是字符串有效长度加一。
  4. 字符串由有效字符和' \n ' 组成。

字符串的操作

  1. 比较数组元素的值是否为' \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'把数字转换成数字字符

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值