三道C语言字符串操作的笔试题

对一个字符串重新排列,字母排在前面,数字排在后面,并不改变原来字母之间以及数字之间的字符顺序。

#include 
#include 
#include 
#define N 30
/***********************************************
*函数名称: fun
*创建时间: 2010.12.5
*描    述: 对一个字符串重新排列,字母排在前面,数字排在后面,并不改变原来字母之间以及数字之间的字符顺序。
*参    数: char * s,int *m
*返 回 值: chLetter(数组chLetter[]的首元素地址)
*局部变量: char chLetter[N];
*			char chNumber[N];
*			int i,j,k;
************************************************/
char * fun(char * s,int *m)				//参数m是通过调试才想到的
{
	char chLetter[N];	//用来存放字母
	char chNumber[N];	//用来存放数字
	int i,j,k;
	i=0;	//初始化
	j=0;	//j用来记录字母的个数
	k=0;	//k用来记录数字的个数
	for (i=0; i= 'A' && s[i] <= 'Z'			//将字母存入chLetter[]
			|| s[i] >= 'a' && s[i] <= 'z')
		{
			chLetter[j]=s[i];
			j++;
		}
		if (s[i] >= '0' && s[i] <='9')			//将数字存入chNumber[]
		{
			chNumber[k]=s[i];
			k++;
		}
	}
	chLetter[j]='';
	chNumber[k]='';
	*m=j+k;										//用来返回最后输入和输出时字符的个数
	strcat(chLetter,chNumber);
	return chLetter;
}
//主函数
void main()
{
	char s[N];
	int i;
	int m;	
	char *p;
	p=NULL;
	printf("请输入字符串(30字符以内):n");
	scanf("%s",s);
	p=fun(s,&m);					//刚开始没定义出这个m来现限制指针p所指数组的长度就出现了后面两个字符乱码
	for (i=0; i

将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换为t2所指字符串。

    
#include 
#include 
#include 
#define N 30    //s所指字符串的最大长度
#define T 2     //t1和t2所指字符串的长度
 
/***********************************************
*函数名称: fun
*创建时间: 2010.12.5
*描    述: 将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换为t2所指字符串
*参    数: char * s,char * t1, char * t2,int *m
*返 回 值: w(数组w[]的首元素地址)
*局部变量: char w[N];
*           char temp[T];
*           char t1temp[T];
*           int i,j,k,l;
************************************************/
char * fun(char * s,char * t1, char * t2,int *m)    //m的作用和第一题一样,没m最后两个字符会乱码(想寻求其他方法)      
{
    char w[N];              //用来存放处理后的字符串
    char temp[T];       //用来存放从s所指字符串中截取的子串
    char t1temp[T];     //用来存放t1所指字符串
    int i,j,k,l;
    //向t1temp中存入t1所指字符串
    for (i=0; i=k && i<(k+T))      //在找到的k点处开始换值
        {
            w[i]=t2[j];             //换值
            j++;
        }
        else
        {
            w[i]=s[i];
        }
    }
     
    return w;
}
 
//主函数
void main()
{
    char s[N];
    char t1[T];
    char t2[T];
    int i;
    int m;
    char *p;
 
    p=NULL;
    printf("请输入字符串(20字符以内):");
    scanf("%s",s);
    printf("请输入将要被替换的子字符串(仅限两个字符):");
    scanf("%s",t1);
    printf("请输入将要用来替换的字字符串(仅限两个字符):");
    scanf("%s",t2);
    p=fun(s,t1,t2,&m);                 
    for (i=0; i

将s所指的字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
#include 
#include 
#include 
 
#define N 30
/***********************************************
*函数名称: fun
*创建时间: 2010.12.6
*描    述: 将s所指的字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
*参    数: char * s,int * m
*返 回 值: return t,(t为指向数组的指针)
*局部变量: char * t;
*           char temp[N];
*           int i,j=0;
************************************************/
 
char * fun(char * s,int * m)
{
    char * t;
    char temp[N];                   //临时的数组,用来存放t所指的数组
    int i,j=0;
     
    t=temp;
    for (i=0; i
摘自:http://www.nowamagic.net/librarys/veda/detail/842



你可能感兴趣的:(C/C++)