用c语言输入一个长度小于100的字符串,将字符串中下标为素数位置上的字母转为大写字母
时间: 2024-05-02 17:19:52 浏览: 85
可以使用如下代码实现:
```c
#include <stdio.h>
#include <ctype.h>
int is_prime(int n)
{
if (n < 2) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
int main()
{
char str[100];
printf("请输入字符串:");
scanf("%s", str);
for (int i = 0; str[i]; i++) {
if (is_prime(i)) {
str[i] = toupper(str[i]);
}
}
printf("转换后的字符串为:%s\n", str);
return 0;
}
```
如果不确定输入的字符串长度,可以使用如下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int is_prime(int n)
{
if (n < 2) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
int main()
{
char *str = NULL;
size_t len = 0;
printf("请输入字符串:");
getline(&str, &len, stdin);
for (int i = 0; str[i]; i++) {
if (is_prime(i)) {
str[i] = toupper(str[i]);
}
}
printf("转换后的字符串为:%s\n", str);
free(str);
return 0;
}
```
需要注意的是,在第二种代码中,需要释放动态分配的内存。
阅读全文