字符和字符串

字符:字符以数值(ASCII码)存在电脑里,这个数字是二进制数

char ch=' 0 ',ch存的值是字符0,对应值48;  char ch=0,ch存的值是数字0,对应值0

字符串 :字符串就是一个字符数组,只是在数组最后加了一个反斜杠\0,标志者读取结束

获取字符:  ch=getch();不带回显,意思是你输入的值电脑接收到但不会显示     (  conio.h库文件)

                  ch=getche();带回显,意思是你输入一个他就接收并返回,并且不用回车

获取字符串: scanf(),格式转换符用%s,遇到\n获取停止,获取中遇到空格、tab认为需要获取内                            容结束(刚开始就有空格的话会一直读到有非空格为止), 但是会有缓冲区溢出问                     题,可以在%s中间加入限定长度,如%5s

                        gets ();无限获取字符串,遇到回车停止,但会将回车扔掉与scanf不同

                        fgets( str, 10  ,stdin) 可以规定输入的字符长度,不会出现溢出,但第十个就是\0

打印字符串:printf("%s", str)   后面不会自动换行

                      puts ( str );   后面会自动加换行符

做题太晚,没时间写了

习题1

#include <stdio.h>

int main()
{	
	int num;
	char arr[30]={"nihaoshijie"};
	//printf("%c", arr[3]);                字符串在数组中也是一个字符一个地址在存 
	num=count(arr);
	printf("%d个字母", num);

	return 0;
}

int count(char *p)
{
	int ret=0,i;
	//printf("%c", p[3]);
	for(i=0;;i++)
	{	
		ret++;
		p++;
		printf("%c", *p);
		if(*p=='\0')
			break;
	}
	//printf("%d", ret);
	return ret;
}

习题2

#include <stdio.h>
char *fun(char *p);
int main()
{
 	char arr[50]={"gdajih sjdn dv"};                 //简单定义,已经实现功能 
 	char *pum;
 	pum=fun(arr);
 	printf("%s", pum);
 	
	return 0; 
} 

char *fun(char *p)
{
	int i;
	while(*p!=' ')     //循环单个字符读取 
	{
		p++;
		i++;
		if(i>49)         //当超过数组范围时指向空 
			p=NULL;
	}	
			
	return p;
}

习题3

#include <stdio.h>

int main()
{
	printf("请输入一串字母,不重复:");
	char arr[30];
	char *pum;
	int i,j,count=0;
	while((arr[i]=getchar())!='\n')
	{
		i++;                       //给数组赋值 
		count++;					//统计输入字符数量 
	}
	pum=arr;	
	puts(pum);
	printf("%d个字符\n", count);
	char temp;
	for	(i=0;i<count-1;i++)
		{
			pum=arr;	
			for(j=0;j<count-1-i;j++)
			{
				if(*pum>*(pum+1))
				{
					temp=*(pum+1);    //实现交换功能 
					*(pum+1)=*pum;
					*pum=temp;	
				}
				pum++;	
			}
		}				
	printf("%s",arr);
//	puts(pum);  效果跟printf不一样 
	return 0;
}

习题4

#include <stdio.h>

int main()
{
	char arr[50],b[50]={0};
	char a[10]={0}; 
	int i,ret;
	printf("请输入一串连续字符\n");
	scanf("%s",arr);                   //给数组赋值 ,调试发现scanf获取字符串时如果刚开始就有空格会跳过,直到读到字符,但再遇到空格就会停止 
//	puts(arr);
	for(i=0;i<50;i++)
	{
		printf("%d", isdigit(arr[i]));
		if((isdigit(arr[i]))==1&&(isdigit(arr[i+1]))==1)          //判断是否为数字且连续 
		{	
			//b[i-1]='\0';
			b[i]=arr[i];
			b[i+1]=arr[i+1];
			i+1;								//这步很重要,不然无法存储两位数 
		}					
	}
	printf("%\n");
	for(i=0;i<50;i++)
		printf("%c",b[i]);                 //打印出来看一下 ,到这是将所有连续数找出来了 
		
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值