| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1869 人关注过本帖
标题:帮忙找错,这个程序错了四个地方,我实在没看出来
只看楼主 加入收藏
xyzw
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2016-5-18
结帖率:100%
收藏
 问题点数:0 回复次数:11 
帮忙找错,这个程序错了四个地方,我实在没看出来
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-05-18 20:48
xyzw
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2016-5-18
收藏
得分:0 
2016-05-18 20:51
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
1: char s[80]={0}--->char s[80]={'0'};    //字符型数组,每一个元素用单引号 不过这个不改好像问题也不大
2:char t[]="shu"-->char t[3]="shu";        //一维数组的长度必须固定
3:gets(s[0]);--->gets(s);                //gets()函数的参数是个指针
4:for(k=i,j=0;t[j]||s[k]==t[j];k++,j++);--->最后的分号去掉 //for()后面没有分号
5:算法好像有点不大对。

[此贴子已经被作者于2016-5-18 23:10编辑过]

2016-05-18 22:41
xyzw
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2016-5-18
收藏
得分:0 
回复 3楼 wanglianyi1
一维数组的长度必须固定吗?为啥我也看见过类似于s[ ]这种,而且是正确的,就是在定义char函数的时候
2016-05-18 23:59
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 4楼 xyzw
在数组一章中,曾介绍过数组的长度是预先定义好的, 在整个程序中固定不变。C语言中不允许动态数组类型。例如: int n;scanf("%d",&n);int a[n]; 用变量表示长度,想对数组的大小作动态说明, 这是错误的。但是在实际的编程中,往往会发生这种情况, 即所需的内存空间取决于实际输入的数据,而无法预先确定。对于这种问题, 用数组的办法很难解决。为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间, 也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。 其它文献中所提到的"动态数组",指的就是利用内存的申请和释放函数,在程序的运行过程中,根据实际需要指定数组的大小.其本质是一个指向数组的指针变量.常用的内存管理函数有以下三个:
1.分配内存空间函数malloc
2.分配内存空间函数 calloc
3.释放内存空间函数free
2016-05-19 10:34
xyzw
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2016-5-18
收藏
得分:0 
按照上述的修改之后,测试还是失败了
2016-05-19 13:03
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:0 
1.gets(s);
2.*(s+i)
3.t[j]=='\0'||s[k]==t[j],for后面的分号去掉
4.if(t[j]=='\0')
顺便说一下,char t[]="shu"等价于char t[4]="shu"
不要误导别人


[此贴子已经被作者于2016-5-19 15:03编辑过]


未佩好剑,转身便已是江湖
2016-05-19 13:42
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 4楼 xyzw
数组定义的时候已经初始化"shu"了,系统会根据初始化内容自动判断数组长度,忘记这条了,不好意思啊;
不过我认为如果可以确定数组长度就尽量明确写出,不要因为初始化了就不去写长度,个人认为这是个不好的习惯。
2016-05-19 14:52
xyzw
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2016-5-18
收藏
得分:0 
回复 8楼 wanglianyi1
恩恩。还是很谢谢你了!
2016-05-19 15:11
xyzw
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2016-5-18
收藏
得分:0 
回复 7楼 alice_usnet
我改了,可是测试还是不对,好像是一直循环下去的

程序代码:
#include <stdio.h>
int main()
{
   int i, j, k, count=0;  
   char s[80]={0}, t[]="shu";
   gets(s);/***/
   for(i=0; *s+i; i++)/***/
   {  for(k=i, j=0; t[j]||s[k]==t[j]; k++, j++)/***/
          if(t[j]=='\0')/***/
            {  printf("%d ",i);
                count++;
            }
   }  
   if(count)
     printf("%d\n",count);
   else
      printf("no shu.\n");
   return 0;
}
2016-05-19 15:13
快速回复:帮忙找错,这个程序错了四个地方,我实在没看出来
数据加载中...
 
   



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

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