目录

R7-1 完全数

输入格式:

输出格式:

输入样例:

输出样例:

输入样例:

输出样例:

R7-2 判断完全数

输入样例:

输出样例:

输入样例:

输出样例:

R7-3 函数返回一个整数是否为完全数

输入样例:

输出样例:

输入样例:

输出样例:

R7-4 h0034. 平方矩阵 II

输入格式:

输出格式:

输入样例:

输出样例:

R7-5 选夫婿^_^

输入格式:

输出格式:

输入样例:

输出样例:

R7-6 一帮一

输入格式:

输出格式:

输入样例:

输出样例:

R7-7 猜数字*

输入样例

输出样例

R7-8 h0105. 弟弟的作业

输入格式:

输出格式:

输入样例:

输出样例:

R7-9 一维数组最大值和最小值交换

输入格式:

输出格式:

输入样例:

输出样例:

R7-10 打印九九口诀表

输入格式:

输出格式:

输入样例:

输出样例:

R7-11 乒乓球赛轮次

输入格式:

输出格式:

输入样例:

输出样例:

R7-12 有理数加法

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

R7-13 万万没想到之还是没想到

输入格式:

输出格式:

输入样例:

输出样例:

R7-14 到底是不是太胖了

输入格式:

输出格式:

输入样例:

输出样例:


R7-1 完全数

完全数,指所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。本题目要求读入2个整数A和B,输出该范围内的所有完全数(A<=完全数<=B)。

输入格式:

输入在一行中给出2个整数A和B。

输出格式:

以“完全数=约数1+约数2+...”的格式,输出该范围(A<=完全数<=B)内的所有完全数,每个完全数占一行。若该范围内没有完全数,则打印“no”。

输入样例:

在这里给出一组输入。例如:

1 100

输出样例:

在这里给出相应的输出。例如:

6=1+2+3
28=1+2+4+7+14

输入样例:

在这里给出一组输入。例如:

10 20

输出样例:

在这里给出相应的输出。例如:

no

代码如下:

#include <stdio.h>
#include <string.h>
int func(int a)
{int i, b[99] = {0}, j = 0, sum = 0;for (i = 1; i < a; i++){if (a % i == 0){sum += i;b[j++] = i;}}if (sum == a){printf("%d=", a);for (i = 0; b[i] != 0; i++){printf("%d", b[i]);if (b[i + 1] != 0)printf("+");}printf("\n");return 1;}return 0;
}int main()
{int m, n, i, count = 0;scanf("%d %d", &m, &n);for (i = m; i <= n; i++){if (func(i) == 1)count += 1;}if (count == 0)printf("no");return 0;
}

R7-2 判断完全数

编程输入一个不小于6的正整数N(N<99999999),输出它是不是完全数。真约数之和恰好等于它本身的数是完全数。

输入样例:

28

输出样例:

YES

输入样例:

100

输出样例:

NO

代码如下:

#include <stdio.h>
#include <string.h>
int func(int a)
{int i, sum = 0;for (i = 1; i < a; i++){if (a % i == 0){sum += i;}}if (sum == a)return 1;return 0;
}int main()
{int n;scanf("%d", &n);if (func(n))printf("YES");elseprintf("NO");return 0;
}

R7-3 函数返回一个整数是否为完全数

编写函数返回形式参数(一个正整数)是否为完全数。主函数功能为:输入一个整数N(N<5000),输出不小于N的第一个完全数。

输入样例:

20

输出样例:

28

输入样例:

100

输出样例:

496

代码如下: 

#include<stdio.h>
int is_perfect(int n)
{int i,sum = 0;for(i = 1; i < n; i++){if(n % i == 0)sum += i;}if(sum == n)return 1;return 0;
}
int main()
{int n, i;scanf("%d",&n);for(i = n;; i++){if(is_perfect(i)){printf("%d",i);break;}}return 0;
}

R7-4 h0034. 平方矩阵 II

输入整数N,输出一个N阶的二维数组。

数组的形式参照样例。

输入格式:

输入包含多行,每行包含一个整数N。0≤N≤100

当输入行为N=0时,表示输入结束,且该行无需作任何处理。

输出格式:

对于每个输入整数N,输出一个满足要求的N阶二维数组。

每个数组占N行,每行包含N个用空格隔开的整数。

每个数组输出完毕后,输出一个空行。

输入样例:

1
2
3
4
5
0

输出样例:

