#include <stdio.h> int fcap(char str[]); int main(void) { char str[80]; gets(str); printf("%d",fcap(str)); return 0; }C语言输入一个字符串,统计字符串中大写辅音字母个数并输出。大写辅音字母是除AE、IO、U以外的大写字母。
时间: 2024-03-08 08:47:51 浏览: 79
这段代码有误,函数 `fcap()` 的实现并未给出。以下是完整的代码实现。
```c
#include <stdio.h>
#include <string.h>
int count_fcap(char str[]);
int main(void) {
char str[80];
gets(str);
printf("%d", count_fcap(str));
return 0;
}
int count_fcap(char str[]) {
int i, count = 0;
for(i = 0; i < strlen(str); i++) {
if(str[i] >= 'A' && str[i] <= 'Z') { // 判断是否为大写字母
if(str[i] != 'A' && str[i] != 'E' && str[i] != 'I' && str[i] != 'O' && str[i] != 'U') { // 判断是否为AE、IO、U
count++;
}
}
}
return count;
}
```
相关问题
#include <stdio.h> #include <string.h> void myscat(char str1[], char str2[]); #define N 80 int main() {char s[N], t[N]; gets(s); gets(t); ; //调用函数 puts(s); return 0; } void myscat(char str1[], char str2[]) {int i = 0, j; while (str1[i] != '\0') ; for(j=0; ;i++) { ; j ; } str1[i] = '\0'; }
这是一个字符串拼接函数 myscat 的代码,但是其中有一些问题:
1. 函数没有返回值,应该指定返回类型为 void。
2. 函数体中第 6 行的 while 循环没有作用,应该删除。
3. 函数体中第 7 行的 for 循环语法有误,应该是 for(j=0; str2[j] != '\0'; j++)。
4. 函数体中第 9 行的 j 没有被使用,应该将 j 的值加到 str1 的下标 i 上。
修改后的代码如下:
```
#include <stdio.h>
#include <string.h>
void myscat(char str1[], char str2[]) {
int i = 0, j;
while (str1[i] != '\0') {
i++;
}
for(j=0; str2[j] != '\0'; j++) {
str1[i+j] = str2[j];
}
str1[i+j] = '\0';
}
#define N 80
int main() {
char s[N], t[N];
gets(s);
gets(t);
myscat(s, t);
puts(s);
return 0;
}
```
查找子串,补充下面的程序 #include<stdio.h> #include<string.h> int fun(char *s,char*t) { // } int main() { char str1[30],str2[10]; gets(str1); gets(str2); printf("%d",fun(str1,str2)); return 0; }
可以使用字符串库函数strstr来查找子串,具体实现如下:
```c
#include<stdio.h>
#include<string.h>
int fun(char *s, char *t) {
char *p = strstr(s, t); // 在s中查找t
if (p == NULL) { // 如果找不到,返回-1
return -1;
} else { // 如果找到,返回t在s中的起始位置
return p - s;
}
}
int main() {
char str1[30], str2[10];
gets(str1);
gets(str2);
printf("%d", fun(str1, str2));
return 0;
}
```
注意,gets()函数存在安全性问题,建议使用fgets()函数代替。
阅读全文