一道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 )这一步不是太清楚,麻烦解释下。或关系。结合下面的函数 展开
#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 )这一步不是太清楚,麻烦解释下。或关系。结合下面的函数 展开
6个回答
展开全部
||双竖线与&&具有类似的含义:
&&相当于单分支的if语句,意为:
如果&&左边为真,则判断右边是否也是为真值
||的含义则是:如果双竖线左边值为真,不管右边值如何,都立即执行判断条件后边的语句块;只有当左边值不成立(此题含义为*p值为空的情况),才顺序去判断右边值的 真假(*q是否为空),啰嗦了点,目的是为了提高程序的执行效率(只要*p存在,就不必要再判断*q了)
&&相当于单分支的if语句,意为:
如果&&左边为真,则判断右边是否也是为真值
||的含义则是:如果双竖线左边值为真,不管右边值如何,都立即执行判断条件后边的语句块;只有当左边值不成立(此题含义为*p值为空的情况),才顺序去判断右边值的 真假(*q是否为空),啰嗦了点,目的是为了提高程序的执行效率(只要*p存在,就不必要再判断*q了)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
|| 是 或 运算符
*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 也为真了
*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 也为真了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while( *p ||*q )就相当于while( (*p!=0) ||(*q!=0) )
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-07-19
展开全部
这里首先你要明白一个数组
如name[10] ,他的数组名其实是一个指针。而
指针==地址 数组名是该数组的第一个元素的地址,也可以说是指向第一个元素的指针。
放到结构体里面也一样。
这里s[0].name 是指向s[0]里,name数组第一个元素的指针,即s[0]里name[]数组第一个元素的地址。
如name[10] ,他的数组名其实是一个指针。而
指针==地址 数组名是该数组的第一个元素的地址,也可以说是指向第一个元素的指针。
放到结构体里面也一样。
这里s[0].name 是指向s[0]里,name数组第一个元素的指针,即s[0]里name[]数组第一个元素的地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while( *p ||*q )
这句是说当*p或*q的值不为空,这是两个指针,也就是说指针有指向,不是个空的指针的时候。
这句是说当*p或*q的值不为空,这是两个指针,也就是说指针有指向,不是个空的指针的时候。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询