我正在阅读输入并尝试以图形格式打印所有输入的小写字符,能够读取它并跟踪每个字符重复但不能以图形方式打印的时间,可以你帮帮我吧这是我的代码
#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:*
答案 0 :(得分: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 );
答案 1 :(得分: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("*");
}