C语言这两道题无输出QAQ 10

这两道指针题编译都没报错,但是都没有输出,不知道哪错了。求大佬帮忙看看,后面那道是改错题。第一题源码intmain(){inti,t=0,sum=0,ave;char*p... 这两道指针题编译都没报错,但是都没有输出,不知道哪错了。求大佬帮忙看看,后面那道是改错题。
第一题源码
int main()
{
int i,t=0,sum=0,ave;
char *p,*q;
char s[300],word[81];
p=s;q=word;
for(i=0;i<81;i++)word[i]=0;
gets(s);
for(p=s;*p;p++)
{
if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')*q++;
if(*p==' '&&*(p++)!=' ')q++;
}
if(*p=='\0')
*(++q)='\0';
for(q=word;*q;q++)
{
sum=*q+sum;
t++;
}
ave=sum/t;
printf("总共有%d个单词,平均长度为%d\n",t,ave);
return 0;
}
第二题
#define N 80
void MyStrcat(char *dstStr, char *srcStr);
void main()
{
char s[N], t[N];
char *p=s,*q=t;
printf("Input a string:\n");
gets(s);
printf("Input another string:\n");
gets(t);
MyStrcat(p,q);
}
void MyStrcat(char *dstStr, char *srcStr)
{
char *p=dstStr;
while (*dstStr != '\0');
{
dstStr++;
}
while (*srcStr != '\0');
{
*dstStr = *srcStr;
srcStr++;
dstStr++;
}
*dstStr='\0';
printf("Concatenate results:\n");
dstStr=p;
puts(dstStr);
}
展开
 我来答
匿名用户
2018-12-09
展开全部

第二题 把while后面的分号去掉

第一题给你改了代码,主要是箭头指的地方,自己注意下。

#include <stdio.h>

int main()
{
int i,t=0,sum=0,ave;
char s[300],word[81];
char *p = s,*q = word;

for(i=0;i<81;i++)
        word[i]=0;

gets(s);

for(;*p;p++)
{
if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z'))
(*q)++;
if(*p==' '&&*(p+1)!=' ')
q++;
}
if(*p=='\0')
*(++q)='\0';
for(q=word;*q;q++)
{
sum=*q+sum;
t++;
}
ave=sum/t;
printf("总共有%d个单词,平均长度为%d\n",t,ave);

return 0;
}
克克卡7
2018-12-09 · TA获得超过2284个赞
知道大有可为答主
回答量:4801
采纳率:84%
帮助的人:536万
展开全部
我说三个注意点,第一,除数不能为零,第二,题目没有要求多实例,第三,输入第一个数(K)如果是大于20的你的数组纵向会越界。
一个建议,输入时候已经可以判断,无需数组存储可以直接判定,
追问
说的是求单词平均长度题吗?数组纵向越界是啥意思啊?我把句子当成字符串存,然后扫描单词,不懂为啥会越界啊?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式