| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1090 人关注过本帖
标题:计算机为什么会这么这样??
只看楼主 加入收藏
lemonandtree
Rank: 2
等 级:论坛游民
帖 子:74
专家分:10
注 册:2017-10-5
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:4 
计算机为什么会这么这样??
照片中第五题,我自己写的代码
程序代码:
#include<iostream>
using namespace std;
const int N=5;
void f(char(*p)[20],char*q);
void main()
{
    char str[N][20],(*p)[20]=str;
    char*ptfind="c++";
    int i;
    for(i=0;i<N;i++)
        gets(*(p+i));
    f(str,ptfind);
}
void f(char(*p)[20],char*q)
{
    int j;
    for(j=0;j<N;j++)
        if(*(p+j)[0]==*q)
            cout<<"找到了"<<endl;
        else
          cout<<"没找到"<<endl;
    for(j=0;j<N;j++)
        cout<<*(p+j)[0]<<endl;
}
我的问题是为什么
if(*(p+j)[0]==*q)
我只取每行的一个字符与“c++“比较也能输出找到了,我把输出结果截了屏。
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 计算机 int void char cout 
2017-12-07 13:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
我只取每行的一个字符与“c++“比较也能输出找到了
怎么啦?!但你的算法不合题意,题目要求找到相同的字符串,而非第一个字符相同就可以。
比如你输入“cshit”,你的代码输出的是“找到了”

另外,非常严重的是,你得换本书了。
就你这代码去面试,别人失败了还能得到一个“下次有机会再合作”,而你的代码被面试官看到了,肯定是个“滚”,不说二字。

程序代码:
#include<iostream>           // #include <iostream>
using namespace std;
const int N=5;               // const size_t N = 5;
void f(char(*p)[20],char*q); // void f( const char (*)[20], const char* q );
void main()                  // int main( void )
{
    char str[N][20],(*p)[20]=str;
    char*ptfind="c++";       // const char* ptfind = "c++";
    int i;                   // 删除,并入下句
    for(i=0;i<N;i++)         // for( size_t i=0; i!=N; ++i )
        gets(*(p+i));        // gets早就被标准废弃了,使用 fgets
    f(str,ptfind);
}

2017-12-07 14:07
lemonandtree
Rank: 2
等 级:论坛游民
帖 子:74
专家分:10
注 册:2017-10-5
收藏
得分:0 
谢谢你指出我的毛病,首先我想请问是我写的代码烂是因为书的问题吗?我是一名大一计算机系新生,这本书是学校的教材
图片附件: 游客没有浏览图片的权限,请 登录注册
同时您有什么推荐吗?然后我本来是把
if(*(p+j)[0]==*q)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout<<"找到了"<<endl;
中的[0]去掉的,但这样会报错,报错显示表示出一行的字符数组也就是去掉[0]之后的类型和*q的不匹配,这我就弄不明白了?
2017-12-07 16:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
回复 3楼 lemonandtree
if(*(p+j)[0]==*q)
改为
if( strcmp(p[j],q) == 0 )
2017-12-08 08:10
lemonandtree
Rank: 2
等 级:论坛游民
帖 子:74
专家分:10
注 册:2017-10-5
收藏
得分:0 
知道了,谢谢。
2017-12-08 08:40
快速回复:计算机为什么会这么这样??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019218 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved