C语言-第十三周做题总结-数据类型与表达式

id:386 A.英文字母替换加密(大小写转换+后移1位)

题目描述

本题要求编写程序,将英文字母替换加密。为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:将明文中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母。例如,字母a->B、b->C、…、z->A、A->b、B->c、…、Z->a。输入一行字符,将其中的英文字母按照以上规则转换后输出,其他字符按原样输出。

输入

输入一行字符,以回车符 '\n’作为 结束符。

输出

将输入的一行字符中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母后输出,其他字符按原样输出。

输入样例

Reold Z123?

输出样例

sFPME a123?

题解

  • 此题需要用到一个循环结构和多个分支结构
  • 循环结构用来依次读入字符
  • 分支结构用来对不同类型的字符做不同的处理

代码

#include 
#include 

int main(int argc, char *argv[])
{
	char ch;
	do
	{
		ch = getchar();
		if (ch >= 'a' && ch <= 'z')
		{
			ch -= 31;
			printf("%c", ch);
		}
		else if (ch >= 'A' && ch <= 'Y')
		{
			ch += 33;
			printf("%c", ch);
		}
		else if (ch == 'Z')
		{
			ch += 7;
			printf("%c", ch);
		}
		else
		{
			printf("%c", ch);
		}
	}
	while (ch != '\n');
	
	return 0;
}

id:387 B.近似求PI

题目描述

本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps。

​​​π/2=1+1/3+2!/(35)+3!/(357)+4!/(3579)+…​​

输入

输入在一行中给出精度eps,可以使用以下语句来读输入:

scanf(“%le”, &eps);

输出

在一行内,按照以下格式输出π的近似值(保留小数点后5位):

PI = 近似值

输入样例

1E-5

输出样例

PI = 3.14158

题解

  • 此题需要用到一个循环结构
  • 需要注意的一个坑是,当最后一项小于精度系数时,仍要将其加到总和上

代码

#include 
#include 

int main(int argc, char *argv[])
{
	double eps, sum, n, k;
	scanf("%le", &eps);
	n = 1.0;
	k = 0.0;
	sum = 0.0;
	
	do
	{
		sum += n;
		k++;
		n *= k / (2 * k + 1);
	}
	while (n >= eps);
	sum += n;
	
	printf("PI = %.5f", sum * 2);
	return 0;
}

id:383 C.简单计算器

题目描述

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

输入

输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出

在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例

1+2*10-10/2=

输出样例

10

题解

  • 此题需要用到一个循环结构,及switch选择语句
  • 循环结构用来依次读入整数及运算符
  • 选择语句的作用是根据不同的运算符做不同的运算
  • 循环结束的条件是输入的字符为等于号

代码

#include 
#include 

int main(int argc, char *argv[])
{
	int sum, n;
	char op;
	scanf("%d", &sum);
	op = getchar();
	
	while (op != '=')
	{
		scanf("%d", &n);
		switch (op)
		{
			case '+':
				sum += n;
				break;
			case '-':
				sum -= n;
				break;
			case '*':
				sum *= n;
				break;
			case '/':
				if (n != 0)
				{
					sum /= n;
				}
				else
				{
					printf("ERROR\n");
					return 0;
				}
				break;
			default:
				printf("ERROR\n");
				return 0;
		}
		op = getchar();
	}
	printf("%d", sum);
	return 0;
}

id:384 D.单词首字母大写

题目描述

本题目要求编写程序,输入一行字符,将每个单词的首字母改为大写后输出。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入

输入给出一行字符。

输出

在一行中输出已输入的字符,其中所有单词的首字母已改为大写。

输入样例

在这里插入图片描述

输出样例

在这里插入图片描述

题解

  • 此题需要用到一个循环结构和多个条件语句
  • 循环结构用于读入多个字符
  • 先输入第一个字符然后进入循环,注意,第一个字符就是首字母,要大写,然后再输入第二个字符,如果输入了一个空格,则要将一个变量的值改变,表明输入了空格后再输入的第一个字母要大写,注意,空格也要输出,如歌这个表明前面是空格的变量的值没有改变,则不需要将输入的字母大写
  • 循环结束的条件是,当输入的字符不是字母时,但是也要将最后一个不是字母的字符输出

代码

#include 
#include 

int main(int argc, char *argv[])
{
	int f;
	char ch, x;
	x = 'A';
	f = 0;
	ch = getchar();
	
	do
	{
		if (f == 0)
		{
			if (ch >= 'A' && ch <= 'Z')
			{
				printf("%c", ch);
			}
			else
			{
				printf("%c", ch - 32);
			}
			f = 1;
		}
		else
		{	
			if (ch == ' ')
			{
				printf("%c", ch);
				x = ch;
			}
			else if (ch != ' ' && x == ' ')
			{
				printf("%c", ch - 32);
				x = ch;
			}
			else
			{
				printf("%c", ch);
				x = ch;
			}
		}
		ch = getchar();
	}
	while ((ch >= 'A' && ch <= 'z') || (ch == ' '));
	printf("%c", ch);
	
	return 0;
}

id:378 E.统计单词的长度

题目描述

本题目要求编写程序,输入一行字符,统计每个单词的长度。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入

输入给出一行字符。

输出

在一行中输出每个单词的长度。每个数字后有一个空格。

输入样例1

在这里插入图片描述

输出样例1

3 3 4

输入样例2

在这里插入图片描述

输出样例2

0

提示

注意全空格

题解

  • 首先要处理输入全为空格的情况
  • 如果不是,则进入一个循环,当输入的字符不是空格时,计数器加一,当输入为空格时,停止计算,并将计数器减一的值输出,然后将0赋值给计数器
  • 当最后输入的字符不是空格时,即最后输入为字母,要将最后的计数器的值输出,因为是先读入字符再进行是否进入循环的判断,最后输入的字符以换行符结束,且可能没有空格,则计数器的值没法输出
  • 注意当最后输入的字符是空格时,计数器的值为0,但是不能输出,即上一点的做法以及可以得到控制(作为一个测试点)

代码

#include 
#include 

int main(int argc, char *argv[])
{
	int count;
	char ch;
	ch = getchar();
	count = 0;

	if (ch == ' ')
	{
		printf("0 ");
	}
	else
	{
		do
		{
			count++;
			if (ch == ' ')
			{
				if ((count - 1) != 0)
				{
					printf("%d ", count - 1);
					count = 0;
				}
		     	count = 0;
			}
			ch = getchar();
		}
		while (ch != '\n');
		if (count != 0)
		{
			printf("%d ", count);
		}
	}
	
	return 0;
}

你可能感兴趣的:(c语言,算法,开发语言)