C语言问题求解。。
A) abcdeg B) bcde C) ABCDE D) BCDEFG
#include"ctype.h"
space (char *str)
{ int i,t;char ts[81];
for(i=0,t=0;str[i]!='\0';i+=2)
if(! isspace(*str+i)&&(*(str+i)!='a'))
ts[t++]=toupper(str[i]);
ts[t]='\0';
strcpy(str,ts); }
main( )
{ char s[81]={"a b c d e f g"};
space(s);
puts(s); }
希望给出详细解释,谢谢 展开
选D选项
#include<stdio.h>
#include<string.h>
#include"ctype.h"
//这个程序的意思是将除了a以外的字母转换成大写字母
space (char *str)
{ int i,t;char ts[81];
for(i=0,t=0;str[i]!='\0';i+=2)//'\0'是判定字符数组结束的标识,表示这串字符到结尾了,如果字符串没到结尾,则i=i+2
//至于为什么是i+=2是因为你的字符串是输入一个字母后面会跟随一个空格
if(! isspace(*str+i)&&(*(str+i)!='a'))//isspace()函数的作用是判断是否有空格 这个字母不为空格并且不为a则进入if判断
ts[t++]=toupper(str[i]);//toupper()的作用是将小写字母转换成大写 转换完成以后t++
ts[t]='\0';//给字符串加'\0'代表字符串到结尾了
strcpy(str,ts); //strpcy(str,ts)的作用是把ts字符复制给str
}
main( )
{ char s[81]={"a b c d e f g"};//定义s字符串
space(s);//调用space()函数
puts(s); //输出字符串
}
D) BCDEFG
#include"ctype.h"
space (char *str)
{ int i,t;char ts[81];
for(i=0,t=0;str[i]!='\0';i+=2) //“一隔一”进行
if(! isspace(*str+i)&&(*(str+i)!='a')) //str[i]不是空格,且不是'a'(过滤掉'a')
ts[t++]=toupper(str[i]); //就把它变成大写字母后,复制到ts[]数组中
ts[t]='\0'; //设置字符串尾
strcpy(str,ts); } //把ts复制到str中
main( )
{ char s[81]={"a b c d e f g"};
space(s); //c地字符串s进行处理
puts(s); } //输出处理过的字符串
右移两位后为1000000,即64