|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include"stdio.h"
#include"string.h"
#include"math.h"
char s1[100];
char s2[100];
int num,i,j;
int main()
{
printf("请输入第一个字符串;");
scanf("%s",&s1);
printf("请输入第二个字符串;");
scanf("%s",&s2);
printf("请输入比较的字符数;");
scanf("%d",&num);
if(strncmp(s1,s2,num)>0)
{
for(i=1;i<num;i++)
{
if(s1[i]-s2[i]!=0)
{
j=pow(s1[i]-s2[i],2);
j=sqrt(j);
printf("比较的结果是;%d\n",j);
}
}
}
else if(strncmp(s1,s2,num)<0)
{
for(i=1;i<num;i++)
{
if(s1[i]-s2[i]!=0)
{
j=pow(s1[i]-s2[i],2);
j=sqrt(j);
printf("比较的结果是;%d\n",-j);
}
}
}
else
{
printf("比较的结果是;%d\n",0);
}
return 0;
}
输入字符串不带空格的时候运行正常,输入的字符串带入空格以后会在第一个字符串输入完毕按下回车键直接出结果。
“用scanf("%[^\n]",string);只在回车后结束。”行不通,还是用循环吧,程序如下:
- #include"stdio.h"
- #include"string.h"
- #include"math.h"
- char s1[100];
- char s2[100];
- int num;
- int main()
- {
- int i = 0,j;
- char ch;
- printf("请输入第一个字符串;");
- while((ch = getchar()) != '\n')
- {
- s1[i] = ch;
- i++;
- }
- i = 0;
- printf("请输入第二个字符串;");
- while((ch = getchar()) != '\n')
- {
- s2[i] = ch;
- i++;
- }
- printf("请输入比较的字符数;");
- scanf("%d",&num);
- if(strncmp(s1,s2,num)>0)
- {
- for(i=1;i<num;i++)
- {
- if(s1[i]-s2[i]!=0)
- {
- j=pow(s1[i]-s2[i],2); // 先平方,下一句再求其平方根?
- j=sqrt(j); // 目的何在?
- printf("比较的结果是;%d\n",j);
- }
- }
- }
- else if(strncmp(s1,s2,num)<0)
- {
- for(i=1;i<num;i++)
- {
- if(s1[i]-s2[i]!=0)
- {
- j=pow(s1[i]-s2[i],2);
- j=sqrt(j); // (与上面的一样,)这样做会有从 double 型转为 int 型数据可能丢失的警告
- printf("比较的结果是;%d\n",-j);
- }
- }
- }
- else
- {
- printf("比较的结果是;%d\n",0);
- }
- return 0;
- }
复制代码
|
-
没有空格时一切正常
-
加入了空格以后会直接出结果
|