ACM基本输入输出
- 格式:pdf
- 大小:310.96 KB
- 文档页数:43
ACM新手之八大输入输出格式文章分类:C++编程在ACM题库中,不管是文件输出(输入)还是标准输出(输入),都有着一定的格式,下面我就以杭电1089——1096为例子,简单的介绍一下。
第一种:A+B for Input-Output Practice (I)【输入】有多组输入数据,但没有具体的告诉你有多少组,只是让你对应每组输入,应该怎样输出。
【输出】有多组输出,对应着每组输入,每组输出占一行。
【代码】对于上述常见的情况,我们可以用下面的代码来解决。
没有告诉我们有多少组,我们只需要等待即可:while (scanf (……) != EOF)相对应输入,输出只需要在while中输出。
【完整代码】第二种:A+B for Input-Output Practice (II)【输入】先输入一个整数,告诉我们接下来有多少组数据,然后在输入每组数据的具体值。
【输出】有多组输出,对应着每组输入,每组输出占一行。
【代码】这也是一种常见的输入形式,简单的代码,我们可以先用scanf函数输入第一个整数来确定有多少行,然后在用for循环一组一组的输入。
【完整代码】第三种:A+B for Input-Output Practice (III)【输入】有多组输入数据,没有具体的告诉你有多少组,但是题目却告诉你遇见什么结束。
【输出】有多组输出,没对应一组输入都有相应的输出,结束标记不用管!【代码】这种类型的题目和第一种差不多,但是有一点值得注意,就是要加上结束条件。
对于这道题我么可以这样while(scanf(“%d%d”, &a, &b) && (!(a==0 && b==0))),当然你也可以将条件写在while循环的内部,条件满足时break即可。
【完整代码】第四种:A+B for Input-Output Practice (IV)【输入】输入有多组,并却题目告诉你每组输入遇见什么结束,与第三种不同之处在于,每组输入都有相应的细化。
ACM竞赛简介:ACM国际大学生程序设计竞赛是由国际计算机界历史悠久、颇具权威性的组织ACM学会(美国计算机协会)主办,是世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,其目的旨在使大学生运用计算机来充分展示自已分析问题和解决问题的能力。
(网上有更详细的介绍,这里只做个简介)ACM竞赛特点:竞赛中一般有10道题,比赛时间为5个小时,每支参赛队伍由3名选手组成,可以携带诸如书、手册、程序清单等参考资料,对每一道题编完代码后,将代码提交裁判,每一次提交会被判为正确或者错误,判决结果会及时通知参赛队伍。
在规定时间内提交并通过题目数越多排名越靠前。
(时间5小时,题目8~12题,同题目数按所用时间多少排名)ACM题目限制:●时间限制(即程序运行所用的时间)●空间限制(即程序运行时所开内存的多少)ACM基本要求⏹英语⏹分析理解能力⏹算法⏹编码⏹合作ACM竞赛意义学习编程,并不是为了参加竞赛,ACM竞赛对于我们的意义更多的还是专业能力的提高。
在备战过程中,无论是对自己的编程能力,还是团队合作解决问题的能力,都是一种很好的锻炼机会。
一般而言,每个在做ACM竞赛的学生,他们的编程能力会比较出色。
与数学建模相比,由于ACM 竞赛针对的是我们学计算机的同学,所以没有数学建模的比赛规模,但是依旧是国际上最有影响力的大学生竞赛之一。
ACM竞赛入门现在有很多大学有专门为ACM 竞赛开设自己的测评网站,上面有很多贴近竞赛的题目。
比如说北大poj,浙大zoj等等。
所以选择一个自己专门练习的网站,开始自己在上面做题,和同学交流经验。
等到回到本部,要是有了一定的实力和基础。
⏹在poj上做20左右道简单的题目,熟悉ACM题目的基本特点。
(这里列出几道相对较简单的题目的题号:1000,1003,1004,1046,1207,1226,1504,1552)⏹熟悉了poj之后,按照poj的题目分类,买一本或借一本算法的书(暨大ACM校队的基本都用机械工程出版社的《算法导论》)开始学习,然后做算法的专题,一般每个专题做10~30道。
学号: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;}}。
零起点学算法87——打印所有低于平均分的分数Time Limit:1000MS Memory Limit:65536KTotal Submit:4704 Accepted:1633Description输入n个成绩,打印出所有低于平均分的分数(注意:ave = s/n中s 为float或ave = (float)s/n)。
Input多个测试数据每个测试数据一行,在这行中先输入分数的个数n(1<=n<=100),然后紧跟着输入n个整数(代表分数)Output对于每个测试数据,输出一行按照输入顺序输出所有低于(<)平均分的分数,中间用一个空格隔开,如果没有低于平均分的那么只输出一个空行Sample Input3 40 50 602 90 805 10 10 90 80Sample Output408010 10∙#include<stdio.h>∙int main()∙{∙ int n,i,a[100];∙ float ave,s;∙ while(scanf("%d",&n)!=EOF)∙ {∙ for(i=0;i<n;i++)∙ {∙ scanf("%d",&a[i]);∙ s=s+a[i];∙ }∙ ave=s*1.0/n;∙ for(i=0;i<n;i++)∙ {∙ if(a[i]<ave)∙ printf("%d ",a[i]);∙ else∙ printf("");∙ }∙ printf("\n");∙ s=0;∙ }∙ return 0;∙}平方和与立方和Time Limit:1000MS Memory Limit:65536KTotal Submit:3105 Accepted:1446Description给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。
杭电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输⼊输出之pythonPython的输⼊数野⽣字符串,需要⾃⼰转型,常⽤的转型函数有:strip :将两端的空⽩字符去掉,返回strslipt :将字符串⽤空⽩字符分开,返回[str]map:把list⾥⾯的值映射到指定类型,返回[type]isspace:是否⽤空⾏组成EOF⽤来抓异常输出加','不换⾏Python3不能⽤raw_input(),⽽是⽤input()就⾏了,输出必须加“()”。
1、有多组输⼊遇见EOF结束:#python2while True:try:a, b = map(int, raw_input().strip().split())print(a+b)except EOFError:break2、输⼊⼀个数字T,接下来有T组数据:T = int(raw_input().strip())for case in range(T):a, b = map(int, raw_input().strip().split())print a+b3、有多组输⼊,但是要遇见0 或者 -1 之类的才结束:1 while True:2 a, b = map(int, raw_input().strip().split())3 if a == 0 and b == 0:4 break5 print a+b4、输⼊⼀个数字T,接下来有T组数据,每组数据⼀⾏,第⼀个数字代表这组有多少和数字,接下来的就是这组的数据。
T = int(raw_input().strip())for case in range(T):data = map(int, raw_input().strip().split())n, arr = data[0], data[1:]sum = 0for i in range(n):sum += arr[i];print sum,。
五种c语言的输入输出简单代码实例五种c语言的输入输出简单代码实例 c语言的一些输入输出实例如上内容根据周立发linux视频教程所做的笔录,为了方便大家理解,建议大家可以到下面的连接下载观看。
周立发 linux 视频教程下载(不定期持续更新)由于本人刚刚接触编程语言如以下内容有误或有不足之处,望朋友能给予意见或者建议!谢谢:)一、用标准c 提供的标准输入输出函数用法简单实例:例一、#includeint main(int argc, char **argv){char name[16] = "";unsigned int age=0;printf("Plaese input your name and age:");scanf("%s%d",name,&age);printf("you name is:%s,age is:%d\n",name,age);return 0;}例二、#includeint main(int argc, char **argv){char name[16] = "";unsigned int age = 0;fprintf(stdout, "Please input your name and age:");fscanf(stdin, "%s,%d", name, &age);fprintf(stdout, "Your name is:%s,and age is:%d\n", name, age); return 0;}下面是非格式化输入输出函数 :puts()和gets()例三、#includeint main(int argc, char **argv){char name[16] = "";unsigned int age = 0;puts("Plaese input your name:");gets(name);puts("Your name is:");puts(name);puts("Plaese input your age:");gets(&age);puts("Your age is:");puts(&age);return 0;}输出到文本:例四、#includeint main(int argc, char **argv){FILE *fp = 0;fp = fopen("/tmp/myapp.log","a");if (!fp) {printf("cannot open file /tmp./myapp.log\n","a"); return -1;}fprintf(fp, "This is my log written into a file\n"); fclose(fp);return 0;}二、linux下通常会到unistd.h这个文件来实现同样的功能:例五、#include#include#define PROMPTName "Please input your name and age:"#define OUTPUTName "Your name is:"#define OUTPUTAge ",and your age is:"int main(int argc, char **argv){char name[9] = "", age[4];write(1, PROMPTName, strlen(PROMPTName));read(0, name, 8);read(0, age, 3);write(1, OUTPUTName, strlen(OUTPUTName));write(1, name, strlen(name));write(1, OUTPUTAge, strlen(OUTPUTAge));write(1, age, strlen(age));return 0;}以上五个实例均照以下步骤编译运行root@xuanfei-desktop:~/cpropram/7# gcc -Wall printf_scanf.croot@xuanfei-desktop:~/cpropram/7# ./a.outPlaese input your name and age:xuanfei 22you name is:xuanfei,age is:22相关文章:linux c语言编程环境搭建(linux下c语言编程从零开始开始)下面是网上搜集的一些相关学习参考资料:例中第一条语句#include的含义是调用另一个文件stdio.h, 这是一个头文件, 其中包括全部标准输入输出库函数的数据类型定义和函数说明。
1、输入和输出:输入:输入也叫读,数据由核流向用户程序输出:输出也称写、打印,数据由用户程序流向核以下介绍一些输入输出函数,尽管都是一些有缺陷的函数,但比较适合初学者使用2、printf用法(其缺陷在于带缓存)printf输出时必须加上\n(刷新缓存)解释:第一幅图没有加'\n',不会刷新缓存区,则不会打印出来;第二幅图是因为主函数结束时刷新了缓存区,但由于没有换行符,所以没有换行便显示了后面的容;第三幅图时正常打印。
变量定义的是什么类型,在printf打印时就需要选择什么格式符,否则会造成数据的精度丢失(隐式强转),甚至会出现错误(1)格式输出函数的一般形式函数原型:int printf(char * format[,argument,…]);函数功能:按规定格式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数,若出错,则返回负数。
A、它使用的一般形式为:printf("格式控制字符串",输出项列表);B、语句中"输出项列表"列出要输出的表达式(如常量、变量、运算符表达式、函数返回值等),它可以是0个、一个或多个,每个输出项之间用逗号(,)分隔;输出的数据可以是整数、实数、字符和字符串。
C、"格式控制字符串"必须用英文的双引号括起来,它的作用是控制输出项的格式和输出一些提示信息,例如:int i=97; printf("i=%d,%c\n",i,i);输出结果为:i=97,a 语句printf("i=%d,%c\n",i,i);中的两个输出项都是变量i,但却以不同的格式输出,一个输出整型数97,另一个输出的却是字符a,其格式分别由"%d"与"%c"来控制。
语句printf("i=%d,%c\n",i,i);的格式控制字符串中"i="是普通字符,他将照原样输出;"%d"与"%c"是格式控制符;"\n"是转义字符,它的作用是换行。
【⽜客⽹】Python语⾔ACM模式输⼊输出规范1.输⼊描述输⼊包括两个正整数a,b(1 <= a, b <= 10^9),输⼊数据包括多组。
输⼊ 1 5输出 6while True:try:a,b = map(int, input().split())print(a+b)except:breakwhile True:try:num=input().split()num=list(map(int,num))print(num[0]+num[1])except:break2.输⼊描述输⼊第⼀⾏包括⼀个数据组数t(1 <= t <= 100)接下来每⾏包括两个正整数a,b(1 <= a, b <= 10^9)输⼊21 510 20输出630n = int(input())for i in range(n):a = input().split()print(int(a[0])+int(a[1]))import sysn = int(input())for i in range(n):a,b = map(int,input().split())print(a + b)3.输⼊描述输⼊包括两个正整数a,b(1 <= a, b <= 10^9),输⼊数据有多组, 如果输⼊为0 0则结束输⼊输⼊:1 510 200 0输出630while True:try:a,b = map(int, input().split())if (a,b) == (0,0):breakelse:print(a+b)except:breakimport sysfor line in sys.stdin:line=line.split()temp=list(map(int,line))if temp[0]==0 and temp[1]==0:breakprint(temp[0]+temp[1])while True:try:temp=input().split()temp=list(map(int,temp))if temp[0]==0 and temp[1]==0:breakprint(temp[0]+temp[1])except:break4.输⼊描述输⼊的第⼀⾏包括⼀个正整数t(1 <= t <= 100), 表⽰数据组数。