#include<stdio.h> #include<stdlib.h> int num(char arr[]) { int count=0; for(int i=0;arr[i]!='\n';i++) { count++; } return count; } int main() { int count=0; char a=(char*)malloc(100*sizeof(char)); fgets(a,100,stdin); int n=num(a); for(int i=0;i<n;i++) { if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')) { count++; for(;(arr[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z');i++) { if((a[i]<'A')||(a[i]>'Z'&&a[i]<'a')||a[i]>'z') { i--; } } } } printf("一共有%d个单词\n",count); return 0; }哪里错了
时间: 2023-07-15 10:12:24 浏览: 95
代码中有一些错误:
1. 第5行应该是 `char *a = (char*)malloc(100*sizeof(char));`,因为你需要分配一段内存来存储字符数组。
2. 第14行应该是 `for(int i=0;i<n;i++)`,因为你需要遍历整个字符数组。
3. 第16行应该是 `if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))`,因为你需要检查当前字符是否是字母。
4. 第23行应该是 `if((a[i]<'A')||(a[i]>'Z'&&a[i]<'a')||a[i]>'z')`,因为你需要检查当前字符是否是字母,如果不是字母,就说明一个单词结束了。
下面是修改后的代码:
相关问题
使用c语言把字符串数组里所有的数字连在一起,输出为整型
可以使用以下代码来实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str_arr[10][10] = {"hello", "world", "123", "456", "789"};
int num_str[10];
int num_str_count = 0;
// 将字符串数组中的数字转换为整型数组
for (int i = 0; i < 10; i++) {
if (atoi(str_arr[i]) != 0) {
num_str[num_str_count] = atoi(str_arr[i]);
num_str_count++;
}
}
// 计算整型数组中所有数字的和
int sum = 0;
for (int i = 0; i < num_str_count; i++) {
sum += num_str[i];
}
printf("所有数字的和为:%d\n", sum);
return 0;
}
```
输入一个字符串,内有数字和非数字字符,如:ak123x456 17960? 302gef4563,将其中连续的数字作为一个整体,依次存放到一数组a中,例如123放入a[0],456放入a[1]...编程统计共有多少个整数,并输出这些数。用c语言编程
在C语言中,你可以使用`strtok()`函数结合循环来解决这个问题。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个函数来找出字符串中的数字串并存储到数组中
void find_numbers(char* str, int count[], char** arr) {
char* token = strtok(str, "0123456789"); // 分割符为所有数字
int num_count = 0;
while (token != NULL) {
*arr[num_count] = token; // 存储数字串到数组
count[num_count++] = strlen(token); // 记录长度作为整数
token = strtok(NULL, "0123456789");
}
}
int main() {
char str[] = "ak123x456 17960? 302gef4563";
int num_count = 0;
char* numbers[100]; // 预估最多100个数字
find_numbers(str, &num_count, numbers);
printf("Total number of integers found: %d\n", num_count);
for (int i = 0; i < num_count; i++) {
printf("Number at index %d: %s (length %d)\n", i, numbers[i], numbers[i][strlen(numbers[i]) - 1]); // 输出最后一个字符判断是否整数
}
return 0;
}
```
这个程序首先使用`strtok()`找到字符串中的每个数字串,然后计算它们的数量并将结果存储在`count[]`数组中。同时,它也将找到的数字串存储到`numbers[]`数组中。注意,为了简单起见,我们通过查看最后一个字符是否为数字来粗略地检查是否整个字符串都是整数。
阅读全文