Anonymous 发表于 2024-4-4 20:43:16

作业发问

#include <stdio.h>
#include <math.h>

int main()
{
        char str={"asnd123dc"};
        int i,ch1=0,ch2=0;
       
        printf("请输入待转换的字符串:\n");
       
        for(i=0 ; i<=9; i++){
          if( (str< 'A' && str>'Z' ) || (str< 'a' && str>'z' ) ){
                ch1 = i;
                }break;       
        }
        for(i=0 ; i<=9 && i>=ch1; i++){
        if( (str>='A'&& str<='Z' ) || (str>='a' && str<='z')){
                        ch2 = i - 1;
          }
        else
          ch2 = 9;
        break;
    }
        for(i=0 ; i<=ch2 && i>=ch1 ; i++){
                printf("%s",str);
    }
    return 0;      
}




应该怎么修改呢

FishC 发表于 2024-4-4 20:43:33

你的代码有一些错误和逻辑问题,我看不出你想要实现的功能是什么。不过,我猜测你可能是想要统计字符串中字母和数字的个数,并输出结果。

首先,你需要包含头文件<stdio.h>来使用printf函数。

然后,你声明了一个字符串变量str,但是你的赋值方式是错误的。正确的赋值方式是使用双引号包围字符串,例如:"asnd123dc"。

接下来,你声明了一个整型变量i,并初始化了两个字符变量ch1和ch2,但是在后续的代码中并没有用到ch2,所以可以删除。

在用户输入待转换的字符串之前,你应该先使用printf函数打印一个提示信息。

接下来,你用一个for循环来遍历字符串,但是循环条件和循环体的代码写得不正确,导致编译错误。你可以通过使用strlen函数来获取字符串的长度,并用一个for循环来遍历字符串中的每个字符。

在遍历字符串时,你可以使用isdigit函数来判断字符是否是数字,使用isalpha函数判断字符是否是字母。根据判断结果,你可以分别对数字和字母的个数进行计数。

最后,你可以使用printf函数来输出计数结果。

综合上述修改,你可以尝试以下代码:

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

int main()
{
    char str[] = "asnd123dc";
    int i, num_count = 0, letter_count = 0;

    printf("请输入待转换的字符串:\n");

    for (i = 0; i < strlen(str); i++) {
      if (isdigit(str)) {
            num_count++;
      } else if (isalpha(str)) {
            letter_count++;
      }
    }

    printf("数字个数:%d\n", num_count);
    printf("字母个数:%d\n", letter_count);

    return 0;
}

希望这能帮到你!如果你还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

sfqxx 发表于 2024-4-4 20:52:28

看看

王泽元 发表于 2024-4-5 20:54:39


#include <stdio.h>

int main()
{
      int ch,a=0,e=0,i=0,o=0,u=0,k=0,sum;
      char m;
      
      printf("请输入英文句子:");
      for(k=0;k<20;k++){
            scanf("%c",m);
            
            if(m == 'a'){
                  a++;break;
                }
                if(m == 'e'){
                  e++;break;
                }
                if(m == 'i'){
                  i++;break;
                }
                if(m == 'o'){
                  o++;break;
                }
                if(m == 'u'){
                  u++;break;
                }
      }
      sum = a+e+i+o+u;
    printf("您输入的句子中,包含元音字母%d个!\n",sum);
    printf("其中:a(%d),e(%d),i(%d),o(%d),u(%d)",a,e,i,o,u);
      return 0;
}

王泽元 发表于 2024-4-5 20:55:40

王泽元 发表于 2024-4-5 20:54
#include

int main()


询问代码的问题

王泽元 发表于 2024-4-5 20:59:01

王泽元 发表于 2024-4-5 20:54
#include

int main()


找到答案了,输入搞错了

王泽元 发表于 2024-4-6 20:00:37


int main()
{
        int i;
        double a,sum,n;
        for( i=0,n=0 ; fabs(a)>=pow(10,-8) ;i++,n++){
                a = (1/(2*n+1)) * pow(-1,n);
                sum += a;
        }
        printf("%.7e",sum);
        return 0;
}
求助,代码的问题

王泽元 发表于 2024-4-6 20:01:13

FishC 发表于 2024-4-4 20:43
你的代码有一些错误和逻辑问题,我看不出你想要实现的功能是什么。不过,我猜测你可能是想要统计字符串中字 ...


int main()
{
        int i;
        double a,sum,n;
        for( i=0,n=0 ; fabs(a)>=pow(10,-8) ;i++,n++){
                a = (1/(2*n+1)) * pow(-1,n);
                sum += a;
        }
        printf("%.7e",sum);
        return 0;
}
求助代码的问题,求圆周率

FishC 发表于 2024-4-6 20:01:31

王泽元 发表于 2024-04-06 20:01
int main()
{
        int i;
        double a,sum,n;
        for( i= ...

你的代码有一个小错误,导致输出结果不正确。在每次迭代中,你计算了a的值,并将其加到sum上,但是在下一次迭代之前,你没有将a重新赋值为0。这会导致在计算sum时,重复使用了上一次迭代的a的值。为了解决这个问题,你可以在每次循环开始的时候,将a的值重新设置为0。另外,你的for循环的终止条件是fabs(a)>=pow(10,-8),但是在迭代过程中,并没有对变量a进行更新操作,因此这个条件一直为真,导致无限循环。为了解决这个问题,你可以将变量n作为循环的控制变量,当n达到一定值时,终止循环。下面是修改后的代码:#include #include int main(){    int i;    double a, sum = 0, n = 0;    for (i = 0; n < 100000; i++, n++) {      a = (1 / (2 * n + 1)) * pow(-1, n);      sum += a;      a = 0;    }    printf("%.7e", sum);    return 0;}这段代码将计算出圆周率的近似值,并以科学计数法的形式输出。你可以自行调整循环的次数来增加精度。希望能帮到你!如有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 作业发问