输入一个n判断字符串,前面有几个*,如果n>字符串前的*,就替换为n个,n<字符串前的*,就什么都不做,用C语言函数的形式写
时间: 2023-05-25 13:06:40 浏览: 64
```c
void replace_star(char *str, int n) {
int num_star = 0;
while (*str == '*') {
num_star++;
str++;
}
if (n > num_star) {
for (int i = 0; i < n - num_star; i++) {
printf("*");
}
}
printf("%s", str);
}
```
示例输出:
```c
char str[] = "***Hello world!";
replace_star(str, 5); // 输出:*****Hello world!
replace_star(str, 2); // 输出:***Hello world!
replace_star(str, 0); // 输出:***Hello world!
```
相关问题
输入字符串s和字符串sub,判断字符串s中是否存在sub子串,若存在,将字符 串s中第一个sub子串的所有字符替换成'*',并输出变换后的字符串,否则输出"不存在该 子串! "。C语言
在C语言中,你可以通过以下几个步骤来实现这个功能:
1. 首先,创建一个函数,例如`replace_substring`,接受两个参数:`char *s`(字符串s的指针)和`const char *sub`(子串sub的指针)。
```c
#include <stdio.h>
#include <string.h>
void replace_substring(char *s, const char *sub) {
// 检查子串是否为空
if (!*sub) {
printf("不存在该子串!\n");
return;
}
size_t sub_len = strlen(sub);
size_t s_len = strlen(s);
// 使用滑动窗口搜索子串
for (size_t i = 0; i <= s_len - sub_len; ++i) {
if (strncmp(s + i, sub, sub_len) == 0) { // strncmp比较两个字符串是否相等
// 找到子串的位置,开始替换
strncpy(s + i, "*", sub_len); // 替换子串为*
s[i + sub_len] = '\0'; // 更新字符串长度
break;
}
}
// 输出处理后的字符串
printf("%s\n", s);
}
```
2. 调用`replace_substring`函数,并传入用户提供的字符串和子串:
```c
int main() {
char str[] = "Hello World, this is a test.";
const char sub[] = "World";
replace_substring(str, sub);
return 0;
}
```
在这个例子中,如果`sub`在`s`中找到,它会被替换为`*`;如果没有找到,则会输出提示信息"不存在该子串!"。
c#如何判断字符串内有几个相同的字符
在 C# 中,你可以通过遍历字符串并使用哈希集合(HashSet 或 Dictionary)来计算字符串中有多少个唯一的字符。以下是简单的步骤:
1. 首先创建一个空的 HashSet(用于存储唯一字符),如果已经存在则表示字符已计数过。
2. 使用 `foreach` 循环遍历字符串中的每个字符。
3. 对于每个字符,检查它是否已经在 HashSet 中。若不在,则添加到 HashSet 并增加计数;若已在其中,则说明该字符已经出现多次,无需再次添加,只需增加计数即可。
4. 遍历结束后,HashSet 的大小即为唯一字符的数量。
以下是一个示例代码片段:
```csharp
string str = "hello";
HashSet<char> uniqueChars = new HashSet<char>();
int count = 0;
foreach (char c in str)
{
if (!uniqueChars.Contains(c))
{
uniqueChars.Add(c);
count++;
}
}
Console.WriteLine("字符串中有 {0} 个不同的字符", count);
// 如果需要返回重复次数超过1的字符及其数量,可以使用 Dictionary 替换 HashSet,并稍作修改
Dictionary<char, int> charCounts = new Dictionary<char, int>();
foreach (char c in str)
{
if (!charCounts.ContainsKey(c))
{
charCounts[c] = 1;
}
else
{
charCounts[c]++;
}
}
```
阅读全文