1 1 2
2 1 1 2 3
2 1 2
3 2 1 1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1 1 2 3 4 5
2 1 2 3 4
3 2 1 2 3
4 3 2 1 2
5 4 3 2 1

代码如下:(十分感谢qzjhjxj的博客_CSDN博客-领域博主提供思路与解答)

#include <stdio.h>
#include <stdlib.h>
int arr[101][101];
void Init()
{int i, j;for (i = 0; i <= 100; i++)for (j = 0; j <= 100; j++)arr[i][j] = abs(i - j) + 1;
}
int main()
{int i, j, n;Init();while (scanf("%d", &n) == 1 && n != 0){for (i = 0; i < n; i++){for (j = 0; j < n; j++)printf("%d ", arr[i][j]);printf("\n");}printf("\n");}
}

R7-5 选夫婿^_^

倾国倾城的大家闺秀潘小姐要选夫婿啦!武林中各门各派,武林外各大户人家,闻讯纷纷前来,强势围观。前来参与竞选的男生藏龙卧虎,高手云集,才子遍布,帅哥纷纭,更不乏富二代,官二代,可谓声势空前。

每个人参与竞选的帅哥除了进行一段激情洋溢的求婚演讲以外,还要报上自己姓名、身高和体重,以及个人简历。最后再进行文武选拔,最后夺魁者方能得到潘小姐的芳心。

潘小姐不爱名利,只看人,第一关就是身高和体重要合格,即必须在其要求的范围内,否则直接排除在外,不允许参加下一轮的选拔。

作为一个程序员,你没有钱也没有权,擅长的也就是编程了。潘小姐也发现了这一点,所以把首轮根据身高体重进行选拔的任务交给了你,如果完成的好,你可以直接进入下一轮选拔,你笑了。

输入格式:

潘小姐给你了所有报名男生的信息。输入数据的第一行是一个正整数N(0 < N < 1000)。然后N行数据,每行包含三部分,用空格隔开。第一部分是报名者的姓名name(长度小于20的字符串),然后是整数身高h(0 < h < 300),第三部分是整数体重w (0 < w < 200)。

最后一行是四个整数a,b,c,d.表示身高的合格范围是[a,b],体重的合格范围是[c,d](0 < a < b < 200, 0 < c < d < 300)。

输出格式:

你需要把合格的男生信息按照身高从低到高输出,格式跟输入一样,也是每行三个信息,共N行,如果身高相同则按体重从轻到重输出,如果身高相同并且体重相同则按照输入顺序依次输出,若没有合格人选则输出NO,具体格式见样例。

输入样例:

8
武大郎 70 40
西门庆 180 70
李逵 160 150
燕青 175 69
鲁智深 180 100
武松 180 75
小泉纯一狼 30 20
孙二娘 169 60
165 190 60 90

输出样例:

孙二娘 169 60
燕青 175 69
西门庆 180 70
武松 180 75

代码如下:

#include <stdio.h>
#include <string.h>
struct man
{char name[25];int h;int w;
}m[999], t;int main()
{int n, i, j, a, b, c, d, flag = 0;scanf("%d", &n);for (i = 0; i < n; i++){scanf("%s %d %d", m[i].name, &m[i].h, &m[i].w);}scanf("%d %d %d %d", &a, &b, &c, &d);for (i = 0; i < n - 1; i++)for (j = 0; j < n - i - 1; j++){if (m[j].h > m[j + 1].h){t = m[j];m[j] = m[j + 1];m[j + 1] = t;}else if (m[j].h == m[j + 1].h){if (m[j].w > m[j + 1].w){t = m[j];m[j] = m[j + 1];m[j + 1] = t;}}}for (i = 0; i < n; i++){if(m[i].h >= a && m[i].h <= b && m[i].w >= c && m[i].w <= d){printf("%s %d %d\n", m[i].name, m[i].h, m[i].w);flag = 1;}}if (flag == 0)printf("NO\n");return 0;
}

R7-6 一帮一

“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。

输入格式:

