ACM基本输入输出(C语言)

合集下载

多组数据输入输出

多组数据输入输出
/showproblem .php?pid=1091

2013-7-31
13
Hdoj_1091源代码:
#include <stdio.h> int main() { int a,b;
while(scanf("%d %d",&a, &b) &&(a!=0 && b!=0))
#include <stdio.h> int main() { int a,b;
while(scanf("%d %d",&a, &b) != EOF)
}
printf("%d\n",a+b);
2013-7-31
7
本类输入解决方案:


C语法: while(scanf("%d %d",&a, &b) != EOF) { .... } C++语法: while( cin >> a >> b ) { .... }
18
2013-7-31
说明(5_1):




scanf(“ %s%s”,str1,str2),在多个字符串之 间用一个或多个空格分隔; 若使用gets函数,应为gets(str1); gets(str2); 字符串之间用回车符作分隔。 通常情况下,接受短字符用scanf函数,接 受长字符用gets函数。 而getchar函数每次只接受一个字符,经常 c=getchar()这样来使用。

一个Input Block对应一个Output Block, 每个Output Block之后都有空行。 参见:HDOJ_1095

国际大学生程序设计大赛(ACM-icpc)输入输出介绍

国际大学生程序设计大赛(ACM-icpc)输入输出介绍

本类输入解决方案:
C语法: scanf("%d",&n) ; for( i=0 ; i<n ; i++ ) { .... } C++语法: cin >> n; for( i=0 ; i<n ; i++ ) { .... }
2012-3-26 12
输入第三类:
输入不说明有多少个Input Block,但以某个特殊输入为结束标志。 ex-3
2012-3-26 10
ex-2源代码:
#include <stdio.h> int 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); } }
2012-3-26 11
ACM程序设计
输入输出格式
2012-3-26
1
ACM题目特点
由于ACM竞赛题目的输入数据和输出 数据一般有多组(不定),并且格式多 种多样,所以,如何处理题目的输入输 出是对大家的一项最基本的要求。这也 是困扰初学者的一大问题。 下面,分类介绍:
2012-3-26
2
一个超级简单的题目(ex-1):
5
输入第一类:
输入不说明有多少个Input Block, 以EOF为结束标志。 参见:ex-1.
2012-3-26
6
ex-1源代码:
#include <stdio.h> int main() { int a,b; while(scanf("%d %d",&a, &b) != EOF) printf("%d\n",a+b); }

ACM简介与输入输出

ACM简介与输入输出

所属国家 中国 俄罗斯 俄罗斯 波兰 俄罗斯 中国 俄罗斯 波兰 中国 俄罗斯 俄罗斯 加拿大 捷克 美国 美国 德国 加拿大 美国 澳大利亚 美国
8/70
9/70
2015-5-28
10
10/70
2015-5-28
11
11/70
第35届世界总决赛简介
第35届ACM-ICPC全球总决赛于5月27日在美国 佛罗里达州奥兰多市举行,从全球6大州82个国家 242个赛区1931所大学和22000多人中胜出的来自世 界33个国家和地区的103支队伍,300余名世界各大 学计算机精英参赛。 总决赛前十名的队伍将得到高额奖金:第一名 奖金为12000美元,第二名奖金为6000美元,第三名 奖金为3000美元,第四名至第十名将各得到l500美 元。除此之外还将承认北美冠军、欧洲冠军、南太 平洋冠军及亚洲冠军。
ACM算法与程序设计
第一讲
ACM/ICPC简介
简单输入输出
ACM/ICPC简介
ACM/ICPC的全称为ACM国际大学生程序设计 竞赛(ACM-International Collegiate Programming Contest),是世界上规模最大、水 平最高的国际大学生程序竞赛。ACM/ICPC由国 际计算机学界著名的ACM学会(Association for Computer Machinery)主办, 第一届ACM/ICPC 于1970年在美国举办,以后每年一届。历史上曾由 APPLE、AT&T、微软和IBM担任赞助商,现任赞 助商是IBM。ACM所颁发的获奖证书也为世界各 著名计算机公司及各知名大学所认可。
34/70
教材及辅导资料推荐
• 程序设计导引及在线实践 • 算法竞赛入门经典 • 挑战编程程序设计竞赛训练手册

