2015-10-28 55 views
-3
#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這個程序有什麼問題?

這個程序能正常工作在我的筆記本電腦開發的C++編譯器.. 但是當我上運行它ideone.com或任何其他在線編譯它給運行時錯誤,,請告訴我這個程序有什麼問題

+4

首先判斷這是C或C++,並選擇合適的標籤。 –

回答

6

您沒有爲a分配內存並對其執行操作。

分配內存char* a;

,或者您也可以採取a字符數組像你這樣做是爲了b

1

您還沒有分配任何內存a。要麼通過執行char a[<some_length>];靜態分配內存爲char *a,要麼通過使用malloc函數動態地分配內存。

1

當你給這樣的東西char *a;這意味着它是一個指向字符類型的數據的指針。這裏,「a」是指向需要分配的內存位置的指針。

char *a分配內存,如a=malloc(20)或者您可以直接使用數組char a[20]。它解決了你的問題。