52.找出字符串中ASCII码最大的字符

给定程序中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后移动。


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void fun(char *p)
{
	char max, *q=NULL;
	int i = 0;
	max = p[i];
	while (p[i] != 0)
	{
		if (max < p[i])
		{
			max = p[i];
			q = p + i;
		}
		i++;
	}
	while ( q > p)
	{
		*q = *(q - 1);
		q--;
	}
	p[0] = max;
}
int main()
{
	char str[90];
	printf("Enter a string :");
	gets(str);
	printf("\nThe original string :");
	puts(str);
	fun(str);
	printf("\nThe string after moving :");
	puts(str);
	printf("\n\n");
	getchar();
	return 0;
}


### 回答1: 可以使用循环遍历字符串的每个字符,比较它们的ascii值,找出最大字符元素并记录其ascii值,最后输出即可。具体实现可以参考以下代: ``` string = "Hello, world!" max_char = "" max_ascii = 0 for char in string: if ord(char) > max_ascii: max_char = char max_ascii = ord(char) print("最大字符元素为:", max_char) print("其对应的ascii值为:", max_ascii) ``` 运行结果: ``` 最大字符元素为: w 其对应的ascii值为: 119 ``` ### 回答2: 本题要求编写程序寻找给定字符串最大字符元素,并输出该元素及其对应的ASCII值。下面是一个简单的Python代实现: s = input("请输入一个字符串:") # 输入字符串 max_char = None # 最大字符元素 max_ascii = 0 # 最大字符元素对应的ASCII值 for c in s: ascii_value = ord(c) # 转换字符ASCII值 if ascii_value > max_ascii: max_char = c max_ascii = ascii_value if max_char: print("最大字符元素为%c,对应的ASCII值为%d。" % (max_char, max_ascii)) else: print("该字符串为空。") 上述代,我们使用了input()函数让用户从命令行输入一个字符串,并用一个变量s保存输入的字符串。然后,我们使用for循环遍历字符串s的每个字符。在循环,我们将每个字符c转换为对应的ASCII值,使用ord()函数。如果当前字符ASCII值大于之前已经找到的最大值,我们就更新最大字符元素和最大ASCII值。最后,我们根据找到的最大字符元素和最大ASCII输出结果。 需要说明的是,上述代,如果输入的字符串为空,最大字符元素和最大ASCII值都会被设置为None和0,因此我们需要在输出结果时做一下判断。 总之,这个问题可以使用简单的遍历字符串的方法来解决,只需要维护一个最大字符元素和最大ASCII值即可。 ### 回答3: 要实现找出字符串最大字符元素并输出该元素及其对应的 ascii 值,需要先了解一下字符串的基本概念和一些编程知识。 在编程字符串是由一串字符组成的数据类型,常用于存储文本数据。字符串可以在程序进行各种操作,比如查找、替换、拼接等等。 找出字符串最大字符元素并输出其对应的 ascii 值,可以采用以下的方法: 1. 首先定义一个字符串变量,用来存储待查找的字符串。 例如: string str = "acbdefg"; 2. 定义一个字符变量和一个整数变量,用来分别存储最大字符元素和其对应的 ascii 值。将字符变量初始化为字符串的第一个字符,将整数变量初始化为该字符ascii 值。 例如: char maxChar = str[0]; int maxAscii = (int) maxChar; 3. 使用 for 循环遍历字符串,依次比较每个字符ascii 值,如果当前字符ascii 值大于之前保存的最大值,就更新最大值。 例如: for (int i = 0; i < str.length(); i++) { char currentChar = str[i]; int currentAscii = (int) currentChar; if (currentAscii > maxAscii) { maxChar = currentChar; maxAscii = currentAscii; } } 4. 最后输出最大字符元素及其对应的 ascii 值。 例如: cout << "最大字符元素为:" << maxChar << endl; cout << "对应的 ascii 值为:" << maxAscii << endl; 完整代如下: #include <iostream> using namespace std; int main() { string str = "acbdefg"; char maxChar = str[0]; int maxAscii = (int) maxChar; for (int i = 0; i < str.length(); i++) { char currentChar = str[i]; int currentAscii = (int) currentChar; if (currentAscii > maxAscii) { maxChar = currentChar; maxAscii = currentAscii; } } cout << "最大字符元素为:" << maxChar << endl; cout << "对应的 ascii 值为:" << maxAscii << endl; return 0; } 实际上,这个题目还可以采用 STL 的算法库来求解,例如使用 std::max_element() 函数来找出字符串最大字符元素。不过这里只是提供一种简单直观的实现思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值