C++要求给定一个字符串,找出其中ASCII码最小的那个字符 不用printf
时间: 2024-10-29 12:19:26 浏览: 6
在C++中,要找出给定字符串中最小ASCII码的字符,可以创建一个变量来存储目前找到的最小值,然后遍历整个字符串,比较每个字符的ASCII码。如果当前字符的ASCII码小于已知最小值,则更新这个最小值。这里是一个简单的示例:
```cpp
#include <iostream>
#include <string>
char findMinChar(const std::string& str) {
if (str.empty()) return '\0'; // 如果字符串为空,返回空字符
char minChar = str[0]; // 假设第一个字符是最小的
for (size_t i = 1; i < str.length(); ++i) {
if (str[i] < minChar) {
minChar = str[i];
}
}
return minChar;
}
int main() {
std::string input = "Hello, World!";
char result = findMinChar(input);
std::cout << "The minimum ASCII character is: " << static_cast<int>(result) << std::endl;
//
相关问题
用C++语言编写:给定一个由 a-z这 26个字符组成的字符串,统计其中哪个字符出现的次数最多。
可以使用一个大小为 26 的整型数组来记录每个字符出现的次数,数组下标对应着字符的 ASCII 值减去 'a' 的 ASCII 值。具体实现如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int count[26] = {0}; // 初始化数组中所有元素为 0
int max_count = 0, max_index = -1;
printf("请输入一个由 a-z 这 26 个字符组成的字符串:");
scanf("%s", str);
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (str[i] >= 'a' && str[i] <= 'z') { // 只统计小写字母
count[str[i] - 'a']++;
if (count[str[i] - 'a'] > max_count) {
max_count = count[str[i] - 'a'];
max_index = str[i] - 'a';
}
}
}
if (max_index == -1) {
printf("字符串中没有小写字母。\n");
} else {
printf("出现次数最多的字符是 %c,出现了 %d 次。\n", max_index + 'a', max_count);
}
return 0;
}
```
运行程序,输入一个字符串,即可得出出现次数最多的字符。
统计给定字符串中各单词出现的次数,具体要求如下: 接收给定的一行字符串(如:hello hi ask hi); 切割字符串,统计字符串中各单词出现的次数,并输出结果。 注意:字符串中各单词之间间隔一个空格。用C语言
在C语言中,你可以使用标准库函数`strtok()`来进行字符串分割,并结合`hash_map`(类似于C++中的`std::map`)数据结构来统计单词出现的次数。以下是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char* word;
int count;
} WordCount;
// 自定义哈希表,用于存储单词及其计数
typedef struct {
WordCount* table[256]; // 使用ASCII字符作为键,这里假设最多只有一个字母长度的单词
} WordBucket;
// 计算并更新单词计数
void increment_count(WordBucket* bucket, char* word) {
for (int i = 0; word[i] != '\0'; ++i) {
if (!bucket[word[i]]) {
bucket[word[i]] = (WordCount*)malloc(sizeof(WordCount));
bucket[word[i]]->word = word;
bucket[word[i]]->count = 1;
} else {
bucket[word[i]]->count++;
}
}
}
// 分割字符串并统计单词
void count_words(char* str, WordBucket* bucket) {
char* token = strtok(str, " ");
while (token != NULL) {
increment_count(bucket, token);
token = strtok(NULL, " ");
}
}
// 输出结果
void print_word_counts(WordBucket* bucket) {
for (char* key = "abcdefghijklmnopqrstuvwxyz"; key[0] <= 'z'; ++key) {
if (bucket[key]) {
printf("%s: %d\n", key, bucket[key]->count);
}
}
}
int main() {
char str[] = "hello hi ask hi";
WordBucket bucket;
memset(bucket.table, 0, sizeof(bucket.table));
count_words(str, &bucket);
print_word_counts(&bucket);
return 0;
}
```
这个程序首先初始化一个`WordBucket`结构,然后遍历输入字符串,将每个单词添加到哈希表中并计算其计数。最后,它会打印出所有统计过的单词及其出现次数。
阅读全文