1196 - C语言7.20

通过次数

0

提交次数

0

时间限制 : 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);
	  }
	  
	  
}}