C语言的问题,请大家帮帮忙
#include<stdio.h>#include<string.h>main(){inti,j;charstr[10],*s[10]={“SQL”,”hello”,”b...
#include <stdio.h>
#include <string.h>
main( )
{ int i , j;
char str [10], *s[10]={“SQL”,”hello”,”bear”,”zone”};
gets (str);
for (i=0; i<4; i++){
if (strcmp(str, s[i]) > 0) continue;
j =3;.
while ( j >= i){
s[j+1] = s[j];
j--;
}
s[i] = str;
break;
}
if (i= =4) s[4]=str;
for (i=0; i<5; i++)
printf(“%s ”, s[i]);
putchar(‘\n’);
}
【问题】
(21) 程序运行时,输入apple , 输出
[A]SQL apple hello bear zone
[B] apple SQL hello bear zone
[C] SQL hello bear zone apple
[D] SQL hello apple bear zone
为什么选A
(22)程序运行时,输入I, 输出
[A]SQL hello bear I zone
[B] I SQL hello bear zone
[C] SQL I hello bear zone
[D]SQL hello bear zone I
为什么选B
(23)程序运行时,输入zoo , 输出
[A]zoo SQL hello bear zone
[B] SQL hello bear zoo zone
[C] SQL hello bear zone zoo
[D] SQL hello zoo bear zone
为什么选C
(24)程序运行时,输入orange , 输出
[A] SQL orange hello bear zone
[B] SQL hello orange bear zone
[C]orange SQL hello bear zone
[D] SQL hello bear orange zone
为什么选D 展开
#include <string.h>
main( )
{ int i , j;
char str [10], *s[10]={“SQL”,”hello”,”bear”,”zone”};
gets (str);
for (i=0; i<4; i++){
if (strcmp(str, s[i]) > 0) continue;
j =3;.
while ( j >= i){
s[j+1] = s[j];
j--;
}
s[i] = str;
break;
}
if (i= =4) s[4]=str;
for (i=0; i<5; i++)
printf(“%s ”, s[i]);
putchar(‘\n’);
}
【问题】
(21) 程序运行时,输入apple , 输出
[A]SQL apple hello bear zone
[B] apple SQL hello bear zone
[C] SQL hello bear zone apple
[D] SQL hello apple bear zone
为什么选A
(22)程序运行时,输入I, 输出
[A]SQL hello bear I zone
[B] I SQL hello bear zone
[C] SQL I hello bear zone
[D]SQL hello bear zone I
为什么选B
(23)程序运行时,输入zoo , 输出
[A]zoo SQL hello bear zone
[B] SQL hello bear zoo zone
[C] SQL hello bear zone zoo
[D] SQL hello zoo bear zone
为什么选C
(24)程序运行时,输入orange , 输出
[A] SQL orange hello bear zone
[B] SQL hello orange bear zone
[C]orange SQL hello bear zone
[D] SQL hello bear orange zone
为什么选D 展开
展开全部
主要是要弄清*s[10]={“SQL”,”hello”,”bear”,”zone”}和strcmp(str, s[i]) > 0函数的意义,前面那个指针数组(内容为指针的数组)指向每个字符串的首地址。strcmp(str, s[i]) 是比较字符串大小的函数,这个函数是挨个比较字符串的。在ASCII码表中,从A到Z,ASCII依次增加;从a到z,ASCII依次增加,而且Z的ASCII码小于a的ASCII码。
举第一个例子,输入为apple时,"apple">SQL,于是strcmp(str, s[0])>0。执行continue语句,即跳过后面的语句,从for循环执行,此时i=1,*s[10]={“SQL”,”hello”,”bear”,”zone”}。由于apple<hello,判断strcmp(str, s[0])<0.执行后面的语句后,在while循环中,原来指针数组里面的每个元素依次后移,一次循环完毕后 *s[10]={“SQL”,”"apple",hello”,”bear”,”zone”}。最后for循环完毕后, *s[10]={“SQL”,”"apple",hello”,”bear”,”zone”}。
看整个程序,该程序需要实现的功能是输入一个数组,然后按照字符串从小到大的顺序排序并输出。你可以这样操作,直接把输入的字符串放到四个字符串之中,具体位置由字符串的大小确定
举第一个例子,输入为apple时,"apple">SQL,于是strcmp(str, s[0])>0。执行continue语句,即跳过后面的语句,从for循环执行,此时i=1,*s[10]={“SQL”,”hello”,”bear”,”zone”}。由于apple<hello,判断strcmp(str, s[0])<0.执行后面的语句后,在while循环中,原来指针数组里面的每个元素依次后移,一次循环完毕后 *s[10]={“SQL”,”"apple",hello”,”bear”,”zone”}。最后for循环完毕后, *s[10]={“SQL”,”"apple",hello”,”bear”,”zone”}。
看整个程序,该程序需要实现的功能是输入一个数组,然后按照字符串从小到大的顺序排序并输出。你可以这样操作,直接把输入的字符串放到四个字符串之中,具体位置由字符串的大小确定
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询