题目:
从键盘输入一个字符串,删除该字符串的所有首部和尾部数字字符,输出修改后的字符串以及该字符串的长度(限定在一个数组内进行)
说明:
数组长度可定义为50或100,输出的时候统一写成
printf("%s* %dn", a, strlen(a));//a是数组名,数组名可任意命名
举例:
输入的字符串为:
,删除首部和尾部数字字符后字符串变成:
,长度为
如何用C语言实现?
#include <stdio.h>
#include <string.h>
int main(){
char a[100];//定义长度为100的数组
int i,n;
printf("Please enter a string:n");
scanf("%s",a);//从键盘接收字符
n=strlen(a);//获得a的长度,注意最后一个是'0'是字符串结尾标记,故而for循环的时候要n--
for(n--;a[n]>='0' && a[n]<='9';n--);
/*从单词的最后第一个字母往前依次循环判断是否为数字,如果是什么也不做。*/
a[n+1]='0';//如果从后往前第n的字母不是数字,那么就将n+1标记为字符串结尾
for(i=n=0;a[n]>='0' && a[n]<='9';n++);
/*从单词字母的第一个字母往后依次循环判断是否为数字,如果是什么也不做。*/
while(a[i++]=a[n++]);
/*循环,将第一个字母(非数字)给a0,第二个给字符(无论是不是数字)给a1*/
printf("%s* %dn", a, strlen(a));
/*
输出的时候遇见'0'就会结束,保证了尾部的数字不被输出,并且strlen(a)从左往右读取遇见'0'停止
且'0'不算字符
删除前:
'1' '2' 'a' '5' 'b' 'c' '3' '4' '0'
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8]
删除后:
'a' '5' 'b' 'c' '0' 'c' '3' '4' '0'
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8]
*/
return 0;
}