计算机二级C语言程序设计题

163 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天,点击查看活动详情

计算机二级C语言程序设计题

题目:

编写一个函数fun(),其功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abc4EFg,则应输出aBc4EFg。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
void fun(char *ss)
{ 
?
}
void main() 
{ 
	char tt[50]; 
	void NONO();
	printf("\nPlease enter an character string within 50 characters:\n"); 
	gets(tt); 
	printf("\nAfter changing, the string\n \"%s\"", tt); 
	fun(tt); 
	printf("\nbecomes\n \"%s\"\n\n", tt); 
	NONO();
	system("pause");
}
void NONO()
{/* 本函数用于打开文件,输入数据,
 调用函数,输出数据,关闭文件。 */
	FILE *rf, *wf;
	char tt[50];
	int i;
	rf=fopen("in.dat","r");
	wf=fopen("out.dat","w");
	for(i=0; i<8; i++) 
	{
		fscanf(rf, "%s", tt);
		fun(tt);
		fprintf(wf, "%s\n", tt);
	}
	fclose(rf);
	fclose(wf);
}

解题思路:

首先循环字符串中大的所有字符,接着判断字符下表是否为奇数,然后判断字符下标为奇数的位置上是不是小写字母,如满足两个判断条件,则将小写转换为大写,直到循环结束

参考答案:

void fun(char *ss)
{ 
	int i;
	int len;
	len=strlen(ss);
	for(i=0; i<len; i++)
	{
		if(1 == i%2) //判断下标是否为奇数
		{
			if(ss[i]>='a' && ss[i]<='z')  //若为奇数,再判断是否为a-z之间的字母
			{
				ss[i]=ss[i]-32; //进行小写向大写转换
			}
		}
	}
}

结果如下:

4.png

补充:

ASCII码在C语言中是以整型数字对应的,每一个码都有一个与之对应的整型数据,相同字母的大小写之间的差值为32,那么大写字母转化为小写字母,可以在字母的ASCII的值基础上加上32,反之,小写字母转换为大写字母则需要减去32。例如:

#include <stdio.h>
void main()
{
	char m1,m2;
	printf("plese input the lower case letter :");
	m1=getchar();
	m2=m1-32;
	printf("%c of ASCII code is %d\n%c of ASCII code is %d\n",m1,m1,m2,m2);
}