【C语言题目】循环-Uppercase

把输入的一句话的的所有单词转成首字母大写,其他字母小写的格式。

输入格式:
输入一字符串,仅由大小写字母和空格组成,并且每个单词间有且仅有一个空格,以换行符结束。

输出格式:
输出新格式下的字符串。

输入样例:
在这里给出一组输入。例如:

cirno is the best
输出样例:
在这里给出相应的输出。例如:

Cirno Is The Best
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

#include<stdio.h>
int main()
{
	char a,b;
	int i;
	a=getchar();
	if(a>=97)
	{
		putchar(a-32);
	}
	else
	{
		putchar(a);
	}
	for(i=0;;i++)
	{
		b=getchar();
		if(b=='\n')
		{
			break;
		}
        if(a==' ')
		{
			if(b>=65&&b<=90)
			{
				putchar(b);
			}
			else
			{
				putchar(b-32);
			}
		}
		else
		{
			if(b>=65&&b<=90)
			{
				putchar(b+32);
			}
			else
			{
				putchar(b);
			}
		}
		a=getchar();
		if(a=='\n')
		{
			break;
		}
		if(b==' ')
		{
			if(a>=65&&a<=90)
			{
				putchar(a);
			}
			else
			{
				putchar(a-32);
			}
		}
		else
		{
			if(a>=65&&a<=90)
			{
				putchar(a+32);
			}
			else
			{
				putchar(a);
			}
		}
	}
		
	return 0;
}
### C语言代码补全练习题 #### 题目一:计算表达式的值 为了实现一个简单的C语言程序来求解表达式 `4*a^2 + 5*b^3` 的值,可以按照如下方式编写: ```c #include <stdio.h> #include <math.h> int main() { double a, b; printf("请输入两个浮点数a和b:"); scanf("%lf%lf", &a, &b); // 计算表达式的值 double result = 4 * pow(a, 2) + 5 * pow(b, 3)[^1]; printf("表达式的结果是:%f\n", result); return 0; } ``` 这段代码首先包含了必要的头文件 `<stdio.h>` 和 `<math.h>` 来支持输入输出操作以及数学函数的使用。接着定义了变量并提示用户输入数值,最后通过调用 `pow()` 函数完成幂运算,并打印出最终结果。 #### 题目二:判断回文字符串 对于验证一个字符串是否为回文串的任务,可以通过比较字符数组两端对应的元素来进行判定。具体实现在下述代码片段中给出: ```c bool palindrome(char *s){ int len = strlen(s); for(int i = 0; i <= len / 2; ++i) if(s[i] != s[len - i - 1]) return false; return true; }[^2] ``` 此方法利用了一个事实——如果某个字符串是从左向右读与从右往左读相同,则该字符串即为回文串。上述逻辑遍历至字符串长度的一半处即可做出准确判断。 #### 题目三:累乘各位数字 当需要处理整数并将每一位上的数字相乘时,可以采用循环结构逐步提取每位数字并与累积积相乘的方式解决这个问题。以下是具体的解决方案: ```c #include <stdio.h> void main(){ int num, product = 1; printf("请输入一个正整数:\n"); scanf("%d", &num); while(num > 0){ product *= num % 10; num /= 10; } printf("各位置上数字连乘后的结果:%d\n", product)[^3]; } ``` 这里的关键在于理解如何获取当前位上的数字 (`num % 10`) 并更新剩余部分 (`num /= 10`) ,从而迭代地构建所需的乘积累加器。 #### 题目四:筛选大写字母 假设有一个需求是要过滤掉非大写的英文字母而只保留那些符合条件的大写字母,在这种情况下可以用以下算法实现这一功能: ```c #include <stdio.h> // 参数a[]存储要处理的字符串 void filter_uppercase(char a[]) { int src_index = 0, dst_index = 0; while (a[src_index] != '\0') { if ((a[src_index] >= 'A') && (a[src_index] <= 'Z')) a[dst_index++] = a[src_index]; ++src_index; } a[dst_index] = '\0'; } int main() { char str[81], ch; int index = 0; printf("请输入不超过80个字符组成的字符串(按Enter结束):"); while (((ch = getchar()) != '\n') && (index < sizeof(str)-1)) str[index++] = ch; str[index] = '\0'; filter_uppercase(str); puts(str); return 0; }[^4] ``` 本段代码展示了怎样有效地截取原始字符串中的所有大写字母,并将其余成分移除的过程。注意到了边界条件的控制以防止越界错误的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值