ACM基本的输入输出练习代码:统计A+B

ACM基本的输入输出练习代码:统计A+B

学号:1400310506 姓名:韦冬妮任课老师:秦兴国A+B for Input-Output Practice(I)#include <stdio.h>int main(){int a,b;while (scanf("%d %d",&a,&b) != EOF) /*EOF直到文件的结尾*/ {printf("%d\n",a+b);}return 0;}(II)#include <stdio.h>int main(){int i;int a,b;scanf("%d",&i); /*输入相加数的组数*/while (i!=0,i--){scanf("%d %d",&a,&b);printf("%d\n",a+b);}return 0;}(III)#include <stdio.h>int main(){int a, b;while(scanf("%d %d",&a, &b)){if(a==0 && b==0) break; /*当a b 都等于0时跳出循环*/else printf("%d\n",a+b);}return 0;(IV)#include<stdio.h>int main(){int i,n,sum;while(scanf("%d",&i) &&i!=0){sum = 0;while(i--){scanf("%d",&n);sum = sum+n;}printf("%d\n",sum);}return 0;}(V)#include<stdio.h>int main(){int n,a,b,i,sum;scanf("%d",&n); /*输入相加的组数*/while(n--){sum=0;scanf("%d",&a); /*输入一组中相加数的个数*/ for(i=1;i<=a;i++){scanf("%d",&b);sum=sum+b;}printf("%d\n",sum);}return 0;}(VI)#include<stdio.h>int main(){int n,a,sum;sum = 0;while(scanf("%d",&n)!=EOF){while(n--){scanf("%d",&a);sum=sum+a;}printf("%d\n",sum);sum=0;}return0;}(VII)#include<stdio.h>int main(){int a,b;while(scanf("%d%d",&a,&b)!= EOF){printf("%d\n\n",a+b);}return0;}(VIII)#include<stdio.h>int main(){int n,i,m,sum,j,a;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&m);sum=0;for(j=0;j<m;j++){scanf("%d",&a);sum=sum+a;}printf("%d\n",sum);if(i != n-1){printf("\n");}return 0;}}。

ACM基本输入输出

