字符串处理典型程序
1. 从键盘输入一个字符串存入数组a中,再将数组a的内容前后倒置后存入数组b中并输出。
#include <string.h>
main()
{char a[80],b[80];
int n,i;
gets(a);
n=strlen(a);
for(i=0;i<=n-1;i++)
b[i]=a[n-1-i];
b[n]='\0'; /*或b[i]='\0';*/
puts(b);
}
2. 从键盘输入一个字符串存入数组a中,再将a的内容前后倒置后重新存入数组a中并输出。
解法1:
#include <string.h>
main()
{char a[80],t;
int n,i,j;
gets(a);
n=strlen(a);
i=0;j=n-1;
while(i<j)
{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/
i++;j--;
}
puts(a);
}
解法2:
#include <string.h>
main()
{char a[80],t;
int n,i;
gets(a);
n=strlen(a);
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} /*交换对应元素*/
puts(a);
}
3. 从键盘输入10字符串处理函数 如果是a展示b个字符串存入二维字符数组中,求出其中最大者并输出。
#include <string.h>
main()
{char a[10][80],max[80];
int i;
for(i=0;i<10;i++)
gets(a[i]); /*a[i]代表a的第i行*/
strcpy(max,a[0]);
for(i=1;i<10;i++)
{if(strcmp(a[i],max)>0)
strcpy(max,a[i]);
}
puts(max);
}
4. 从键盘输入一个字符串存入字符数组中,求出该字符串的长度并输出(不能调用strlen函数)。
#include <string.h>
main()
{char a[80];
int n;
gets(a);
n=0;
while(a[i]!='\0')
n++;
printf("n=%d\n",n);
}
5. 从键盘输入一个字符串存入数组a中,再将数组a的内容复制到数组b中并输出(不能调用strcpy函数)。
解法1:
#include <string.h>
main()
{char a[80],b[80];
int i,n;
gets(a);
n=strlen(a);
for(i=0;i<=n;i++) /*包括'\0'在内*/
b[i]=a[i];
puts(b);
}
解法2:
#include <string.h>
main()
{char a[80],b[80];
int i,n;
gets(a);
for(i=0;a[i]!='\0';i++)
b[i]=a[i]; /*未复制'\0'*/
a[i]='\0';
puts(b);
}
6. 从键盘输入两个字符串分别存入字符数组a和b中,再将b中的字符串连接到a中字符串之后并输出(不能调用strcat函数)。
#include <string.h>
main()
{char a[80],b[30];
int i,n1,n2;
gets(a);
gets(b);
n1=strlen(a);
n2=strlen(b);
for(i=0;i<=n2;i++) /*包括'\0'在内*/
a[n1+i]=b[i];
puts(a);
}
7. 从键盘输入两个字符串分别存入字符数组a和b中,比较两个字符串的大小并输出结果(若a>b,则结果大于0;若a<b,则结果小于0;若a=b,则结果等于0。不能调用strcmp函数)。
#include <string.h>
main()
{char a[80],b[80];
int i,r;
gets(a);
gets(b);
i=0;
while(a[i]!='\0'&&b[i]!='\0') /*若遇到'\0',则停止比较*/
{if(a[i]==b[i])
i++; /*若对应字符相等,则继续比较下一个*/
else
break; /*若对应字符不相等,则停止比较*/
}
r=a[i]-b[i];
printf("r=%d\n",r);
}
8. 从键盘输入的一行字符,统计其中单词的个数。假设单词之间以空格分隔。
#include <string.h>
main()
{char a[80];
int i,n,c=0;
gets(a);
n=strlen(a);
for(i=0;i<=n-1;i++)
{if(a[i]!=''&&(a[i+1]==' '||a[i+1]=='\0'))
c++; /*第i个字符不是空格,第i+1个字符是空格或'\0',表示一个单词结束*/
}
printf("c=%d\n",c);
}
9. 从键盘输入一行字符,统计其中单词的个数。假设单词之间以标点或空格分隔。
#include <ctype.h>
#include <string.h>
main()
{char a[80];
int i,n,c=0;
gets(a);
n=strlen(a);
for(i=0;i<=n-1;i++)
{if(isalpha(a[i])&&!isalpha(a[i+1]))
c++; /*或if(isalpha(a[i])!=0&&isalpha(a[i+1])==0)*/
} /*第i个字符是字母,第i+1个字符不是字母,表示一个单词结束*/
printf("c=%d\n",c);
}
10. 从键盘输入一行字符,按下列规则加密之后输出。
A→Z a→z
B→Y b→y
C→X c→x
......
Z→A z→a
#include <string.h>
main()
{char a[80];
int i,n;
gets(a);
n=strlen(a);
for(i=0;i<=n-1;i++)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论