一道C语言题目。麻烦各位给个解释。先谢谢

#include<stdio.h>#include<string.h>voidfun(char*p,char*q,char*c){/************found**... #include <stdio.h>
#include <string.h>
void fun(char *p ,char *q, char *c)
{
/************found************/
int k = 1;
/************found************/
while( *p != *q )
{ if( *p<*q ) c[k]=*q;
else c[k]=*p;
if(*p) p++;
if(*q) q++;
k++;
}
}
main()
{ char a[10]="aBCDeFgH", b[10]="ABcd", c[80]={'\0'};
fun(a,b,c);
printf("The string a: "); puts(a);
printf("The string b: "); puts(b);
printf("The result : "); puts(c);
}
#include <stdio.h>
#include <string.h>
void fun(char *p ,char *q, char *c)
{
/************found************/
int k = 0;
/************found************/
while( *p ||*q )
{ if( *p<*q ) c[k]=*q;
else c[k]=*p;
if(*p) p++;
if(*q) q++;
k++;
}
}
main()
{ char a[10]="aBCDeFgH", b[10]="ABcd", c[80]={'\0'};
fun(a,b,c);
printf("The string a: "); puts(a);
printf("The string b: "); puts(b);
printf("The result : "); puts(c);
}

while( *p ||*q )这一步不是太清楚,麻烦解释下。或关系。结合下面的函数
展开
 我来答
万盛一霸
2011-07-19 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:55.8万
展开全部
首先你需要知道c语言中0表示假非0(0以外)表示真
while(*p||*q)
表示指针p指向的当前值为真 或者(||)指针q指向的当前值为真
就进入while循环
止咳糖浆79
2011-07-19 · 超过32用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:86.7万
展开全部
||双竖线与&&具有类似的含义:
&&相当于单分支的if语句,意为:
如果&&左边为真,则判断右边是否也是为真值
||的含义则是:如果双竖线左边值为真,不管右边值如何,都立即执行判断条件后边的语句块;只有当左边值不成立(此题含义为*p值为空的情况),才顺序去判断右边值的 真假(*q是否为空),啰嗦了点,目的是为了提高程序的执行效率(只要*p存在,就不必要再判断*q了)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bazhu0916
2011-07-19 · 超过16用户采纳过TA的回答
知道答主
回答量:106
采纳率:0%
帮助的人:73.9万
展开全部
|| 是 或 运算符
*p ||*q 这句 当*p 或者 *q 有一个为真或者两个都为真 则表达式*p ||*q 就为真 整个语句输出1
注意: 当*p 为真是 不对*q进行判断 表达式*p ||*q 就为真了 输出1
如你的 while语句循环到 q[4] 和p[4]的时候(要知道p[4]和a[4]是等价的,q[4]和b[4]是等价的)
q[4]的值是字符e对应的ASCII的值101(十进制),p[4]的值是\0对应的ASCII的值0,
那么q[4]为真,表达式*p ||*q 也为真了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
boqing6633
2011-07-19
知道答主
回答量:19
采纳率:0%
帮助的人:11.6万
展开全部
while( *p ||*q )就相当于while( (*p!=0) ||(*q!=0) )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-07-19
展开全部
这里首先你要明白一个数组
如name[10] ,他的数组名其实是一个指针。而
指针==地址 数组名是该数组的第一个元素的地址,也可以说是指向第一个元素的指针。
放到结构体里面也一样。
这里s[0].name 是指向s[0]里,name数组第一个元素的指针,即s[0]里name[]数组第一个元素的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
皇城飞飞
2011-07-19
知道答主
回答量:9
采纳率:0%
帮助的人:3.6万
展开全部
while( *p ||*q )
这句是说当*p或*q的值不为空,这是两个指针,也就是说指针有指向,不是个空的指针的时候。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式