#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;
}
输入 - SSSS
这个程序在DEV c ++编译器中的笔记本电脑上工作正常。 但是当我在ideone.com或任何其他在线编译器上运行它时会给出RUNTIME ERROR,请告诉我这个程序有什么问题
答案 0 :(得分:5)
您没有为a
分配内存并对其执行操作。
为char* a;
或者您也可以将a
作为字符数组,就像您为b
所做的那样
答案 1 :(得分:0)
您还没有为a
分配任何内存。通过执行char *a
静态地为char a[<some_length>];
分配内存,或使用malloc函数动态执行。{/ p>
答案 2 :(得分:0)
当你给出像 char *a;
之类的东西时,它意味着它是指向数据字符类型的指针。这里,“a”是指向需要分配的内存位置的指针。
为char *a
a=malloc(20)
之类的char a[20]
分配内存,或者直接使用数组// FileName: test.cpp
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
public ref class Form1: public Form
{
public: Form1()
{
this->Text = "My Form";
this->Size = Drawing::Size(250, 150);
}
};
[STAThread]
int main() {
Application::Run(gcnew Form1);
}
。它解决了你的问题。