ACM输入输出
- 格式:ppt
- 大小:238.00 KB
- 文档页数:22
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)【输入】输入有多组,并却题目告诉你每组输入遇见什么结束,与第三种不同之处在于,每组输入都有相应的细化。
学号: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给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。
常用的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,输出它们的和,每个结果占一行。
【⽜客⽹】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), 表⽰数据组数。
杭电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。