qqcmm1015 2023-05-24 17:41 采纳率: 61.8%
浏览 18

c语言根据字母找字符

Description
我们都知道人眼对自然界中的景物有不同的彩色感觉是因为日光(光源)包含有各种波长的可见光,
同时景物又具有不同的反射(或透射)特性的缘故。例如:西红柿具有反射红色光谱成分的特性,
在太阳光照射下其中的红色成分(吸收了其他光谱成分),所以人眼看到的西红柿是红色的。如果
把西红柿放到蓝光下,照射到西红柿上的蓝光被它吸收了,人眼看到的将是黑色的西红柿。

Input
我们在每组测试数据的第一行有一个字符,表示某个景物能够反射的颜色,第二行输入的是一行
字符串(长度不超过1000),表示一组照射到该景物上的光源(长度不超过26)。问,是否有光源
照射到景物上能够显示出景物的颜色,如果有则将每个光源按行输出,没有则输出“No!”。
有多组测试数据,每组测试数据的输出结果用一行空行分割开来。

Sample Input
r
ogr bg abc r
e
oga bw

Sample Output
ogr
r

No!

#include<stdio.h>
#include<string.h>
int main()
{
    char ch;
    int len,i,word,begin,num,ret,end,j,k;
    char a[1005];
    while(scanf("%c",&ch)!=EOF)
    {
        getchar();
        gets(a);
        len=strlen(a);
        word=0;j=0;num=0;
        for(i=j;i<=len-1;i++)
        {
            ret=-1;
            if(a[i]==' ')
            {
                word=0;
            }
            else if(a[i]!=' '&&word==0)
            {
                begin=i;
                word=1;
                for(j=begin;j<=len;j++)
                {
                    if(a[j]!=' ')
                    {
                        if(a[j]==ch)
                        {
                            ret=1;
                        }
                    }
                    else
                    {
                        end=j-1;
                        break;
                    }
                }
                end=j-1;
                if(ret==1)
                {
                    for(k=begin;k<=end;k++)
                    {
                        printf("%c",a[k]);
                    }
                    printf("\n");
                    num++;
                }
            }
            if(a[i]!=' ') i=end;
        }
        if(num==0) printf("No!\n");
        printf("\n");
    }
    return 0;
}

找找错误在哪里

  • 写回答

2条回答 默认 最新

  • @晓码自在 2023-05-24 17:46
    关注

    该回答引用ChatGPT4与博主@晓码自在合作编写:
    编译错误基本上有以下几种原因:

    1. 语法错误:如少括号、分号等,这会直接导致编译错误。需要检查每一行的语法是否正确。
    2. 类型不匹配:如把int赋值给char,这会产生无法隐式类型转换的错误。需要检查每个表达式和语句的数据类型是否匹配。
    3. 未定义的标识符:如使用了未定义的变量名、函数名等,这会产生标识符未定义的错误。需要检查每个变量、函数等是否已经定义过。
    4. 头文件缺失:如使用了某函数但未包含对应的头文件,这会产生函数未定义的错误。需要检查每个头文件是否已经包含。
    5. 其他:数组下标越界、重复定义、宏问题等也可能导致编译错误。
      根据这几种类型的错误,需要仔细检查代码,查找问题所在。一般通过阅读编译错误提示可以定位到出错的行数,甚至列数,然后看那一行和前后几行的代码,对照上述类型的错误进行分析查找。常见的手段还包括:
    6. 重要的Compiler Warning也需要关注,这样可以提前发现一些问题。
    7. 逐行注释代码,然后逐步反注释,定位具体的出错行。
    8. 使用printf等插入打印语句,查看变量值的变化,也可以帮助调试。
    9. 可以在出现错误的行附近插入一些中间变量,观察其值的变化,追踪错误源头。
    10. 也可使用IDE的Debug功能,逐语句执行代码,观察变量的值变化,找到问题原因。
    评论

报告相同问题?

问题事件

  • 创建了问题 5月24日

悬赏问题

  • ¥15 kotlin multiplaform 的共享模块支持蓝牙吗还是说安卓和ios的蓝牙都要自己配
  • ¥15 为什么我的查询总是显示无数据,该怎么修改呢(语言-java)
  • ¥15 IDDPM采样结果异常
  • ¥100 求一个,王者荣耀查询隐藏战绩的教材,爬虫代码
  • ¥60 Cocos creator缓动问题
  • ¥15 专业问题提问,7月5号2点之前
  • ¥25 使用cube ai 导入onnx模型时报错
  • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
  • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
  • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变