|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main(){
char c[100];
gets(c);
{
int j,i,count=0,a[];
for(i=0,i<=strlen(c),i++)
a[i]=int c[i];
for(j=000,j<=255,j++)
{if(a[i]==j)
count=count+1;
else count=count;
printf("%c-->%d/n",j,count);
count=0;}
}
return 0;
}
本帖最后由 sfqxx 于 2023-5-7 10:54 编辑
这段代码存在一些语法错误和逻辑问题。以下是需要修正的内容:
1. `for(i=0,i<=strlen(c),i++)` 应该改为 `for(i=0;i<=strlen(c);i++)`,即将两个逗号改为分号。
2. `int j,i,count=0,a[];` 中的 `a[]` 应该指定数组大小。因为字符串 `c` 的长度最多为 100,所以可以定义 `a[100]`。
3. `a[ i]=int c[ i];` 应该改为 `a[i ]=(int)c[ i];`,即强制类型转换的写法应该为 `(type)value` 的形式。
4. `for(j=000,j<=255,j++)` 应该改为 `for(j=0;j<=255;j++)`,即去掉前面不必要的 0。
5. `else count=count;` 这一行没有意义,可以直接删去。
6. `%n` 应该改为 `\n`,表示输出一个换行符。
修改后的代码如下:
- #include <stdio.h>
- #include <string.h>
- int main() {
- char c[100];
- gets(c);
- {
- int j, i, count = 0, a[100];
- for (i = 0; i <= strlen(c); i++)
- a[i] = (int)c[i];
- for (j = 0; j <= 255; j++) {
- for (i = 0; i <= strlen(c); i++) {
- if (a[i] == j) {
- count++;
- }
- }
- printf("%c-->%d\n", j, count);
- count = 0;
- }
- }
- return 0;
- }
复制代码
这个程序的作用是统计用户输入的字符串中每个字符的出现次数,并以 ASCII 码表的形式输出。运行时需要注意,`gets()` 函数已经不推荐使用了,可以改用 `fgets()`。另外,一些编译器可能会对 `%c` 的边界做出限制,导致无法输出 ascii 码值大于 127 的字符,可以使用 `%d` 代替。
有用请设置最佳答案!
|
|