这个程序有什么问题? #包括 #包括 int main(){ char*a; int b[26]={ 0 }; 长r=0; scanf(“%s”,a); int j=斯特伦(a); 对于(int i=0;i
输入- ssss 这个程序在DeV C++编译器上的笔记本上运行良好。这个程序有什么问题? #包括 #包括 int main(){ char*a; int b[26]={ 0 }; 长r=0; scanf(“%s”,a); int j=斯特伦(a); 对于(int i=0;i,c,runtime,C,Runtime,输入- ssss 这个程序在DeV C++编译器上的笔记本上运行良好。 但是当我在ideone.com或任何其他在线编译器上运行它时,它会出现运行时错误,请告诉我这个程序有什么问题您没有为a分配内存并对其执行操作 为char*a分配内存 或者您也可以将a作为字符数组,就像您为b所做的那样,您还没有为a分配任何内存。通过执行char a[]静态地为char*a分配内存或使用函数动态执行。当你给出这样的东西时char*a表示它是指向字符类型数据的指针。这里,“a”是指向需要分配的内存位置的指针 为c
但是当我在ideone.com或任何其他在线编译器上运行它时,它会出现运行时错误,请告诉我这个程序有什么问题您没有为
a
分配内存并对其执行操作
为char*a分配内存代码>
或者您也可以将a
作为字符数组,就像您为b
所做的那样,您还没有为a
分配任何内存。通过执行char a[]静态地为char*a
分配内存编码>或使用函数动态执行。当你给出这样的东西时char*a代码>表示它是指向字符类型数据的指针。这里,“a”是指向需要分配的内存位置的指针
为char*a
分配内存,比如a=malloc(20)
或者您可以直接使用数组char a[20]
。它解决了你的问题。首先决定这是C还是C++,选择合适的标签。
#include <stdio.h>
#include<string.h>
int main() {
char * a;
int b[26] = {
0
};
long r = 0;
scanf("%s", a);
int j = strlen(a);
for (int i = 0; i < j; i++) {
b[a[i] - 'a'] += 1;
}
for (int i = 0; i < 26; i++) {
if ((b[i] / 2) * 2 == b[i])
r += b[i] / 2;
else
r += (b[i] + 1) / 2;
}
printf("%ld", r);
return 0;
}