C语言两道题,求运行结果。 请写出详细分析过程!!谢谢!满意答案与解释者给分
1、#include<stdio.h>main(){charstr[]="helloeverybody";inti=1,j=0;while(str[i]!='\0'){i...
1、#include <stdio.h>
main()
{char str[]="helloeverybody";
int i=1,j=0;
while(str[i]!='\0'){
if(str[i]>str[j]) j=i;
i++;
}
str[j]=str[i];
puts(str);
}
2、
#include <stdio.h>
int order(int a[],int i)
{return a[i]<a[i+1];
}
void main()
{
int n,a[]={29,5,18,8,5,3,8,2};
for(n=0;n<7;n++)
if(order(a,n))
printf("%d,%d\n",a[n],a[n+1]);
}
答案是
1、 helloever
2、 5,18
3,8 展开
main()
{char str[]="helloeverybody";
int i=1,j=0;
while(str[i]!='\0'){
if(str[i]>str[j]) j=i;
i++;
}
str[j]=str[i];
puts(str);
}
2、
#include <stdio.h>
int order(int a[],int i)
{return a[i]<a[i+1];
}
void main()
{
int n,a[]={29,5,18,8,5,3,8,2};
for(n=0;n<7;n++)
if(order(a,n))
printf("%d,%d\n",a[n],a[n+1]);
}
答案是
1、 helloever
2、 5,18
3,8 展开
展开全部
main()
{char str[]="helloeverybody";
int i=1,j=0;
while(str[i]!='\0')
{
if(str[i]>str[j]) j=i; //此处的循环表示字符数组里的元素,后面一个比前面一个大,那么就把后面的索 引赋给前者,如此循环,找不最大的字符,由于字符'y'最大,那么j的索引指向'y',而str[i]就为'\0'了;
i++;
}
str[j]=str[i]; //把‘\0’赋给'y',即去掉从'y'开始的字符串.
puts(str); //即答案为:helloever
}
#include <stdio.h>
int order(int a[],int i)
{return a[i]<a[i+1]; //数组中后面的元素比前面大,那么就返回真,否则返回假.
}
void main()
{
int n,a[]={29,5,18,8,5,3,8,2};
for(n=0;n<7;n++)
if(order(a,n)) //如果返回真,就输出
printf("%d,%d\n",a[n],a[n+1]);
}
即答案为:
5 18
3 8
{char str[]="helloeverybody";
int i=1,j=0;
while(str[i]!='\0')
{
if(str[i]>str[j]) j=i; //此处的循环表示字符数组里的元素,后面一个比前面一个大,那么就把后面的索 引赋给前者,如此循环,找不最大的字符,由于字符'y'最大,那么j的索引指向'y',而str[i]就为'\0'了;
i++;
}
str[j]=str[i]; //把‘\0’赋给'y',即去掉从'y'开始的字符串.
puts(str); //即答案为:helloever
}
#include <stdio.h>
int order(int a[],int i)
{return a[i]<a[i+1]; //数组中后面的元素比前面大,那么就返回真,否则返回假.
}
void main()
{
int n,a[]={29,5,18,8,5,3,8,2};
for(n=0;n<7;n++)
if(order(a,n)) //如果返回真,就输出
printf("%d,%d\n",a[n],a[n+1]);
}
即答案为:
5 18
3 8
展开全部
main()
{char str[]="helloeverybody";
int i=1,j=0;
while(str[i]!='\0'){//如果没到字符串结尾,则继续
if(str[i]>str[j]) j=i; //相当于j指向字符串中的最大字符,如果i指向的字符>j指向的字符,则j指向i指向的字符
i++;//下一个字符
}
由 str[]="helloeverybody"来看,j->第一个y时(j=9),不再有比它更大的字符。
str[j]=str[i];//此时j=9, i = 14 str[14]='\0' ,即str[9] = '\0',结束符
puts(str); // = "helloever"
}
2、
#include <stdio.h>
int order(int a[],int i) {
return a[i]<a[i+1];// a>b 结果为
}
void main()
{
int n,a[]={29,5,18,8,5,3,8,2};
for(n=0;n<7;n++)
if(order(a,n))
printf("%d,%d\n",a[n],a[n+1]);
}
n=0 29<5为假,返回值为0,不输出
n=1 5<18为真,返回值为1, 输出5,18
n=2 18<8为假,返回值为0, 不输出
n=4 8<5为假,返回值为0,不输出
n=5 5<3为假,返回值为0,不输出
n=6 3<8为真,返回值1,输出3,8
{char str[]="helloeverybody";
int i=1,j=0;
while(str[i]!='\0'){//如果没到字符串结尾,则继续
if(str[i]>str[j]) j=i; //相当于j指向字符串中的最大字符,如果i指向的字符>j指向的字符,则j指向i指向的字符
i++;//下一个字符
}
由 str[]="helloeverybody"来看,j->第一个y时(j=9),不再有比它更大的字符。
str[j]=str[i];//此时j=9, i = 14 str[14]='\0' ,即str[9] = '\0',结束符
puts(str); // = "helloever"
}
2、
#include <stdio.h>
int order(int a[],int i) {
return a[i]<a[i+1];// a>b 结果为
}
void main()
{
int n,a[]={29,5,18,8,5,3,8,2};
for(n=0;n<7;n++)
if(order(a,n))
printf("%d,%d\n",a[n],a[n+1]);
}
n=0 29<5为假,返回值为0,不输出
n=1 5<18为真,返回值为1, 输出5,18
n=2 18<8为假,返回值为0, 不输出
n=4 8<5为假,返回值为0,不输出
n=5 5<3为假,返回值为0,不输出
n=6 3<8为真,返回值1,输出3,8
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
3,8函数1;结果为helloever;
因为str[i]!='\0’,所以退出循环时,str[i]='\0‘;
由于句子中y最大根据ASCII表;所以句子第一个y被换成'\0'(因为y不大于y);所以printf函数遇到‘、0’结束输出,都答案如此!!!!
函数2:结果为5,18
3,8
由于比较的返回值为徒true或者false;
所以当a[i]<a[i+1]成立时,输出a[i]与a[i+1];故答案如此!!!!!!!!!!!!!!!!!!!
因为str[i]!='\0’,所以退出循环时,str[i]='\0‘;
由于句子中y最大根据ASCII表;所以句子第一个y被换成'\0'(因为y不大于y);所以printf函数遇到‘、0’结束输出,都答案如此!!!!
函数2:结果为5,18
3,8
由于比较的返回值为徒true或者false;
所以当a[i]<a[i+1]成立时,输出a[i]与a[i+1];故答案如此!!!!!!!!!!!!!!!!!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询