| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1137 人关注过本帖
标题:函数调用遇到的问题
只看楼主 加入收藏
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:27 
函数调用遇到的问题
程序代码:
#include<stdio.h>
#include<ctype.h>
#include<stdbool.h> 

#define N 26

void read_word(int counts[N]);
bool equal_array(int counts1[N], int counts2[N]);

int main()
{
    int counts[N], counts1[N], counts2[N], j;
    char ch, a[N];
    
    printf("Enter first word:");
    read_word(counts1);
    
    printf("Enter second word:");
    read_word(counts2);
    bool equal_array(counts1, counts2);
    
    if (j = true)             //@
       printf("\nThe waords are anagrams.\n");
    else
       printf("The waords are not anagrams.\n");
       
    return 0;   
}   

void read_word(int counts[N])
{
    int i;
    char a[N];
    
    for(i = 0; i < N; i++)
    scanf("%d", &a[i]);
    tolower(a[i]);
    isalpha(a[i]);
}

bool equal_array(int counts1[N], int counts2[N])
{   
    int i,j;
    for(i = 0; i < N; i++){
        if(counts1[i] == counts2[i])
          return j = true;
        else
          return j = false;  
    }
    
}

编程测试2个单词是否为变位词(相同字母的重新排列  比如smartest   mattress)..问题有2。1.为什么第二次调用read_word函数的时候不会出来那个输入第二个单词的呢?   2.如果最后return true或者false那么注释@的那个地方该如何改动呢?直接if (true)???虚心求教
搜索更多相关主题的帖子: color 
2015-09-22 21:13
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:5 
没有编译,发现两个问题
A:read_word()函数设计的时候有一个问题:
for(i = 0; i < N; i++)
    scanf("%d", &a[i]);
    tolower(a[i]);
    isalpha(a[i]);
这样写好嘛?
B:if (j = true)
为什么是=而不是==

2015-09-22 21:24
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
#include<stdio.h>#include<ctype.h>#include<string.h> #include<conio.h>#define N 80void read_word(char counts[N]);bool equal_array(char counts1[N], char counts2[N]);int main(){    char counts[N], counts1[N], counts2[N];    bool j;    char ch, a[N];        printf("Enter first word:");    read_word(counts1);        printf("Enter second word:");    read_word(counts2);    j=equal_array(counts1, counts2);        if (j == true)                    printf("\nThe words are anagrams.\n");    else       printf("The words are not anagrams.\n");           return 0;   }   void read_word(char counts[N]){    int i;     for(i = 0;true; i++)    {        scanf("%c", &counts[i]);        tolower(counts[i]);        if(counts[i]=='\n')        {            counts[i]='\0';            break;        }        }     fflush(stdin);}void sort(char a[N]){    for(int i=0;i<strlen(a)-1;i++)    {        for(int j=0;j<strlen(a)-i-1;j++)        {            if(a[j]>a[j+1])            {                a[j]=a[j]+a[j+1];                a[j+1]=a[j]-a[j+1];                a[j]=a[j]-a[j+1];            }        }    }}bool equal_array(char counts1[N], char counts2[N]){       int i,j;     if(strlen(counts1)!=strlen(counts2))        return false;    sort(counts1);    sort(counts2);    for(i = 0; i < strlen(counts1); i++){         if(counts1[i] != counts2[i])          return false;      }    return true;    }

剑栈风樯各苦辛,别时冰雪到时春
2015-09-22 22:51
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
格式怎么…

[ 本帖最后由 林月儿 于 2015-9-22 22:54 编辑 ]

剑栈风樯各苦辛,别时冰雪到时春
2015-09-22 22:52
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:8 
程序代码:
#include<stdio.h>
#include<ctype.h>
#include<string.h> 
#include<conio.h>
#define N 80

void read_word(char counts[N]);
bool equal_array(char counts1[N], char counts2[N]);

int main()
{
    char counts[N], counts1[N], counts2[N];
    bool j;
    char ch, a[N];
    
    printf("Enter first word:");
    read_word(counts1);
    
    printf("Enter second word:");
    read_word(counts2);
    j=equal_array(counts1, counts2);
    
    if (j == true)             
       printf("\nThe words are anagrams.\n");
    else
       printf("The words are not anagrams.\n");
       
    return 0;   
}   

void read_word(char counts[N])
{
    int i; 
    for(i = 0;true; i++)
    {
        scanf("%c", &counts[i]);
        tolower(counts[i]);
        if(counts[i]=='\n')
        {
            counts[i]='\0';
            break;
        }    
    } 
    fflush(stdin);
}
void sort(char a[N])
{
    for(int i=0;i<strlen(a)-1;i++)
    {
        for(int j=0;j<strlen(a)-i-1;j++)
        {
            if(a[j]>a[j+1])
            {
                a[j]=a[j]+a[j+1];
                a[j+1]=a[j]-a[j+1];
                a[j]=a[j]-a[j+1];
            }
        }
    }
}
bool equal_array(char counts1[N], char counts2[N])
{   
    int i,j; 
    if(strlen(counts1)!=strlen(counts2))
        return false;
    sort(counts1);
    sort(counts2);
    for(i = 0; i < strlen(counts1); i++){ 
        if(counts1[i] != counts2[i])
          return false;  
    }
    return true;
    
}

剑栈风樯各苦辛,别时冰雪到时春
2015-09-23 06:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
回复 楼主 达尔文
你逐行解釋一下read_word()中每一句的意思來看看?錯的地方太多,亂來。

授人以渔,不授人以鱼。
2015-09-23 12:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 5楼 林月儿
你的read_word()函數也是有毛病的

授人以渔,不授人以鱼。
2015-09-23 13:01
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 7楼 TonyDeng
对C语言研究不全面,不深入。请多指教
想要的效果是换行符结束输入,不知道问题怎么发现、、、请指教

剑栈风樯各苦辛,别时冰雪到时春
2015-09-23 13:04
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 5楼 林月儿
非常感谢,这是一种算法。这应该是先将他们排序然后再比较吧。那么for(j = 0; j < strlen(a) - i - 1; j++)换成for(j = 0; j < strlen(a) - 1; j++)可以吗?会不会更好理解呢。根据你的帮助,我把这两种算法重新理理,谢啦

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-23 13:05
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
以下是引用达尔文在2015-9-23 13:05:09的发言:

非常感谢,这是一种算法。这应该是先将他们排序然后再比较吧。那么for(j = 0; j < strlen(a) - i - 1; j++)换成for(j = 0; j < strlen(a) - 1; j++)可以吗?会不会更好理解呢。根据你的帮助,我把这两种算法重新理理,谢啦


不是好理解不好理解的问题,这是经典冒泡排序法,你的改法加大平均时间复杂度
我建议不要改

剑栈风樯各苦辛,别时冰雪到时春
2015-09-23 13:07
快速回复:函数调用遇到的问题
数据加载中...
 
   



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

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