求助,比较两个字符串
#include <stdio.h>#define MAX 1024
int main()
{
char str1;
char str2;
int i = 0;
unsigned int n;
printf("请输入第一个字符串:");
while ((str1 = getchar()) != '\n') //这里的str1是什么意思? 是从str开始输入字符吗?
//还有为什么在 “请输入第一个字符串:”的后面会输出我输入的字符
;
printf("请输入第二个字符串:");
i = 0;
while ((str2 = getchar()) != '\n')
;
printf("请输入比较的字符数:");
scanf("%u", &n);
for (i = 0; i < n; i++)
{
if (str1 - str2)
{
i++; //这里的i++是什么意思??
break;
}
}
printf("比较的结果是:%d\n", str1 - str2); //这里的i-1也不明白。。
return 0;
} 当我们需要对一个变量加一或减一并赋值给自己的时候,我们可以写成i++、i—或++i、--i的形式。它们也被称为增量减量运算符,或++--运算符。
自增自减运算符可以放在变量之前,也可以放在变量之后。它们有什么区别呢?粗略地看,++i和i++都是实现将变量i的值加一并赋值给本身,也就相当于i = i + 1。
但是将++i和i++赋值给一个变量的时候,两者的差异就产生了:
#include <stdio.h>
int main()
{
int i = 5, j;
j = ++i;
printf("i = %d, j = %d\n", i, j);
i = 5;
j = i++;
printf("i = %d, j = %d\n", i, j);
return 0;
}
程序执行后,可以看得出来,两者的结果是不同的:
$ gcc test1.c && ./a.out
i = 6, j = 6
i = 6, j = 5
它们的区别是:i++是先使用变量i中保存的值,再对自身进行++运算;而++i则是先对自身进行++运算,再使用变量i的值(这时候变量i的值已经加一了)。
另外,自增、自减运算符只能作用于变量,而不能作用于常量或表示。
这一讲视频可以帮到你:http://v.qq.com/page/y/h/n/y0301ylz1hn.html
小甲鱼 发表于 2016-5-24 02:15
当我们需要对一个变量加一或减一并赋值给自己的时候,我们可以写成i++、i—或++i、--i的形式。它们也被称为 ...
while ((str1 = getchar()) != '\n')小甲鱼老师,这句话是从str1处开始存放字符吗?
我的理解是 i的初始化是0,所以 第一次循环 str1 = str1,然后把输入的字符放入str1吗?
我还有一个疑问getchar()这个函数不是从键盘缓冲区中读取ASCALL码吗?为什么我输入的字符会在屏幕上显示出来
printf("请输入比较的字符数:"); 假如我这里比较的是5个字符
scanf("%u", &n);
for (i = 0; i < n; i++)
{
if (str1 - str2)
{
i++;
break;
}
小甲鱼 发表于 2016-5-24 02:15
当我们需要对一个变量加一或减一并赋值给自己的时候,我们可以写成i++、i—或++i、--i的形式。它们也被称为 ...
while ((str1 = getchar()) != '\n')小甲鱼老师,这句话是从str1处开始存放字符吗?
我的理解是 i的初始化是0,所以 第一次循环 str1 = str1,然后把输入的字符放入str1吗?
我还有一个疑问getchar()这个函数不是从键盘缓冲区中读取ASCALL码吗?为什么我输入的字符会在屏幕上显示出来
printf("请输入比较的字符数:"); 假如我这里比较的是5个字符
scanf("%u", &n);
for (i=0; i < n; i++) 那么n=5,这个循环执行5次
{
if (str1 - str2)
{
i++; 这里的i++是自增1,如果 str1 = str2时 i自增1,然后就
break; 执行break语句,跳出if语句。跳出if语句后 for语句还会执行i++吗?
}
先赋值再移动指针不是应该从0开始么,为什么你会认为从第一个开始呢? qq1242009750 发表于 2016-5-24 11:51
while ((str1 = getchar()) != '\n')小甲鱼老师,这句话是从str1处开始存放字符吗?
我的理解是...
{:5_91:}{:5_91:}兄弟你的思路卡在了已开始呢,i++的意思是执行后加1,就是说把i本来的带进来后进行运算然后再把自身加1,++i就是把i本身的值加上1再进行计算.
getchar()函数是会得到用户的输入并且会显示在屏幕上
getch()函数是只要有输入就会返回,并且不会回显;
在for循环中的i的作用是来拿遍历字符串的地址的,简单的说就是可以让两个字符串对应的一个一个的字符拿来对比,if语句中第一次是比较死一个也就是str,,在这里我认为你没有写完整还是你把符号写错了,str1[] - str2[]这不是一个判断句阿......当判断之后就要进行i的自加进行下一次的比较阿!!!!!
最后调到了printf时的i的值是满足了跳出循环的条件了,所以满足之前题目的 条件的是在此时的i-1的那里....
我比较空闲,这种问题你其实多想想就好了,如果有其他的问题也可以问我,我的水平也是才进来一点点......
页:
[1]