Your task is to Calculate a + b.
Your task is to Calculate a + b.
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.
Input
2 1 5 10 20
Output
6 30
法一-----while循环
#include
int main()
{
int n;//定义组数
scanf("%d", &n);
int a, b;//输入的两个整数
while (n--) {
scanf("%d %d", &a, &b);
printf("%d\n", a + b);
}
return 0;
}
法二---for循环
#includeint main(){
int n,a,b,i;//定义组数
scanf("%d", &n);//终端格式化输入组数
for (i = 0; i < n;i++) {
scanf("%d %d", &a, &b);
printf("%d\n", a+b);
}
return 0;}
求2个数中较大者。
第一行为测试的数据组数N,接下来的N行分别是两个待比较的整数。
输出N行,每一行的值为每组数中较大的整数。
Input
2 1 2 15 10
Output
2 15
#include
int main()
{
int n;//定义组数
scanf("%d", &n);
int i;//定义次数
int a = 0;int b=0;//输入的两个整数
for (i = 0; i < n; i++) {
scanf("%d %d", &a, &b);
if (a > b)printf("%d\n", a);
else printf("%d\n", b);
}
return 0;
}
从键盘上输入任意一个整数n,计算1到n的和。
从键盘输入任意整数n。
输出1到n的和。
Input
3
Output
6
#include
int main()
{
int n;//输入整数
scanf("%d", &n);
int i =0;//定义次数为i
int sum = 0;
for (i = 0; i <= n; i++) {
sum += i;
}
printf("%d\n", sum);
return 0;
}
从键盘输入任意一个大于等于0的整数n,然后计算n的阶乘,并把它输出。
提示: 0!是 1 。
输入任意一个大于等于0的整数n。
输出n!
Input
3
Output
6
法一-----直接写
#include
int main()
{
int n;//输入的整数
scanf("%d", &n);
int i ;//定义次数;
int m=1;//定义阶乘
if (n > 0) {
for (i = 1; i <= n; i++) {
m *= i;
}
}
printf("%d\n", m);
return 0;
}
思路:按照这个程序运行其实是简单化了的,因为只有一个if语句,当n=0时其实没有进入循环体系,因此也就会直接输出m的值也就是初始化时m的值,另外注意n的初始值在for应该是1,因为前提是n>0且n为整数;m的初始值也不可以为0,y因为m*=i,即m=m*i,如果是0初始化值,则m恒等于0了。
法二----分情况讨论
#include
int main()
{
int n;//输入的整数
scanf("%d", &n);
int i ;//定义次数;
int m=1;//定义阶乘
if (n == 0) { printf("1\n"); }
else if (n > 0) {
for (i = 1; i <= n; i++) {
m *= i;
}
printf("%d\n", m);
}
return 0;
}
这个方法要注意第二个printf的位置
请用C语言编写一个程序。此程序接收一个正整数N,然后打印输出“N次N*(1->N)格式”的数据。例如:此程序接收正整数5,那会输出以下格式的数据:
5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
只有一个正整数N(N<=100)。
输出共N行数据,如上面的例子所示。
Input
5
Output
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
#include
int main()
{
int n;//输入整数n
scanf("%d", &n);
int i;//定义次数;
for (i = 1; i <= n; i++) {
printf("%d*%d=%d\n",n,i,n*i);
}
return 0;
}
数列求和是一类常见的问题,本题有一定的代表性:
求s=a+aa+aaa+aaaa+……+aa…aa(n位)
其中,a的值由键盘输入,位数n也由键盘输入。
第一行输入a的值;
第二行输入位数n。
输出对n个数完成求和运算后的结果。
比如a=3,n=6时,s=3+33+333+3333+33333+333333
Input
3 6
Output
370368
#include
int main(){
int a, n,i;//a为值n为位数,i为次数
scanf("%d\n%d", &a, &n);
int sum = 0; int c = 0;
for (i = 0; i
接受从键盘输入的N个整数,输出其中的最大值、最小值和平均值(平均值为整除的商)。
第一行一个正整数N(N<=100);
第二行有N个用空格隔开的整数Ti (1 <= i <= N, 0 <= Ti <= 10000000)
三个有空格隔开的整数分别为最大值、最小值和平均值,其中平均值为整除的商。
Input
5 1 2 3 5 4
Output
5 1 3
输入两个正整数,求它们的最大公约数与最小公倍数。
输入两个正整数,两个整数之间用空格分开。
数据保证在 int 范围内。
第一行输出最大公约数;
第二行输出最小公倍数。
答案保证在 int 范围内。
Input
64 48
Output
16 192
从键盘上输入任意一个正整数,然后判断该数是否为素数。
如果是素数则输出"This is a prime."
否则输出“This is not a prime.”
输入任意一个正整数n(1 <= n <= 1000000)。
判断n是否为素数,并输出判断结果:
如果n是素数则输出"This is a prime."
否则输出“This is not a prime.”
特别提醒:请注意对1的判定,1不是素数。
Input
3
Output
This is a prime.
法一--
#include
int main()
{
int n;
scanf("%d", &n);
int flag = 1; //flag = 1说明最开始他是一个素数
for(int i = 2; i <= n - 1; i++)
{
if(n % i == 0) //i是n的因子, 不满足素数的定义了→不是素数
{
flag = 0; //不是素数
break;
}
}
if(n == 1) flag = 0; //特判1
if(flag == 0) printf("No\n");
else printf("Yes\n");
return 0;
}
法二--
#include
int main()
{
int n;
scanf("%d", &n);
int cnt = 0;
for(int i = 2; i <= n - 1; i ++)
{
if(n % i == 0)
{
break;
}
cnt++;
}
//从2到n-1 是 n - 2 个数
if(cnt == n - 2) printf("This is a prime.\n");
else printf("This is not a prime.\n");
return 0;
}
求n个整数中的绝对值最大的数。
输入数据有2行,第一行为n,第二行是n个整数。
输出n个整数中绝对值最大的数。
Input
5 -1 2 3 4 -5
Output
-5
#include
int main(){
int n, i, a = 0; int max = 0;int amx;//输入的个数(其实是固定的),i为次数;
scanf("%d\n", &n);//终端输入的个数;
for (i = 0; i < n; i++) {
scanf("%d", &a);//终端输入的数;
if (a >= 0) {
if (a >= max) {
max = a; amx = a;
}
}
else {
a = -a;//将负数变成整数;
if (a >= max) {
max = a; amx = -a;
}
}
}
printf("%d\n", amx);
return 0;
}
思路:遇见这种绝对值的题目就可以分情况讨论,即它是>=0还是<0,后面再比较一般就是和最大值比较了(计算机可以自动比较出已有数据的最大值max),因为输入的值会与初始化了的max比较,如果比max小,就会把这个值赋给max了。
输入n值,并利用下列格里高里公式计算并输出圆周率:
输入公式中的n值。
输出圆周率,保留5位小数。
Input
1
Output
2.66667
#include
int main()
{
int n;//输入整数;
int i; double a=0;//a代表最后的值
scanf("%d", &n);
for (i = 1; i <=n;i++) {
a += 4 * ((1.0 / (4 * i - 3)) - (1.0 / (4 * i - 1)));
}
printf("%.5f\n", a);
return 0;
}
注意:(1)注意for循环的初始条件,i=0分母就是负的了,不符合实际情况
小鑫和健健喜欢在课间的时候玩游戏,今天他手里有n张卡片,每张卡片有一个数字。于是他就想和健健比一比更幸运。
玩法是这样的:这n张卡片上的数字是没有规律的。他俩轮流取走最上面的一张卡片,最后谁取走卡片上的数字之和最大,谁就更幸运。(因为这个游戏是小鑫想出来的,总是小鑫拿第一张)
你能帮他们判断谁更幸运么?
第一行为一个数字 n。100000>n>0
第二行为n个数,是n张卡片上的数字,第一个数为最上面的卡片上的数,依次向下。N个数是在整型范围内。
如果小鑫更幸运输出“Greater than”,如果健健更幸运输出“Less than”,否则“Equal”。(输出均不含引号)
Input
6 1 1 2 2 3 3
Output
Equal
#include
int main()
{
int n,i;//输入个数,次数
int a;//输入的具体的整数
int sum1 = 0;int sum2 = 0;//记作是两个人抽卡上数之和
scanf("%d\n", &n);
for (i = 1; i <= n; i++) {
scanf("%d", &a);
if (i % 2 == 0) //意思是i是偶数2,4,6等即抽到的都是第二张的
sum2 += a;
else sum1 += a;//这个代表次数都是抽第一次,即小鑫的数目总和
}
if (sum1 > sum2)printf("Greater than\n");
else if (sum1 < sum2)printf("Less than\n");
else printf("Equal\n");
return 0;
}
有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前n项之和。
输入只有一个正整数n,1≤n≤10。
输出该序列前n项和,结果保留小数后6位。
Input
3
Output
5.166667
#include
int main()
{
int n ; int i;//输入整数;次数
double a = 2; double b = 1; double sum=0;//a是分子,b是分母,sum是和
double c = 0;//交换;
scanf("%d",& n);//输入整数
for (i = 0; i
此题的思路是先观察所给式子的 特点,发现后一个的分子其实是前面一个数的分子和分母之和,分母就是前一个数的分子---因此就容易想到前面学到过的交换变量
期末考试结束了,老师想要根据学生们的成绩划分出等级。共有5个等级A,B,C,D和E。
划分方法如下,90分(含90)以上的为A,80~90(含80)间的为B,70~80(含70)间的为C,
60~70(含60)的为D,不及格的为E。
根据输入的成绩,编程输出各个级别段人数。
输入第一行包含一个正整数N(N<= 100)代表学生的数目,接下来有N行数据每行一个整数(0~100)代表
一个学生的成绩。
输出有五行格式如下:
A nA
B nB
C nC
D nD
E nE
其中A,B,C,D,E代表等级,nA,nB等代表个等级的人数,等级和人数之间有一个空格。
Input
6 66 73 85 99 100 59
Output
A 2 B 1 C 1 D 1 E 1
#include
int main()
{
int n, i;//定义组数,循环次数
scanf("%d", &n);//输入总的组数
int a=0;//输入的成绩
int c = 0; int d = 0; int e = 0; int f = 0; int g = 0;
//int sum1 = 0; int sum2 = 0; int sum3 = 0; int sum4 = 0; int sum5 = 0;
for (i = 1; i <=n; i++) {
scanf("%d", &a);
if (a >= 90) {
c++;
}
else if (a >= 80 && a < 90) {
d++;
}
else if (a >= 70 && a < 80) {
e++;
}
else if (a >= 60 && a < 70) {
f++;
}
else {
g++;
}
}
printf("A %d\nB %d\nC %d\nD %d\nE %d\n", c, d, e, f, g);
return 0;
}
注意:这个题用不到sum+=,因为这个代表求和,比如A等级有四个,那么用sum+=的话其实是计算从1到4的和了
飞飞特别喜欢平方数,可是他数学并不好,你能帮他计算 n 与 m 之间所有平方数之和吗?
提示:若一个整数的开方还是整数,它就是平方数。例如:4、9、16、25是平方数。n 和 m 均可能为 0 至 100000000 内的任意整数,n、m不一定有序。
第一行 T 代表数据的组数。
接下来有 T 行,每行两个整数n,m (0 <= n, m <= 100000000)
输出一个整数,代表所求区间内平方数之和。
Input
3 1 4 10 3 17 20
Output
5 13 0
#include
#include
#include
int main()
{
int n, i; n = 0;//输入整数的个数,循环次数
int a, b,m,sum;//a,b代表输入的区间数据;m是用于储存变量
sum = 0; int j;//j是区间内数据
scanf("%d", &n);
for (i = 1; i <= n; i++) {
scanf("%d %d", &a, &b);//未知两个数的大小所以下面要比较确定区间
if (a > b) {
m = b; b = a; a = m;//到此实现a和b的互换即确定a小b大
}//明确区间是(a,b)
for (j = a; j <= b; j++) {//确定j在区间内
m = sqrt(j);
if (m * m == j) {
sum += j;
}
}
printf("%d\n", sum);
sum = 0;
}
return 0;
}