ACM基本输入输出
int n,a,b; scanf(“%d”,&n); while (n--) {
scanf(“%d%d”,&a,&b) ; printf(“%d\n”,a+b); } return 0; }
第三类输入(HDOJ 1091)
第三类输入 (首先给出数据组数HDOJ 1091源代码)
// HDOJ 1091 A+B for Input-Output Practice (III) #include <stdio.h> int main() {
if(i>1) printf("\n"); sum=0; scanf("%d",&n); while(n--) {
scanf("%d",&a); sum+=a; } printf("%d\n",sum); }
总结一下:( 小技巧、规定)
1、main 函数返回值为int 型(正式比赛要求) 2、 scanf函数返回值就是读出的变量个数,没有读到数
int n,a,sum; while ( scanf("%d",&n), n ) {
sum=0; while ( n-- ) {
scanf("%d",&a); sum+=a; } printf("%d\n",sum); } return 0; }
HDOJ 1093
HDOJ 1093 源程序
int c,n,a,sum; scanf("%d",&c); while(c--) {
sum=0; scanf("%d",&n); while(n--) {

c语言 acm编程题目

c语言 acm编程题目

c语言 acm编程题目ACM是计算机科学领域的一项国际性赛事,其中包含了各种编程题目。

C语言作为一种常用的编程语言,被广泛用于ACM比赛。

本文将介绍一些C语言ACM编程题目,帮助读者提高编程能力和解决复杂问题的能力。

一、引言ACM编程题目通常涉及算法设计和编程实现,需要参赛者运用逻辑思维和创造性思维来解决各种挑战性问题。

通过练习这些题目,参赛者可以不断提高自己的编程技巧和解决问题的能力。

二、题目一:数组最大子序和给定一个整数数组,求出该数组中连续子序列的最大和。

例如,给定数组[1,3,5,7,9],连续子序列为[1,3],[3,5],[5,7],[7,9],它们的和分别为{4},{8},{8},{16},因此最大和为{16}。

解题思路:1.遍历数组,找到连续子序列的最大和。

2.统计不同长度子序列的数量,以及最大和对应的长度。

3.将所有长度和对应的子序列值输出。

代码实现:```c#include<stdio.h>#include<stdlib.h>intmaxSubArraySum(int*nums,intnumsSize){intmaxSum=nums[0];intcurSum=nums[0];for(inti=1;i<numsSize;i++){curSum=(nums[i]>curSum+nums[i])?nums[i]:curSum+nums[i];maxSum=(curSum>maxSum)?curSum:maxSum;}returnmaxSum;}```三、题目二:最长回文子序列给定一个字符串,求出最长的回文子序列的长度。

例如,给定字符串"abba",最长的回文子序列为"aba",长度为3。

解题思路:1.将字符串反转,得到反转字符串。

2.将原字符串和反转字符串进行比较,找到第一个不匹配的字符,标记为分隔符。

常用的C语言 输入与输出

常用的C语言 输入与输出

常用的C语言输入与输出及在ACM题目要求中的使用一.输入语句及参数C语言的从键盘输入的函数是scanf,其作用相当于大家所学的cin,函数格式如下:int a;scanf(“%d”,&a);这里%d对应于类型int, %d的%表示此处开始识别数据类型,d表示数据类型为普通十进制数(取decimal的首字母).&a的a为需要输入的变量名,&为取地址运算符。

所以这个输入语句可以理解为“在变量a所在的地址处输入一个格式为十进制的值”。

以下是一些简单的scanf使用例子:1. int a,b,c; scanf(“%d%d%d”,&a,&b,&c);2. long a; scanf(“%ld”,&a); // ld 即long decimal3. float a; scanf(“%f”,&a);4. double a; scanf(“%lf”,&a); // lf即long float5. char c; scanf(“%c”,&c); // c即character6. char str[100]; scanf(“%s”,&str[0]); // s即string,此处&str[0]表示以str[0]为起始位置输入7. int a; float b; double c; scanf(“%d%f%lf”,&a,&b,&c); //注意对应数据类型的输入8. char str1[100],str2[100]; scanf(“%s%s”,&str1[0],&str2[0]); //输入中间用回车或空格分隔二.输出语句及参数C语言的输出函数是printf, 作用相当于cout, 函数格式如下:int a;……………//对变量a的一些操作printf(“%d”,a);与scanf对比,printf在输出变量时不需要取址符&,而需要大家特别注意的是,输出一般都需要排版,所以我们要特别在printf函数中加入一些转义字符,例如换行符…\n‟,如果要在输出变量a的值后空一行,则要如此输出printf(“%d\n”,a); // 相当于cout<<a<<endl;对于字符变量,可以使用printf简单地输出它们的ASCII码值,只要将%c改成%d即可,char ch=‟y‟; printf(“%d\n”,ch);三.两种常见的ACM题目要求输入输出格式(以A+B问题为例)1.不断输入两个整数a,b,输出它们的和,每个结果占一行。

ACM中常用的输入输出方式

ACM中常用的输入输出方式

ACM中常⽤的输⼊输出⽅式 不论是在ACM/ICPC这样类型的⽐赛中,还是在做项⽬中,对于输⼊输出的格式尤为重要,不可以想当然的按⾃⼰那⼀套⾛,我们需要根据题⽬要求进⾏操作,对于第⼀次接触这⽅⾯⽐赛的⼩⽩,最为常见的现象便是类似于下⾯这⾏代码1 printf(“请输⼊⼀组数据:”);2 cout<<"输出的结果为"; 倘若题⽬没有要求你,千万不要有多余的输出,虽然在测试的时候⽅便⾃⼰,但也⿇烦在提交运⾏时注释掉,因为电脑可没有你的⼤脑那样灵活,他要对⽐的数据很死板,多⼀个空格少⼀个空格都不⾏,所以,在这⼀块的处理⼀定要细⼼!细⼼!再细⼼!下⾯我们来看下常见的输⼊输出格式有哪些⼀、基本输⼊输出1、单组输⼊输出已知题⽬有两个变量a和b,现在就要输⼊a和b,操作如下1 //C2 scanf("%d %d",&a,&b); printf("%d %d\n",a,b);3 //C++4 cin>>a>>b; cout<<a<<b<<endl;这个很简单,那么如果题⽬输⼊n组a和b怎么办呢2、n组输⼊输出1 //C2 scanf("%d",&n);3 while(n--) {scanf("%d %d",&a,&b); printf("%d %d\n",a,b);}4 //C++5 cin>>n;6 while(n--){cin>>a>>b;cout<<a<<b<<endl;}也没有那么难嘛,现在如果n不告诉你,要求输⼊多组a和b该如何操作呢?3、多组输⼊输出(重点来了)1 //C2 while(scanf("%d %d",&a,&b)!=EOF){printf("%d %d\n",a,b);}//第⼀种写法3 while(scanf("%d %d",&a,&b)==2){printf("%d %d\n",a,b);}//第⼆种写法4 while(~scanf("%d %d",&a,&b)){printf("%d %d\n",a,b);}//第三种写法5 //C++6 while(cin>>a>>b){cout<<a<<b<<"\n";}竞赛中经常采⽤这种输⼊输出⽅式。

杭电OJ:1089----1096(c++)(ACM入门第一步:所有的输入输出格式)

杭电OJ:1089----1096(c++)(ACM入门第一步:所有的输入输出格式)

杭电OJ:1089----1096(c++)(ACM⼊门第⼀步:所有的输⼊输出格式)1089:输⼊输出练习的A + B(I)问题描述您的任务是计算a + b。

太容易了?!当然!我专门为ACM初学者设计了这个问题。

您⼀定已经发现某些问题与此标题具有相同的名称,是的,所有这些问题都是出于相同的⽬的⽽设计的。

输⼊项输⼊将由⼀系列由空格隔开的整数对a和b组成,每⾏⼀对整数。

输出量对于每对输⼊整数a和b,应该在⼀⾏中输出a和b的总和,并且在输⼊中每⾏输出⼀⾏。

样本输⼊1 5 10 20样本输出6 30题解:#include<cstdio>#include<iostream>using namespace std;int main(){int a, b,sum;while(cin >> a >> b){sum = a+b;cout << sum << endl;}return 0;}1090:投⼊产出练习的A + B(II)问题描述您的任务是计算a + b。

输⼊项输⼊的第⼀⾏包含⼀个整数N,然后是N⾏。

每⾏由⼀对整数a和b组成,每对之间⽤空格隔开,每⾏⼀对整数。

输出量对于每对输⼊整数a和b,应该在⼀⾏中输出a和b的总和,并且在输⼊中每⾏输出⼀⾏。

样本输⼊2 1 5 10 20样本输出6 30题解:#include<cstdio>#include<iostream>using namespace std;int a,b,n,sum;cin >> n;while (n){cin >> a >> b;sum = a + b;cout << sum << endl;n--;}return 0;}1091:投⼊产出练习的A + B(III)问题描述您的任务是计算a + b。

ACM_ICPC-1ACM简介与输入输出

ACM_ICPC-1ACM简介与输入输出
• 编程竞赛非常有趣!
2020/11/12
32
优秀竞赛学生回母校做宣传
亲爱的学弟学妹们,你们好!我是来自成都市大 弯中学的廖孜。 古语云,“少不入蜀”。大多指年少的时候停留 在蜀地,往往会使年轻人安于享乐,不思进取、难 成大器。然而,电子科技大学却绝非是这样的。 四年前,我怀着好奇与兴奋的心态进入了电子科 技大学。在奇特的机缘下我接触到了ACM-ICPC 竞赛,并为之奋斗了四年。也正是因此,我有了 一个忙碌却又异常精彩的四年大学生活。我还清 晰记得当时刚入校时许下的种种梦想,亚洲区域 赛金牌,就职Google美国硅谷总部MountainView, 代表中国参加俄罗斯叶卡捷琳堡世界总决赛。尽 管过程曲折,但可贵的是,这些梦想几乎所有都 实现了。不得不感谢电子科技大学这样优秀的大 学,给我梦想提供了舞台。
26
27
28
2020/11/12
29
2020/11/12
30
为什么要参加编程比赛
• 能力的提高 • 学到很多书本上和大学里面学不到的知识和技能 • 有机会云游四海,可以和众多武林高手同场竞技,交到很
多志同道合的朋友
• $$,出国的机会 • 对未来极其有利
– 高考保送、高考加分、保研
– 大公司不仅自己举办、同时自己举办各类编程竞赛、 非常重视选手的编程比赛经历和成绩
2. EOF是一个预定义的常量,等于-1。
例如:
#include <stdio.h> int main(void) {
int a=0,b=0,c=0,k; k=scanf("%d%*d%d",&a,&b,&c); printf("k=%d,a=%d,b=%d,c=%d\n",k,a,b,c); } 若输入:1 2 3,则输出为:k=2,a=1,b=3,c=0 注意: •常常用while(scanf(“…”,…)==…)来判断循环的进行。 •从键盘输入时为表示输入已结束,应该先按Enter,再 Ctrl+Z,再按Enter。

关于ACM的输入输出

关于ACM的输入输出

写给第一次参加现场赛的同学们一般来说ACM的现场赛会规定输入输出或者是文件输入标准输出也可能是文件输入文件输出如果没有规定的话那么一般就是标准的输入输出了那说一下输入输出的重定向一般用下面两种方法c++常用:#include <fstream.h>ifstream filein("data.in"); // 定义一个文件输入流ofstream fileout("data.out"); //cout<< --> fileout<<filein.eof() //文件到末尾,返回非零值data.in表示输入的数据文件本地测试的话本来输入的数据就要在这个文件里面测试了建一个本地的文本data.in,可以用记事本的方式打开注意:文件输入的话,以后的cin>>都要改成filein>>, cout<<都要改成fileout<< c语言常用:freopen("date.in","r",stdin); //重定向所有标准的输入为文件输入freopen("date.out","w",stdout);//重定向所有标准的输出为文件输出fclose(stdout);//输出结束freopen("date.in","r",stdin); //重定向所有标准的输入为文件输入freopen("date.out","w",stdout);//重定向所有标准的输出为文件输出fclose(stdout);//输出结束第一句的意思就是文件输入,以"读状态",去替换标准的输入以上如果只是规定用文件输入输出的某一种,那么就只用其中的一种ACM题目特点: 由于ACM竞赛题目的输入数据和输出数据一般有多组(不定),并且格式多种多样,所以,如何处理题目的输入输出是对大家的一项最基本的要求。

c语言基本的输入输出格式

c语言基本的输入输出格式

C语言基本的输入输出格式1. 引言C语言是一种广泛应用于系统程序开发和嵌入式系统的高级编程语言。

在C语言中,输入和输出是程序与用户或外部设备之间进行交互的重要方式。

本文将详细介绍C语言中基本的输入输出格式,包括标准输入输出函数、格式化输入输出函数以及文件输入输出函数。

2. 标准输入输出函数C语言提供了一些标准的输入输出函数,用于从键盘读取用户输入或将输出显示在屏幕上。

2.1 printf函数printf函数用于将格式化的数据输出到标准输出设备(通常是屏幕)。

它的基本语法如下:int printf(const char *format, ...);其中,format是一个字符串,用于指定输出的格式,后面的参数是要输出的数据。

下面是一些常用的格式控制符:•%d:以十进制形式输出整数。

•%f:以浮点数形式输出。

•%c:以字符形式输出。

•%s:以字符串形式输出。

示例代码:#include <stdio.h>int main() {int age = 20;float height = 1.75;char gender = 'M';char name[] = "John";printf("Name: %s\n", name);printf("Age: %d\n", age);printf("Height: %.2f\n", height);printf("Gender: %c\n", gender);return 0;}运行结果:Name: JohnAge: 20Height: 1.75Gender: M2.2 scanf函数scanf函数用于从标准输入设备(通常是键盘)读取数据。

它的基本语法如下:int scanf(const char *format, ...);其中,format是一个字符串,用于指定输入的格式,后面的参数是用于接收输入数据的变量。

C语言的标准输入输出

C语言的标准输入输出

C语⾔的标准输⼊输出欢迎探讨,如有错误敬请指正如需转载,请注明出处 /nullzx/1. 标准输⼊输出标准输⼊、输出主要由缓冲区和操作⽅法两部分组。

缓冲区实际上可以看做内存中的字符串数组,⽽操作⽅法主要是指printf、scanf、puts、gets,getcha、putcahr等操作缓冲区的⽅法。

在C++以及Java等⾯向对象的编程语⾔中,将缓冲区以及操作缓冲区的⽅法封装成⼀类对象,这类对象就称为流。

缓冲区最⼤的特点主要体现在数据的⼀次性,即数据被printf、scanf从缓冲区中取出后就被使⽤了,或者说消耗了。

可以把缓冲区⽐喻成管道,缓冲区中的数据⽐喻成⽔流,printf、scanf等⽅法⽐喻成开关,当打开开关,⽔就会慢慢流逝,⽽流出去的⽔就再也收不回来了。

由于不同系统,不的硬件底层实现输⼊输出的具体⽅法可能不⼀样,C语⾔要求系统为每个程序提供两个指针,这两个指针分别指向两个结构体,这两个结构体分别表⽰了键盘和屏幕在内存中的抽象表⽰(缓冲区的地址值被记录在这个结构体中),并将指向这两个结构体的指针命名为stdin和 stdout.这两个指针就是所谓的标准输⼊和标准输出。

还有⼀点应该始终铭记,标准输⼊和输出缓冲区中存储的是字符的ASCII码值。

⽐如你想从键盘上输⼊了123给⼀个变量,那么在缓冲区中存储是三个字节,分别是字符‘1’的ASCII码值,字符‘2’的ASCII码值,字符‘3’的ASCII码值,然后将这个这三个ASCII值序列转换为⼀个数值给这个变量。

同理,从屏幕输出“123”,计算机并不认为它输出的是⼀个数值,计算机实际上仅仅是描绘了⼀个‘1’的ASCII码值对应的图形,‘2’的ASCII的值对应的图形,‘3’的ASCII码值对应的图形。

2. getchar、putcharputchar的作⽤主要是向输出缓冲区中写⼊⼀个字符。

getchar的作⽤主要是向输⼊缓冲区中读取⼀个字符。

如果碰到⽂件结尾,返回-1getchar源代码int getchar(void){static char buf[BUFSIZ];static char* bb = buf;static int n = 0;if (n == 0) {n = read(0, buf, BUFSIZ);bb = buf;}return(--n >= 0) ? (unsigned char)*bb++ : EOF;}OEF是⼀个宏,表⽰-1。

ACM竞赛之输入输出

ACM竞赛之输入输出
3、字符串中含回车
在这种情况下,如果没有题目的说明,程序无法知道哪里是字符串的分界。那么,用scanf("%c",&ch)来读,一边读,一边判断分界条件是否满足,如果满足,则把当前读到的东西存到一个字符串中。
三、输出处理
在初次接触ACM程序设计竞赛时,可能认为:样例中都是输入数据和输入数据在一起,输出结果和输出结果在一起,可能会开个数组,把每组的结果存起来,等输入完了再一起输出。当遇到不知有多少组测试数据的题,就难以处理了。
2. 多组输入数据,不说明多少组,直到读至输入文件末尾为止
示例:A + B Problem (1)
C语法:
#include <stdio.h>
int main()
{
int a,b;
while (scanf("%d %d",&a, &b) != EOF)
printf("%d\n",a+b);
03:memset(str, ' ', 1000 * sizeof(char));
04:sprintf(str, "%s", str1);
05:str[strlen(str1)] = ' ';
06:sprintf(str + 5, "%5s", str2);
07:str[10] = ' ';
其中“*”代表空格。
要求是这样的:str1在前5个字符中左对齐,str2在第6到第10个字符中右对齐,str3在第11到第15个字符中右对齐。
可行的做法是,先初始化一个数组,用' '(空格)填充,再在相应的位置填相应的内容。用程序来表述:

ACM新手之八大输入输出格式

ACM新手之八大输入输出格式

ACM新手之八大输入输出格式文章分类:C++编程在ACM题库中,不管是文件输出(输入)还是标准输出(输入),都有着一定的格式,下面我就以杭电1089——1096为例子,简单的介绍一下。

第一种:A+B for Input-Output Practice (I)【输入】有多组输入数据,但没有具体的告诉你有多少组,只是让你对应每组输入,应该怎样输出。

【输出】有多组输出,对应着每组输入,每组输出占一行。

【代码】对于上述常见的情况,我们可以用下面的代码来解决。

没有告诉我们有多少组,我们只需要等待即可:while (scanf (……) != EOF)相对应输入,输出只需要在while中输出。

【完整代码】此类多实例测试解决方案:while(scanf("%d%d",&a,&b)!=EOF){//读入一组测试数据//处理//输出结果}注:EOF是宏定义常量-1,scanf函数遇到文件结束标志函数返回值是-1,键盘输入时,ctrl+z 表示输入结束本题标程:#include"stdio.h"int main(){inta,b;while(scanf("%d%d",&a,&b)!=EOF){printf("%d\n",a+b);}return 0;}第二种:A+B for Input-Output Practice (II)【输入】先输入一个整数,告诉我们接下来有多少组数据,然后在输入每组数据的具体值。

【输出】有多组输出,对应着每组输入,每组输出占一行。

【代码】这也是一种常见的输入形式,简单的代码,我们可以先用scanf函数输入第一个整数来确定有多少行,然后在用for循环一组一组的输入。

【完整代码】Description计算A+BInput输入第1行为一个整数n(1≤n≤10),代表测试的组数。

下面有n组测试数据,每组1行,为2个整数,为A, B。

acm中的循环输入(转)

acm中的循环输入(转)

acm中的循环输⼊(转)(转⾃)ACM题⽬中输⼊数据的处理(C语⾔版)见:字符串的输⼊while(gets(p)) printf("%s",p); ACM竞赛题⽬的输⼊数据常要求有多组,并且格式多种多样,这是初次登OJ平台的同学的⼀个障碍。

实际上,这些格式可以归为固定的⼏种类型,本⽂介绍各种类型的处理⽅法,以帮助同学们克服这些障碍。

实际上,这些模式不仅是OJ平台上做题的需要。

在平时的⾃由编程练习中,也可以⾃⾏使⽤这些模式,以提⾼调试程序的效率。

对程序测试的意识也将在此过程中得到提升。

本⽂1-4部分介绍了⼏种类型输⼊的处理,第5部分介绍通过输⼊重定向提⾼调试程序效率的⽅法。

1. 最简单的输⼊例1:[plain]1. Description2. 计算 a+b3.4. Input5. 两个整数 a,b6.7. Output8. a+b的值9.10.11. Sample Input12. 1 213.14. Sample Output15. 3 这种最简单的输⼊,接受⼀组输⼊,针对这组输⼊计算出值即可。

这与平时的程序设计并⽆差异。

解决办法是:[cpp]1. #include <iostream>2. using namespace std;3. int main()4. {5. int a,b;6. cin >> a >> b;7. cout << a+b << endl; //对其他题⽬,换成要求的复杂处理与输出8. return 0;9. }2. ⼀次运⾏,要输⼊多组数据,直到读⾄输⼊⽂件末尾(EOF)为⽌例2:[plain]1. Description2. 计算 a + b3.4. Input5. 多组由两个整数(a和b)构成的输⼊,a和b之间⽤空格隔开,每组输⼊单独占⼀⾏6.7. Output8. 每组的两个整数(a和b)求和并输出,每组的求和结果独占⼀⾏9.10. Sample Input11. 1 512. 10 2013. 400 51614.15. Sample Output16. 617. 3018. 916 这种输⼊包含多对输⼊数据,需要构造⼀个循环读取。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OJ简介
OJ简介: ACM比赛中主要以OJ(即Online Judge)判题为主,用 来在线检测程序的正确性。OJ采用后台黑箱测试, 测试数据非常全面,涵盖各种特殊情况。并且在结 果的比对上也不放过一个空格和回车,这就要求程 序员要有非常严谨的思维。著名的OJ有POJ、HOJ、 UVA等。 轻量级OJ:
ACM基本输入输出
2013年退役ACMer
ACM 简介
ACM原代表美国计算机协会,因其举办的ICPC即国际 大学生程序设计竞赛而闻名全世界,此项赛事要求 学生的在五小时内解决全英文问题,并在效率和速 度以及代码的审查上要求非常严格以至近乎苛刻, 被誉为是计算机界的“奥林匹克”。在大学中,因 其含金量、认可度等非常之高,故而在大学生名企 就业、保研、留学等方面都有着极大的帮助。ACM 也因其独有的比赛趣味也在今天的高校中也得到了 广泛的推广,许多大学生都为之着迷、甚至大学四 年都为之献身。足以说明ACM的魅力所在。
return 0;
}
A+BⅣ
题目描述:此类题目是求n个数的和,输入为先输入一个数组n, 然后后面跟n个数字,求这n个数字的和。同样有多组数据,当 n=0时结束。(题目链接/problem.php?id=1088) 样例输入: 4 1234 512345 0 样例输出: 10 15
总结
常见的ACM的输入输出格式如这些。 多组数据可能还会用到EOF、NULL这些宏。比如 scanf、getchar、gets的返回值。 万变不离其宗,有些题目可能是这些格式的组合, 亦或者是个别情况的变种,比如输出格式要求的变 化等等,就需要各位ACMer灵活多变了。
轻量级入门OJ ACM训练平台
A+Ⅱ
此题相比第一道而言,会提前告诉你是几组数据,第一行的2就表示有两组数据。则此时我们可以考 虑这样写: #include<stdio.h> int main() { int n; int a,b; scanf("%d",&n); while(n--) { scanf("%d%d",&a,&b); printf("%d\n",a+b); }
A+BⅣ
参考写法: #include<stdio.h> int main() { int n; int sum,temp; while(scanf("%d",&n) && n) { sum=0; while(n--) { scanf("%d",&temp); sum+=temp; } printf("%d\n",sum); } return 0; }
ACM赛题的基本的数据
在各大OJ的ACM比赛赛题上,往往都会给出问题的 描述(Description)、问题的输入和输出要求,并会给 出几组样例数据。所以选手要在完全理解的基础上 至少通过了样例数据才再提交代码。 下面我们介绍几种常见的输入输出格式。
A+BⅠ
这种输入的典型题目就是 A+B(/problem.php?id=1085) 此题只要求用户求A+B的和,但此类题目往往说明测 试数据有多组。则默认是到文件(后台测试用例在文 件里)末尾结束。我们则可以采用循环的方式不断接 收测试用例,并且每接收一组输出一组(不必全部输 入再全部输出,因为OJ只比对一次最后的结果)。 参考C代码:
A+BⅠ
#include<stdio.h> int main() {
int a,b; while(scanf(“%d%d”,&a,&b)==2) //利用scanf的返回值 {
printf(“%d\n”,a+b); } return 0;
}
A+BⅡ
依然是A+B,我们可以看一下这道题 /problem.php?id=1086 依然是求A+B,但它的输入数据为: 2 15 10 20 输出为: 6 20
return 0;
}
A+BⅢ
继续是A+B,不同的是题目中说明,有多组数据,但是以A和B都为0时结束,则此时,就要做判断。 不能依然输出0。 /problem.php?id=1087 参考答案: #include<stdio.h> int main() { int a,b; while(scanf("%d%d",&a,&b)==2) { if(a== 0 && b==0) break; printf("%d\n",a+b); }
相关文档
最新文档