C语言问题为什么输入I与i结果不一样
#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');} 展开
#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');} 展开
5个回答
展开全部
这段程序相当于一个插入过程
将str串插入到s字符串数组的合适位置,要求是这个串比左面的大,比右面的小。(以ascii序来看)
输入I,ascii码49H,最小,比S小,故而会出现在第一个位置。
输入i,比S、h、b大,比z小,所以会出现在bear与zone之间。
将str串插入到s字符串数组的合适位置,要求是这个串比左面的大,比右面的小。(以ascii序来看)
输入I,ascii码49H,最小,比S小,故而会出现在第一个位置。
输入i,比S、h、b大,比z小,所以会出现在bear与zone之间。
追问
strcmp(str, s[i])是比较两个字符串的个数还是ASCII值
追答
比较对应位置的字符ASCII码,若字符ascii码能比较出大小,则以其大小决定字符串大小,若不能,则说明是同一字符,继续比较下一位置,直到分出大小……
举几个例子吧。
bz与za比,那么za > bz,因为z > b。
abc 与 abcd 比, 那么 abcd > abc ,因为这时相当于d 与 ‘\0’比较,自然是d大。
int strcmp(const char *str1,const char *str2){
while(*str1==*str2){
if(*str1=='\0')
return 0;
str1++;
str2++;
}
return*str1-*str2;
}
展开全部
I与i具有不同的ASCII,当然不一样了
追问
strcmp(str, s[i])是比较两个字符串的个数还是ASCII值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
I 和 i 本来就是两个字母
追问
strcmp(str, s[i])是比较两个字符串的个数还是ASCII值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i对应的ASCII码为105;I对应的ASCII码为73
我也是菜鸟,在这请教下:这句s[i] = str;看不懂 为什么不是s[i+1]=str或s[j+1]=str???谢谢
我也是菜鸟,在这请教下:这句s[i] = str;看不懂 为什么不是s[i+1]=str或s[j+1]=str???谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i<z
I>z
I>z
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询