最近打算学习java,感觉通过做题来提高应该会快点。在网上找了杭电的ACM课件,感觉杭电的课件比较通俗易懂。今天看了第一章输入输出,比较简单,但是作为java入门来说刚刚好了,直接贴代码了,我分别实现了C版本和java版本。杭电把输入类型分为了5种,我感觉概括的已经很全了。
输入输出类型1:杭电1089
C
#include <stdio.h>
void main()
{
int a, b;
while(scanf("%d %d", &a, &b) != EOF)
printf("%d\n", a+b);
}
java
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);
while(cin.hasNextInt())
{
int a = cin.nextInt();
int b = cin.nextInt();
System.out.println(a+b);
}
}
}
输入输出类型2:先输入组数,再输入值;杭电1090
C
#include <stdio.h>
void main()
{
int n,i,a,b;
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d %d", &a, &b);
printf("%d\n", a+b);
}
}
java
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String args[])
{
int a, b, i, n;
Scanner cin = new Scanner(System.in);
n = cin.nextInt();
for(i = 0; i < n; i++)
{
a = cin.nextInt();
b = cin.nextInt();
System.out.println(a+b);
}
}
}
输入输出类型3:有结束标志的;杭电1091
C
#include <stdio.h>
void main()
{
int a, b;
while(scanf("%d %d", &a, &b) == 2 && (a !=0 || b != 0))
{
printf("%d\n", a+b);
}
}
java
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
int a, b;
while(true)
{
a = cin.nextInt();
b = cin.nextInt();
if(a==0 && b==0) break;
System.out.println(a+b);
}
}
}
输入输出类型4:以上几种的组合
杭电1092
C
#include <stdio.h>
void main()
{
int a, n, sum;
while(scanf("%d", &n) && n != 0)
{
sum = 0;
while(n--)
{
scanf("%d", &a);
sum += a;
}
printf("%d\n", sum);
}
}
java
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String args[])
{
int a, n, sum, i;
Scanner cin = new Scanner(System.in);
while(true)
{
sum = 0;
n = cin.nextInt();
if(n == 0) break;
for(i = 0; i < n; i++) //java不能用n--
{
a = cin.nextInt();
sum += a;
}
System.out.println(sum);
}
}
}
1093
C
#include <stdio.h>
void main()
{
int a, b, n, sum;
scanf("%d", &n);
while(n--)
{
sum = 0;
scanf("%d", &a);
while(a--)
{
scanf("%d", &b);
sum += b;
}
printf("%d\n", sum);
}
}
java
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String args[])
{
int a, b, n, sum, i ,j;
Scanner cin = new Scanner(System.in);
n = cin.nextInt();
for(i = 0; i < n; i++)
{
sum = 0;
a = cin.nextInt();
for(j = 0; j < a; j++)
{
b = cin.nextInt();
sum += b;
}
System.out.println(sum);
}
}
}
杭电1094
C
#include <stdio.h>
void main()
{
int a, n, sum;
while(scanf("%d", &n) != EOF)
{
sum = 0;
while(n--)
{
scanf("%d", &a);
sum += a;
}
printf("%d\n", sum);
}
}
java
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String args[])
{
int a, n, sum, i;
Scanner cin = new Scanner(System.in);
while(cin.hasNextInt()){
n = cin.nextInt();
sum = 0;
for(i = 0; i < n; i++)
{
a = cin.nextInt();
sum += a;
}
System.out.println(sum);
}
}
}
输入输出类型5:读入一行数据;杭电1048
C
#include <stdio.h>
#include <string.h>
void main()
{
int i;
char msg[256];
while(gets(msg))
{
if(strcmp(msg, "START") == 0) continue;
if(strcmp(msg, "END") == 0) continue;
if(strcmp(msg, "ENDOFINPUT")==0) break;
i = 0;
while(msg[i] != '\0')
{
if(msg[i]<='Z' && msg[i]>='A')
printf("%c", 'A' + (msg[i] - 'A' + 21)%26);
else
printf("%c", msg[i]);
i++;
}
printf("\n");
}
}
java
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
while(cin.hasNextLine())
{
String msg = cin.nextLine();
if(msg.equals("START")) continue;
if(msg.equals("END")) continue;
if(msg.equals("ENDOFINPUT")) break;
for(int i = 0; i < msg.length(); i++)
{
char[] cmsg = msg.toCharArray();
if(cmsg[i] <='Z' && cmsg[i] >= 'A')
System.out.print((char)('A' + (cmsg[i] - 'A' + 21)%26));
else
System.out.print((char)(cmsg[i]));
}
System.out.println();
}
}
}