输入第一行给出正偶数N(≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。

输出格式:

每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。

输入样例:

8
0 Amy
1 Tom
1 Bill
0 Cindy
0 Maya
1 John
1 Jack
0 Linda

输出样例:

Amy Jack
Tom Linda
Bill Maya
Cindy John

代码如下:

#include <stdio.h>
#include <string.h>struct student
{int sex;char name[9];
}stu[50];int main()
{int n, i, j;scanf("%d", &n);for (i = 0; i < n; i++)scanf("%d %s", &stu[i].sex, &stu[i].name);for (i = 0; i < n; i++)for (j = n - 1; j >= i; j--){if (stu[i].sex != stu[j].sex && stu[j].sex != -1){printf("%s %s\n", stu[i].name, stu[j].name);stu[j].sex = -1;break;}}return 0;
}

R7-7 猜数字*

在下面的算式中,被乘数的 4 位数字 a、b、c、d 各不相同。

显然 a、d都不为0。

请编写程序,输入 x,若存在满足条件的算式,则按被乘数由小到大的顺序输出全部答案,否则输出“None”。

要求:程序不断输入不同的乘数 x,然后输出对应的结果,直到输入 0 为止。

输入样例

5
4
1
0

输出样例

None
2178 * 4 = 8712
None

代码如下:

#include <stdio.h>
#include <string.h>
int main()
{int n, a, b, c, d, i, sum;while (1){scanf("%d", &n);if (n == 0)break;int flag = 0;for (i = 1000; i < 10000; i++){d = i % 10;    c = i / 10 % 10;    b = i / 100 % 10;    a = i / 1000 % 10;sum = d*1000+c*100+b*10+a;if (i * n == sum){if (a != b && a != c && a != d && b != c && b != d && c != d){printf("%d * %d = %d\n", i, n, sum);flag = 1;}}}if (flag == 0)printf("None\n");}
}

R7-8 h0105. 弟弟的作业

你的弟弟刚做完了“100以内数的加减法”这部分的作业,请你帮他检查一下。每道题目(包括弟弟的答案)的格式为a+b=c或者a-b=c,其中a和b是作业中给出的,均为不超过100的非负整数;c是弟弟算出的答案,可能是不超过200的非负整数,也可能是单个字符"?",表示他不会算。

输入格式:

输入文件包含不超过100行,以文件结束符结尾。每行包含一道题目,格式保证符合上述规定,且不包含任何空白字符。输入的所有整数均不含前导0。

输出格式:

输出仅一行,包含一个非负整数,即弟弟答对的题目数量。

输入样例:

1+2=3
3-1=5
6+7=?
99-0=99

输出样例:

2

代码如下:

#include<stdio.h>
#include<string.h>
int main()
{int a, b, d, sum = 0, len;char s, c[4];while(scanf("%d%c%d=%s", &a, &s, &b, c) != EOF){len = strlen(c);if(c[0] != '?'){ if(len == 1)d = c[0]-'0';if(len == 2)d = (c[0]-'0')*10 + c[1]-'0';if(len == 3)d = (c[0]-'0')*100 + (c[1]-'0')*10 + c[2]-'0';if(s == '+'){if(a+b == d)sum++;}if(s == '-'){if(a-b == d)sum++;}}}printf("%d\n",sum);return 0;
}

R7-9 一维数组最大值和最小值交换

找出含有10个元素一维数组中的最大值和最小值,并互换这两个数的位置。

输入格式:

在一行中输入10个整数,数据之间只能用1个空格间隔。

输出格式:

在一行中按照“max=最大值,min=最小值”的格式输出结果,最大值和最小值均原样输出,没有列宽控制。
在下一行中输出交换完最大值和最小值的一维数组,每个数据输出占5列。

输入样例:

6 5 1 2 3 4 8 9 7 5

输出样例:

max=9,min=16    5    9    2    3    4    8    1    7    5

代码如下:

#include <stdio.h>
#include <string.h>
int main()
{int i, t, m, n, a[99], max = -99, min = 99;for (i = 0; i < 10; i++){scanf("%d", &a[i]);}for (i = 0; i < 10; i++){if (max < a[i]){max = a[i];m = i;}if (min > a[i]){min = a[i];n = i;}}t = a[m]; a[m] = a[n]; a[n] = t;printf("max=%d,min=%d\n", max, min);for (i = 0; i < 10; i++)printf("%5d", a[i]);return 0;
}

R7-10 打印九九口诀表

下面是一个完整的下三角九九口诀表:

1*1=1
1*2=2   2*2=4
1*3=3   2*3=6   3*3=9
1*4=4   2*4=8   3*4=12  4*4=16
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

本题要求对任意给定的一位正整数N,输出从1*1N*N的部分口诀表。

输入格式:

输入在一行中给出一个正整数N(1≤N≤9)。

输出格式:

输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:

4

输出样例:

1*1=1
1*2=2   2*2=4
1*3=3   2*3=6   3*3=9
1*4=4   2*4=8   3*4=12  4*4=16  

代码如下:

#include <stdio.h>
#include <string.h>
int main()
{int n, i, j;scanf("%d", &n);for (i = 1; i <= n; i++){for (j = 1; j <= i; j++){printf("%d*%d=%-4d",j, i, i*j);}printf("\n");}return 0;
}

R7-11 乒乓球赛轮次

校工会正计划举行一场全校教职员工的乒乓球赛。在每一轮比赛中,参赛者都是两两比赛,输者淘汰,赢者将进入下一轮。比赛一直进行到只剩下一个人为止,这个人就是冠军。在每一轮比赛中,如果比赛人数不是偶数,那么将随机选择一个参赛者自动晋级到下一轮比赛中,而其他人则还是捉对厮杀。主办方想知道产生冠军总共需要安排多少轮比赛?

输入格式:

输入数据首先包含一个整数T,表示测试实例的个数,然后是T行测试数据。每行包括1个正整数n(1<=n<=10^9),代表参赛的总人数。这里,10^9表示10的9次方。

输出格式:

对于每个测试,在一行上输出比赛所需要的总轮数。

输入样例:

4
8
777
15
100

输出样例:

3
10
4
7

代码如下:

#include <stdio.h>
#include <string.h>
int func(int n)
{int count = 0, a = 2;while (n != 1){if (n % 2 == 0){n /= 2;count++;}else{n = (n - 1) / 2;n += 1;count++;}}return count;
}int main()
{int n, m;scanf("%d", &n);while (n--){scanf("%d", &m);printf("%d\n", func(m));}return 0;
}

R7-12 有理数加法

本题要求编写程序,计算两个有理数的和。

输入格式:

输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

输出格式:

在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

输入样例1:

1/3 1/6

输出样例1:

1/2

输入样例2:

4/3 2/3

输出样例2:

2

代码如下:

#include <stdio.h>
#include <string.h>
int gcd(int m, int n)
{int t;while (n){t = m % n;m = n;  n = t;}return m;
}int main()
{int x1, y1, x2, y2, i, a, b;scanf("%d/%d", &x1, &y1);scanf("%d/%d", &x2, &y2);a = x1 * y2 + x2 * y1;b = y1 * y2;if (a % b == 0)printf("%d", a / b);else{i = gcd(a, b);a /= i;b /= i;printf("%d/%d", a, b);}return 0;
}

R7-13 万万没想到之还是没想到

大家好,我不是王大锤,万万没想到转眼已经在公司工作了50年,在临终前我再次见到了上帝,上帝又带来了问题,让我计算1到n的平方和,如n=3,则平方和为1^2+2^2+3^2=14。如果我能解决这个问题,用不了多久,我就能升值加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰,呵呵,想想还有点小激动(丫的,还有完没完)。聪明的ACMer,你能不能帮我计算出这是个数的和呢?

输入格式:

第一行输入一个n,n小于45

输出格式:

输出平方和,每个和占一行。

输入样例:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

14

代码如下:(注意while(scanf("%d",&n) != EOF)要的是“一组”数据)

#include <stdio.h>
#include <string.h>
#include <math.h>
int func(int n)
{int sum = 0;while(n){sum += pow(n, 2);n--;}return sum;
}int main()
{int n;while(scanf("%d",&n) != EOF){printf("%d\n", func(n));}return 0;
}

R7-14 到底是不是太胖了

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。

输入格式:

输入第一行给出一个正整数N(≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W ≤ 300;单位:市斤),其间以空格分隔。

输出格式:

为每个人输出一行结论:如果是完美身材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!

输入样例:

3
169 136
150 81
178 155

输出样例:

You are wan mei!
You are tai shou le!
You are tai pang le!

代码如下: 

#include<stdio.h>
#include<math.h>
int main()
{int N, i, H, W, z;scanf("%d",&N);for(i = 1; i <= N; i++){scanf("%d%d",&H,&W);z = (H-100)*1.8;if(fabs(z-W) < (z*0.1))printf("You are wan mei!\n");else if(z > W)printf("You are tai shou le!\n");else printf("You are tai pang le!\n");}}

【PTA】【C语言】复盘练习——编程题相关推荐

  1. 分析编程题c语言,二级C语言部分上机编程题详细分析

    <二级C语言部分上机编程题详细分析>由会员分享,可在线阅读,更多相关<二级C语言部分上机编程题详细分析(6页珍藏版)>请在人人文库网上搜索. 1.二级C语言部分上机编程题详细分 ...

  2. c语言编程题库this is a c program,C语言末复习题编程题部.doc

    C语言末复习题编程题部.doc 编程题目 1.在考生目录下,要求程序 PROG1.C 的功能是 按下面公式的前 1000 项,求的近似值 2 2 4 4 6 6 8 8 2n 2n * * * * * ...

  3. c语言第一次作业程序题pta,c语言第一次作业程序题pta

    c语言第一次作业程序题pta 5-1 统计学生平均成绩与及格人数 (15 分)本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于 60 分)的人数.题目保证输入与输出均在整型范围内.输入格 ...

  4. MOOC 苏小红C语言 第四周编程题

    点我查看MOOC苏小红C语言程序设计精髓所有编程题 目录 1.检测用户错误输入(4分) 2.闰年判断(6分) 3.程序改错v1.0(7分) 4.字符类型判断(4分) 5.快递费用计算(7分) 6.数位 ...

  5. 大一下c语言期末考试编程题,大一上期末C语言编程题

    大一上期末C语言编程题 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 用公式 π/4 = 1-1/3+1/5-1/7--,编程序 ...

  6. 全国计算机二级编程题100道,计算机二级C语言100道编程题

    国家计算机二级100道编程题 #include #include int fun(int score[], int m, int below[]) { int i,k=0; float av=0.0; ...

  7. 翁恺-C语言3.0编程题

    第二周的课程学完了,但是习题网站已关闭了,在第三周课程中 PAT解释中有三道编程相关的题目 交作业啦!坚持go  go  go 注:int型    printf和scanf中为%d, double型  ...

  8. C 语言解 常见编程题

    目录 文章目录 目录 常见编程题各解法 0 交换值 1 累计和 2 Fibonacci 数列 ① 第N项 / 前N项 ② 前N项和 3 水仙花数 4 最大公约数与最小公倍数 5 完数 6 N的阶乘 ① ...

  9. PTA浙大版《C语言程序设计》编程题,练习2-1到习题2-6答案

    个人建议 初学者还是把格式规范起来,自己读起来既方便又美观 PTA对结果的格式要求很严格,答题的时候注意题目要求 练习2-1 Programming in C is fun! (5 分) 本题要求编写 ...

