0

我正在阅读输入并尝试以图形格式打印所有输入的小写字符,能够阅读并跟踪每个字符重复的次数,但无法以图形方式打印,你能帮忙吗我出去。这是我的代码

#include <stdio.h>
#include <ctype.h>
int print_fun(int);
int main()  {
int ch = 0, i = 0;
int char_count[26] = {0};
printf("\nNOTE:PRESS * TO EXIT\n");
while((ch = getchar()) != '*')    {
    if(islower(ch))
        char_count[ch - 'a']++;
}
printf("\n");
for(i = 0; i < 26; i++)
    //printf("%c:%d\n",'a'+ i, char_count[i]);
    //printf("%c:\n", 'a'+ i, print_star(char_count[i]));
    printf("%c:\n",print_star(char_count[i]),'a'+ i);
printf("\n");
return 0;
}
int print_star(int value)  {
int i = 0;
for(i = 0; i < value; i++)
printf("*");
}

o/p: aaxyyz

a:**
b:
c:
...
...
x:*
y:**
z:*
4

2 回答 2

1
#include <stdio.h>
#include <ctype.h>

//int print_fun(int);
void print_star(int);

int main(void){
    int ch = 0, i = 0;
    int char_count[26] = {0};
    printf("\nNOTE:PRESS * TO EXIT\n");
    while((ch = getchar()) != '*'){
        if(islower(ch))
            char_count[ch - 'a']++;
    }
    printf("\n");
    for(i = 0; i < 26; i++){
        printf("%c:",'a'+ i);
        print_star(char_count[i]);
        printf("\n");
    }
    printf("\n");
    return 0;
}

void print_star(int value){
    int i = 0;
    for(i = 0; i < value; i++)
        printf("*");
}
于 2013-05-20T11:19:39.520 回答
1

您的printf电话缺少格式参数,您有这个:

printf("%d:%c\n",print_star(char_count[i]),'a'+ i);

但是您将两个参数传递给printf,据我所知,这就是您的意思:

printf("%d:%c\n",print_star(char_count[i]),'a'+ i);

另外,print_star有一个返回值,int但你没有return声明,我认为你打算返回i,在这种情况下你应该添加:

return i ;

在最后。最后没有返回的行为是未定义的。最后,看起来你在前向声明中有一个错字,这个:

int print_fun(int);

应该:

int print_star(int value );
于 2013-05-20T02:13:08.733 回答