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);
} 展开
第一题源码
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);
} 展开
2个回答
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询