Your task is to Calculate a + b.
Too easy?! Of course! I specially designed the problem for acm beginners.
You must have found that some problems have the same titles with this one, yes, all these problems were designed for the same aim.
The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line.
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.
1 5
10 20
1 5
10 20
在这里给出相应的输出。例如:
6
30
#include
int main()
{
int a, b;
while ((scanf("%d %d", &a, &b) != EOF)) printf("%d\n", a + b);
return 0;
}
给定一个整数,请求出这个整数所有数位中是偶数的数位的和。例如,对于12436546,那么答案就是 2 + 4 + 6 + 4 + 6 。
输入一个数 n 。 (0 <= n <= 2147483647)
输出 n 的所有偶数数位的和。
6768
在这里给出相应的输出。例如:
20
#include
int main()
{
int n;//输入整数n
scanf("%d", &n);
int a = 0; int sum = 0;
while (n > 0) {
a = n % 10;//保留了个位数
n /= 10;//保留了除了个位数以外的数
if (a % 2 == 0) sum += a;//判断是否为偶数
}
printf("%d", sum);
return 0;
}
宇宙只有一个地球,人类共有一个家园。地球是人类唯一赖以生存的家园,珍爱和呵护地球是人类的唯一选择.小明坚决拥护科学论断,并在植树节种了一棵小树。小明每天都给小树浇水,盼望着小树快快长高。他知道小树现在有 n cm,每天长高k cm,他想知道多少天小树可以长到m cm。
输入三个整数 n, m, k。 ( 0 <= n<= 10000, 0 <= m <= 10000,0 <= k <= 10000)
输出一个整数,即需要的天数。
在这里给出一组输入。例如:
100 200 5
在这里给出相应的输出。例如:
20
#include
int main()
{
int n;//现在高度
int k;//每天长高的长度;
int m;//期望高度
int i;//需要天数;
scanf("%d %d %d",&n,&m,&k);
while (n
给定一个正整数 n ,请你求出它的位数。
单组输入,输入一个整数 n 。(1<= n <= 2147483647)
输出一行,包含一个整数,即为 n 的位数。
1234567
在这里给出相应的输出。例如:
7
#include
int main()
{
int n,i=0;
scanf("%d",&n);
while (n>0){
n/=10;
i++;
}
printf("%d",i);
return 0;
}
正整数序列是指从1开始的序列,例如{1,2,3,4,......}
给定一个整数 n,现在请你求出正整数序列 1 - n 的和。
输入一个整数 n 。(1 <= n <= 1000)
输出一个整数,即为正确答案。
2
在这里给出相应的输出。例如:
3
#include
int main()
{
int n; int i=0; int sum = 0;
scanf("%d", &n);//输入整数
while (i<=n) {
sum += i; i++;
}
printf("%d", sum);
return 0;
}
输入一个正整数N,求出N^3的各位数字的立方和。
输入N的值。N<=1024
问题描述中所要求的数值。
3
在这里给出相应的输出。例如:
351
#include
int main()
{
int n = 0;//输入一个整数
int sum = 0;//求和
scanf("%d", &n);
int N; N = n * n * n;
//计算出n的三次方;例如是3的三次方结果是27,再求各位数字的立方之和
int a;//定义个位数
while (N >0) {
a = N % 10;//个位数读取
sum += a * a * a;//对个位数求和;
N /= 10;//留取个位数,这个N>0的话又会进入这个循环了
}
printf("%d", sum);
return 0;
}
虎子是个爱学习的孩子,暑假也在家有规律的学习,但是他最近碰到了一道难题,题目是这样的:
给出一个正整数 n 和数字 m ( m 取值范围[0,9]中的一个数字),求 m 在 n 中出现的次数。
比如 n = 2122345 , m = 2,答案就是 3 ,因为 2 在 2122345 中出现了三次。
你能帮帮他吗?
输入只有一行,包含两个空格分开的整数 n 和 m 。(0 <= m <= 9,1 <= n <= 2147483647)
输出一个数字,表示 m 在 n 中 出现的次数。
在这里给出一组输入。例如:
2122345 2
在这里给出相应的输出。例如:
3
#include
int main()
{
int n, m = 0;//输入整数n例如22434;
scanf("%d %d", &n, &m);
int i=0;//定义次数;
int a = 0;
while (n > 0) {
a=n % 10;//保留个位;
n /= 10;//保留除个位之外的数
if (a == m) { i++; }
}
printf("%d", i);
return 0;
}
Your task is to Calculate a + b.
Input contains multiple test cases. Each test case contains a pair of integers a and b, one pair of integers per line. A test case containing 0 0 terminates the input and this test case is not to be processed.
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.
1 5
10 20
0 0
6
30
#include
int main()
{
int a, b = 0;
while ((scanf("%d %d", &a, &b) != EOF) && ((a != 0)) || (b != 0)) {
printf("%d\n", a + b);
}
return 0;
}
法二:
#include
int main()
{
int a,b;
while ((scanf("%d %d",&a,&b)!=EOF)&&((a!=0)||(b!=0)))
printf("%d\n",a+b);
}
Your task is to Calculate a + b.
The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line.
For each pair of input integers a and b you should output the sum of a and b, and followed by a blank line.
在这里给出一组输入。例如:
1 5
10 20
在这里给出相应的输出。例如:
6
30
#include
int main()
{
int a,b;
while (scanf("%d %d",&a,&b)!=EOF){
printf("%d\n\n",a+b);
}
return 0;
}
有这样一个猜想:对于任意大于1的自然数n,若n为奇数,则将n变成3n+1,否则变成n的一半。经过若干次这样的变换,一定会使n变为1。例如3->10->5->16->8->4->2->1。对于n=1的情况,当然就不用变化了。
输入一个正整数n,n的范围是[1,999999]。
输出变换的次数。
3
7
#include
int main()
{
int n = 0;
scanf("%d", &n);//输入n;
int i = 0;//定义次数;
while (n > 1) {
if (n % 2 == 1) //n为奇数的表达方式
{
n = 3 * n + 1;
i += 1;//注意这种求和的表达
}
else if (n == 1)break;
else if (n % 2 == 0) {
n = n / 2;
i += 1;
}
}
printf("%d", i);
return 0;
}
有这样一个猜想:对于任意大于1的自然数n,若n为奇数,则将n变成3n+1,否则变成n的一半。经过若干次这样的变换,一定会使n变为1。例如3->10->5->16->8->4->2->1。对于n=1的情况,当然就不用变化了。
输出格式:
A number rounds to two decimal places, which is the average of the serial.
Using C, the printf for this case is:
printf("%.2f\n", average);
##输入例子
1.0 2.1 3.2 4.3 5.4 6.5
##输出例子
3.75
#include
int main()
{
double n;int i=0;
double average,sum=0;
while (scanf("%lf",&n)!=EOF){
sum+=n;//求和
i++;
average=sum/i;
}
printf("%.2f",average);
return 0;
}
输入两行数据
第一行输入n的值,
第二行输入n件物品的价格,用空格分隔。
以保留两位小数的形式输出。
3
5.6 8.4 4.5
18.50
#include
int main()
{
int n;//总件数
scanf("%d", &n);//输入件数,注意件数不参与到循环求和之中;
double x = 0;
double sum = 0;//x代表每件价格,sum代表求和
while (n--) {
scanf("%lf", &x);
sum += x;
}
printf("%.2f", sum);
return 0;
}
法二:
#include
int main()
{
int n;double p,sum=0;
scanf("%d",&n);
while(scanf("%lf",&p)!=EOF){
sum+=p;
}
printf("%.2f",sum);
}
输入若干个整数,统计这些数中有多少个是4或7的倍数。
输入若干个整数,每个整数的取值在int范围之内,用空格隔开。
输出一个整数,为统计的结果。
30 21 5 16 9
2
#include
int main()
{
int n; int i = 0;
while (scanf("%d", &n) != EOF) {
if ((n % 4) == 0 || (n % 7) == 0 )
i++;
}
printf("%d", i);
return 0;
}
中国古代著名算题。原载《孙子算经》:“今有物不知其数,三三数之剩二;五五数之剩三;七七数之剩二。问物几何?”。本题要求:设某物数量是 N,且三三数剩 x,五五数之剩y,七七数剩z 。 x,y,z 的值可从键盘输入,请求出对应的最小 N 值并输出。
在一行中给出x、y、z的值,空格隔开。
输出N的值。
在这里给出一组输入。例如:
2 3 2
在这里给出相应的输出。例如:
23
在这里给出一组输入。例如:
1 1 3
在这里给出相应的输出。例如:
31
#include
int main()
{
int x,y,z;
scanf("%d %d %d",&x,&y,&z);
int i=0;
do {i++;}
while (!(i%3==x&&i%5==y&&i%7==z));
/*有一个 !(a),当a为真的时候,整体为假,循环结束,输出结果
所以这个题来说,就相当于满足后面那3个条件时,while判定为假,
停止输出。然后当后面的那个条件不满足时,while就判断为真,不结束,
一直循环,就相当于遍历。*/
printf("%d",i);
return 0;
}
本题的要求很简单,就是求N
个数字的和。麻烦的是,这些数字是以有理数分子/分母
的形式给出的,你输出的和也必须是有理数的形式。
输入第一行给出一个正整数N
(≤100)。随后一行按格式a1/b1 a2/b2 ...
给出N
个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。
输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分
,其中分数部分写成分子/分母
,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。
5
2/5 4/15 1/30 -2/60 8/3
3 1/3
2
4/3 2/3
2
3
1/3 -1/6 1/8
7/24
#include
#include
int M(int a,int a1) {
int c, m, n;
m = fmax(a, a1);
n = fmin(a, a1);
while (n != 0) {
c = m % n;
m = n;
n = c;
}
return m;
}//辗转相除法,返回最大公因数
int main(void) {
int n, sum = 0;
int a, b;//a表示分子b表示分母
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {//n次,每次读一个分数
int a1, b1;
scanf("%d/%d", &a1, &b1);
sum += a1 / b1;
a1 = a1 % b1;//提出整数部分
if (i == 1) {
a = a1, b = b1;//第一次时初始化
} else {
int m = b * b1 / M(b, b1);
//通过最大公因数找到最小公倍数
a = a * (m / b) + a1 * (m / b1);
b = m;
sum += a / b;
a = a % b;
//通分计算
}
while (1) {
int l = M(a, b);
if (l == 1) {
break;
}
a /= l;
b /= l;
}//while循环约分分子分母使其最简,每次都要操作避免数据溢出
}
if (sum == 0) {
if (a == 0) {
printf("0\n");
} else {
printf("%d/%d", a, b);
}
} else {
printf("%d", sum);
if (a == 0) {
printf("\n");
} else {
printf(" %d/%d", a, b);
}
}//最后判断并输出
return 0;
}
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu
字。十个数字对应的拼音如下:
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入在一行中给出一个整数,如:1234
。
提示:整数包括负数、零和正数。
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如yi er san si
。
-600
fu liu ling ling
#include
int count(int x);
int main()
{
int n;
if(scanf("%d",&n)){};//输入要读的整数
int c;
if(n<0)
{
printf("fu ");
n=-n;
}//当输入的整数为负数时,取负数的相反数
c=count(n);
for(int i=0;c>0;i++)//循环的控制条件为c>0,之前写成了n>0
{
int m;
m=n/c;//取出该整数的第一位数字
n%=c;
switch (m)
{
case 0:
printf("ling");
break;
case 1:
printf("yi");
break;
case 2:
printf("er");
break;
case 3:
printf("san");
break;
case 4:
printf("si");
break;
case 5:
printf("wu");
break;
case 6:
printf("liu");
break;
case 7:
printf("qi");
break;
case 8:
printf("ba");
break;
case 9:
printf("jiu");
}
if(c>9)//判断点,控制最后输出没有空格
{
printf(" ");
}
c/=10;
}
return 0;
}
int count(int x)//例如-400,则返回值为100
{
int cnt=1;
while(x>9)
{
x/=10;
cnt*=10;
}
return cnt;
}
法二:
#include
int main()
{
int x;
scanf("%d",&x);
if (x<0){
printf("fu ");//fu后面是空格不是换行,要注意否则格式老是不对。
x=-x;
}
int mask =1;
int t=x;
while (t>9){
t/=10;
mask*=10;
}
do{
int d= x/mask;
switch (d){
case 0:printf("ling");break;
case 1:printf("yi");break;
case 2:printf("er");break;
case 3:printf("san");break;
case 4:printf("si");break;
case 5:printf("wu");break;
case 6:printf("liu");break;
case 7:printf("qi");break;
case 8:printf("ba");break;
case 9:printf("jiu");break;
}
if(mask>9)printf(" ");
x %=mask;
mask/=10;
}while (mask>0);
printf("\n");
return 0;
}
本题要求两个给定正整数的最大公约数和最小公倍数。
输入在一行中给出两个正整数M和N(≤1000)。
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
511 292
73 2044
/*
题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。
程序分析:
最大公约数:
最大公约数的定义为:m和n都对x这个数取余得的结果为0
两个数的最大公约数的取值范围为1到min(m,n)
所以我采用for循环将1到min(m,n)的所有数都试了一遍,最后输出的x就是最大的公约数
最小公倍数:
最小公倍数 = (m*n)/最大公约数
*/
#include
int main()
{
int m,n;
int gongyue,gongbei;
scanf("%d %d",&m,&n);
//求最大公约数
int flag;
if(m>n){flag = n;}else flag = m;//找出m.n中小的那一个作为循环次数
for(int x= 1;x<=flag;x++)
{
if(m%x==0 &&n%x==0)
{
gongyue = x;
}
}
gongbei = m*n/gongyue;
printf("%d %d",gongyue,gongbei);
return 0;
}
法二:
#include
int main()
{
int a,b,x,y;
scanf("%d %d",&a,&b);
int c,min;
if(a>b){
min=b;
}else{
min=a;
}
for(c=1;c<=min;c++){
if(a%c==0&&b%c==0){
x=c;
}
}//最大公约数=(a*b)/最小公倍数。
y=(a*b)/x;
printf("%d %d\n",x,y);
return 0;
}
#include
int main()
{
int a,b,gongyue,gongbei;
scanf("%d %d",&a,&b);
int min,i=0;
if(a>b)min=b;
else min=a;
while(i<=min)
{
i++;
if(a%i==0&&b%i==0)
gongyue=i;
}
gongbei=(a*b)/gongyue;
printf("%d %d",gongyue,gongbei);
}
本题要求计算给定的一系列正整数中奇数的和。
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。
在一行中输出正整数序列中奇数的和。
8 7 4 3 70 5 6 101 -1
116
#include
int main()
{
int n,sum;
scanf("%d",&n);
while(n>0)
{ if(n%2!=0)
{ sum += n;
}//也不需要用break
scanf("%d ",&n);//在while的循环里,用于实现输入一系列的数
}
printf("%d",sum);
return 0;
}
法二------更好理解
#include
int main()
{
int n,sum;
while(scanf("%d",&n)&&n>0)//注意这种表达方式
{
if(n%2==1){
sum+=n;
}
}
printf("%d",sum);
}
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。
在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。
58 4
70
50
56
58
60
-2
#include
int main(){
// randNum:随机数 guessNum:用户猜测数 N:次数 flag:标志
int randNum, guessNum, N, flag = 0;
scanf("%d %d", &randNum, &N);
for( int i=1; i<=N; i++ ){ //循环输入N次结束
scanf("%d", &guessNum);
if( guessNum < 0 ) // 输入不合法
break;
if( guessNum > randNum ) // 输入太大
printf("Too big\n");
else if( guessNum < randNum ) // 输入太小
printf("Too small\n");
else if( guessNum == randNum ){ // 相等
if( i == 1 ) // 1次成功
printf("Bingo!\n");
else if( i <= 3 ) // 3次以内成功
printf("Lucky You!\n");
else if( i > 3 ) // 3次以上成功
printf("Good Guess!\n");
flag = 1;
break;
}
}
// 判断是否在N次内猜对
if( flag == 0 )
printf("Game Over\n");
return 0;
}
法二
#include
int main()
{
int i,a, b, N;
scanf("%d %d", &a, &N);
for(i = 1; i <= N; i++)
{
scanf("%d", &b);
if (b <= 0)
{
printf("Game Over");
return 0;
}
else if (b < a)
{
printf("Too small\n");
}
else if (b > a)
{
printf("Too big\n");
}
else if (a == b && i == 1)
{
printf("Bingo!");
return 0;
}
else if (a == b && i <= 3&&i!=1)
{
printf("Lucky You!");
return 0;
}
else if(a == b && i > 3)
{
printf("Good Guess!");
return 0;
}
else if(i == N && a != b)
{
printf("Game Over");
return 0;
}
}
printf("Game Over");
}
根据输入的半径值,计算球的体积。
已知 PI = 3.1415927
#define PI 3.1415927
输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。
输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。
1
1.5
4.189
14.137
#include
#define pl 3.1415927 //常量定义
int main()
{
double r,s;
while(scanf("%lf",&r)!=EOF){
s = (4 / 3.0) * pl * r * r * r;
printf("%.3lf\n", s);
}
return 0;
}