/*考虑到你可能不会使用C/C++的库函数,我的这个代码没有使用库函数,所有功能都是直接实现的,同时,我故意留下了一个问题,你可以思考下,问题在最后面*/
#include
#include
int convision_word(char [],int) ;/*这里的[],表示我等一下要把一个字符串当做形参放进来*/
//void last_digit(char [],int);//对数组的尾数进行处理
int main()
{
char a[Max];
int i=0,j; //i是字符串的下标
printf("字符串以'!'为结束标志\n请输入:");
a[i]=getchar();
do
{
i++;
a[i]=getchar();
}
while(a[i]!='!');
printf("i=%d\n",i);
printf("这是你之前输入的字符串:");
for(j=0;j printf("%c",a[j]);
printf("\n\n\n----------\n\n\n");
printf("现在开始执行题目要求:");
convision_word(a,i); /*以数组名作为形参*/
for(j=0;j
printf("\n\n\n\n\n\");
return 0;
}
int convision_word(char a[],int b)
/*注,这里不能只写一个[],必须写一个数组名,不然下面的函数中不知道那个是形参,当然数组名可以自定义
b是数组中字符的数量*/
{
int i,t;/*i作为数组下标,作为判断那个是空字符,即a[i]作为空字符,当发现空字符是,a[t]用来接收a[i]*/
int count=0;
for(i=0;i {
if(a[i]==' ')
{
if(a[i+1]>='a' && a[i]<='z')
a[i+1]=a[i+1]-32;
for(t=i;t a[t]=a[t+1];/*用下一个字符覆盖空字符所在区域,这就是所谓删除xx一种方法*/
count++;
}
}
return b-count;
}
思考:
这个代码中,我显然没有对数组的尾数进行处理,这样可能导致一些问题
比如把所有输出字符串的printf()改成puts(a),代码的BUG就显现出来了,
那么,我特意设立了一个函数,就是最开头函数声明时的void last_digit(char [],int)
我用 // 注释掉了,如果要解决bug,你可以自己用这个函数试试,怎么编写这一步?
这就是这个思考的意义所在了。。。
#include
#include
#include
char* delspace(char* str)
{
int l=strlen(str);
int f=0;
char* ps=(char*)malloc(l+1);
char* ps1,*ps2;
ps1=str;
ps2=ps;
while(*str)
{
if(*str==' ')
{
str++;
f=1;
continue;
}
if(f==1)
{
f=0;
if('z'>=*str&&*str>='a')
{
*str=*str-('a'-'A');
}
}
*ps++=*str++;
}
*ps=0;
strcpy(ps1,ps2);
free(ps2);
return ps1;
}
int main()
{
char str[200];
printf("输入字符串:");
gets(str);
puts(delspace(str));
return 0;
}
1 #include
2 #include
3 #include
4 int main()
5 {
6 char str[100] = {0};
7 char str2[100] = {0};
8 printf("put in string:\n");
9 gets(str);
10 printf("str=%s\n",str);
11 int n = strlen(str);
12 int i;
13 for(i=0;i
15 str2[i] = str[i];
16 if(str[i] == ' ' && str[i+1] != ' ' )
17 str2[i] = toupper(str[i+1]);
18 }
19 printf("str2=%s\n",str2);
20 return;
21 }
用字符转换语句就可以了 strup()