题目
请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换成大写(若该位置上不是字母,则不转换)。
例如,若输入" abc4EFG",则应输出"aBc4EFG"。
考点
考点:指针、ASCII码、 数组和循环语句。
解法:通过循环语句依次判断数组下标为奇数的元素是否为小写字母,如果是则通过字符运算将其转换为大写字母。
代码
#include <stdio.h>
#include <string.h>
void fun( char *ss )
{
/* 变量定义*/
int n=0;
int i;
char *p;
p = ss;
/*步骤1:获取字符长度*/
while(*p++ != '\0')/*判断是否到了字符串末尾*/
{
n++;
};
/*步骤2:根据字符长度 遍历字符 对字符逐个处理*/
for(i=1;i<n;i+=2){
/*判断是不是小写字母*/
if(ss[i]>='a' && ss[i]<='z'){
/*是小写字母 转为大写*/
ss[i] = ss[i] - 32;
}
}
}
void main( void )
{
char tt[51];void NONO ();
printf( "\nPlease enter an character string within 50 characters:\n" );
gets( tt );
printf( "\n\nAfter changing, the string\n \"%s\"", tt );
fun(tt) ;
printf( "\nbecomes\n \"%s\"", tt );
NONO();
getchar();
}
void NONO ()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
char tt[51], ch;
FILE *rf, *wf ;
int len, i=0 ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
while(i < 10) {
fgets( tt, 50, rf );
len = strlen(tt) - 1 ;
ch = tt[len] ;
if(ch == '\n' || ch == 0x1a) tt[len] = 0 ;
fun(tt);
fprintf( wf, "%s\n", tt );
i++ ;
}
fclose(rf) ;
fclose(wf) ;
}
标签:字符,下标,奇数,ss,字母,大写,C语言,字符串
From: https://www.cnblogs.com/mllt/p/CJSJEJ_eajyjdrfbh3854ASe.html