最新文章

  1. 深度学习:知识回收(Lecture3+4 PLA+Decision Tree)
  2. 初始化方法-使用参数设置属性初始值
  3. phpcms2008常用函数
  4. seata实现分布式事务解决方案
  5. fso封装类可以用仿dos命令操作文件
  6. 数据库系统由计算机硬件软件,集美大学计算机工程学院数据库软件04B卷答案.doc...
  7. python 3d重建_三维人脸重建(一)——Python读取obj文件
  8. NHK SHV 的 22.2 声道音频系统
  9. 《Ray Tracing in One Weekend》——Chapter 5: Surface normals and multiple objects
  10. 沧小海基于xilinx srio核的学习笔记之第三章 xilinx srio核介绍(二)HELLO格式和流控
  11. B2C电商项目(第八天、用户认证、单点登录、Oauth2认证、项目认证开发、认证服务对接网关、登录页、SpringSecurity 权限控制)
  12. java制作闪星星,原生js实现星星闪烁效果
  13. 设置Mathtype的粗斜体
  14. 最彻底的玩客云绝育方法-避免持续读写损伤硬盘和资料
  15. body 没有被撑开_div层为什么没有被自动撑开
  16. ST7703 LCM显示屏调试--基于MT6765
  17. 1 根文件系统 简单来说,(根文件系统)
  18. 【文献调研】三相DLMP的motivation调研
  19. Vert.x(vertx) Web开发-路由
  20. graphql 嵌套查询_了解GraphQL中的查询

热门文章

  1. python基础教程Day04
  2. 基于JAVA房屋租赁系统计算机毕业设计源码+系统+lw文档+部署
  3. 最大公共字符串,最大公共子序列,编辑距离,myers等算法
  4. 入门C语言排序n个数
  5. 157 亿美元!Salesforce收购Tableau,全球最大CRM巨头与大数据平台在一起了!
  6. html中背景固定,css背景固定样式background-attachment属性介绍
  7. Mysql 备份工具XtraBackup全量备份
  8. Linux内核模块it87出错
  9. 晓说2017-定期持续更新
  10. 十大算法展辉煌历史,十大问题引锦绣前程