鱼C论坛

 找回密码
 立即注册
查看: 489|回复: 8

作业发问

[复制链接]
匿名鱼油
匿名鱼油  发表于 2024-4-4 20:43:16 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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




应该怎么修改呢
Quicker_20240404_204143.png
回复

使用道具 举报

发表于 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[i])) {
            num_count++;
        } else if (isalpha(str[i])) {
            letter_count++;
        }
    }

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

    return 0;
}

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-4 20:52:28 | 显示全部楼层

回帖奖励 +10 鱼币

看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[20];
      
        printf("请输入英文句子:");
        for(k=0;k<20;k++){
            scanf("%c",m[k]);
            
            if(m[k] == 'a'){
                    a++;break;
                }
                if(m[k] == 'e'){
                    e++;break;
                }
                if(m[k] == 'i'){
                    i++;break;
                }
                if(m[k] == 'o'){
                    o++;break;
                }
                if(m[k] == '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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-5 20:55:40 | 显示全部楼层

询问代码的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-5 20:59:01 | 显示全部楼层

找到答案了,输入搞错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
求助,代码的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
求助代码的问题,求圆周率
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 21:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表