1196 - C语言7.20
时间限制 : 1 秒
内存限制 : 32 MB
读入两个字符串s1和s2,比较这两个字符串。若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。输出的非零值应该是相比较的两个字符串第一个不相同位置的字符ASCII差值,例如”And”和”Aid”比较,根据第2个字符的比较结果,应输出5。
要求不要使用strcpy和strcmp函数。
题目输入
两行字符串。保证每个字符串的长度不超过100。
题目输出
两个字符串的比较结果。
请注意行尾输出换行。
输入/输出样例
输入格式
I am a program. I am not a program.
输出格式
-13
C语言解答
#include<stdio.h> #include<string.h> int main() { char a[102],b[102]; int i,k,l1,l2,l; gets(a); gets(b); l1=strlen(a); l2=strlen(b); l=l1<l2?l1:l2; for(k=0,i=0;i<l;i++) { if(a[i]<b[i]){printf("-%d\n",b[i]-a[i]);k++;break;} if(a[i]>b[i]){printf("%d\n",a[i]-b[i]);k++;break;} } if(k==0) printf("0\n"); return 0; }
C++解答
#include <stdio.h> #include <string.h> int main() { char str[2][101]; int i, retVal = 0; for (i = 0;i < 2;i++) gets(str[i]); for (i = 0;str[0][i] != '\0' && str[1][i] != '\0';i++) if (str[0][i] != str[1][i]) break; retVal = str[0][i] - str[1][i]; printf("%d\n", retVal); return 0; }
Java解答
import java.util.Scanner; public class Main { private static Scanner s = new Scanner(System.in) ; public static void main(String[] args) { String str1 = s.nextLine() ; String str2 =s.nextLine() ; if(str1.equals(str2)){ System.out.println(0) ; }else { char c1[] = str1.toCharArray() ; char c2[] = str2.toCharArray() ; int sum = 0 ; if(str1.compareTo(str2)<0){ for (int i = 0; i < c2.length; i++) { if(c1[i]!=c2[i]){ sum = c1[i]-c2[i] ; break ; } } }else { for (int i = 0; i < c1.length; i++) { if(c1[i]!=c2[i]){ sum = c1[i]-c2[i] ; break ; } } } System.out.println(sum); } }}