XJTU_ 西安交通大学2020大学计算机作业-第八周

XJTU_ 西安交通大学2020大学计算机作业-第八周

注:所有题所有用例均已通过。

文章没上传到github,反正没人点星星:https://github.com/nobodyXX/XJTU_C_homework/blob/main/week7,如果这篇文章带给你了帮助或者灵感,欢迎给我点个星星,谢谢!!!

第一题

求n个数的最大公约数。2<=n<50

输入:n个正整数,以0作为数的结束。用空格隔开。

输出:最大公约数和这n个数,用一个空格隔开。

样例:

210 54 24 0

6 210 54 24

注:输入中,输入的数的个数是不确定的,不超过50,不小于2,最后的0是结束标志。

输出中,第1个数是它们的最大公约数,后面是输入的n个数,中间用一个空格隔开。

样例输入:
4928 4160 6144 0
样例输出:
64 4928 4160 6144

int main() {//从今天开始写注释int a[51] = { 2147483646 }, n = 1;for (; a[n - 1] != 0; n++) {scanf("%d", &a[n]);}//n-2是输入的个数for (int i = a[1], b = 0; b != n - 2; i--) {b = 0;for (int c = 1; c <= n - 2; c++) {(a[c] % i == 0) ? b++ : 0;}(b == n - 2) ? a[0] = i : 0;}for (int i = 0; i <= n - 2; i++) (i == 0) ? printf("%d", a[i]) : printf(" %d", a[i]);return 0;
}

第二题

求n个数的最小公倍数,2<=n<10。

输入:n个正整数,以0作为数的结束。用空格隔开。

输出:最小公倍数和这n个数,用一个空格隔开。

样例:

210 54 24 0

7560 210 54 24

注:输入中,输入的数的个数是不确定的,不超过10,不小于2,最后的0是结束标志。

输出中,第1个数是它们的最小公倍数,后面是输入的n个数,中间用一个空格隔开。

样例输入:
10 4 8 6 0
样例输出:
120 10 4 8 6

int main() {//从今天开始写注释int a[11] = { -1 }, n = 1;for (; a[n - 1] != 0; n++) {scanf("%d", &a[n]);(a[0] > a[n - 1]) ? 0 : (a[0] = a[n - 1]);//a[0]是数列最大值;第二个括号不加作业会报错,VS不会}//n-2是输入的个数for (int i = a[0], b = 0; b != n - 2; i++) {b = 0;for (int c = 1; c <= n - 2; c++) {(i % a[c] == 0) ? b++ : 0;}(b == n - 2) ? a[0] = i : 0;}for (int i = 0; i <= n - 2; i++) (i == 0) ? printf("%d", a[i]) : printf(" %d", a[i]);return 0;
}

第三题

输入6个整数,用空格分隔。找出这6个整数中的所有素数,并对这些素数进行从小到大排序。若未找到素数,输出“NULL”。

样例输入:
5 6 7 8 9 100
样例输出:
5 7

int main() {int a[6], b[6] = {0}, d = 0;for (int i = 0; i <= 5; i++) scanf("%d", &a[i]);for (int i = 0, c = 0; i <= 5; i++, a[c] = 0) {//从小到大哦排序for (int d = 0; d <= 5; d++) {(a[d] >= b[5 - i]) ? b[5 - i] = a[d], c = d : 0;}}for (int i = 0; i <= 5; i++) {for (int c = 2; c <= b[i]/ 2 +1; c++) {if (b[i] % c == 0) break;(c == b[i] / 2 + 1) ? ((d == 0) ? printf("%d", b[i]), d = d +1 : printf(" %d", b[i])) : 0;}}if (d == 0) printf("NULL");return 0;
}

第四题

编程,将一个大于4的正整数分解为连续的正整数之和,请显示全部分别结果。

样例输入:
6
样例输出:
6=1+2+3

注:
输入:55
错误输出:
55=27+28
55=9+10+11+12+13
55=1+2+3+4+5+6+7+8+9+10
正确输出:
55=1+2+3+4+5+6+7+8+9+10
55=9+10+11+12+13
55=27+28

int main(){//这个不太行int a;scanf("%d",&a);for (int n=2,m=0; n<=a/n+1;n++){//n是几个数相加,m是有几种可能的组合for(int i=1; i<=a/n+1;i++){int b=(n*(i+i+n-1)/2==a)?0:-1;//判断,等差数列和for (;b>=0&&b<n;b++){//输出等式,最后不能输出换行!(b==0)?((m==0)?printf("%d=%d",a,i),m=1:printf("\n%d=%d",a,i)):printf("+%d",i+b);}}}
}
int main() {//这个ok,改一下就好int a;scanf("%d", &a);for (int n = a / 2 + 2, m = 0; n >= 2 ; n--) {//n是几个数相加,m是有几种可能的组合for (int i = 1; i <= a / n+1; i++) {int b = (n*(i + i + n - 1) / 2 == a) ? 0 : -1;//判断,等差数列和for (; b >= 0 && b < n; b++) {//输出等式,最后不能输出换行!(b == 0) ? ((m == 0) ? printf("%d=%d", a, i), m = 1 : printf("\n%d=%d", a, i)) : printf("+%d", i + b);}}}return 0;
}

第五题

输入整数n>=1,计算下式的值。
s=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)
输入:正整数
输出:实数,格式"%f\n".

样例输入:
1
样例输出:
1.000000

int main(){float a,s=0;scanf("%f",&a);for(float b=1,c=1; b<=a;b++,c=c+b) s=s+1/c;printf("%f",s);}

第六题

输入一个正整数,求出它的质因子的和。例如,12的质因子和为2+2+3=7。如果输入的是质数,直接显示0.

输入:正整数输出:质因子的求和表达式。加号和等号是英文符号。

样例输入:
16142
样例输出:
2+7+1153=1162

//方法一
//这种方法不能算太大的质数,测试用例有个很大的质数
int main() {int a[10000] = { 2 }, n, m = 0, s = 0;scanf("%d", &n);for (int c = 3, i = 1; c <= n; c = c + 2) {//找质数for (int d = 2; d <= c / 2 + 1; d++) {if (c%d != 0) (d == c / 2 + 1) ? a[i] = c, i++ : 0;else break;}}for (int i = 0, n1 = n; n1 != 1; i++) {if (n1%a[i] == 0) {m++, n1 = n1 / a[i], s = s + a[i];(a[i] == n) ? 0 : (m == 1) ? printf("%d", a[i]) : printf("+%d", a[i]), i = -1;}}(m==1)?printf("0"):printf("=%d", s);return 0;
}
//方法二
int main() {int n, s = 0;scanf("%d", &n);for (int i = 2, w = 0, b = n; n != 1; i++, w = 0) {for (int a = 2; a <= i / 2 + 1; a++) {//判断i是否为质数,是的话w=1if (i%a != 0 || i == 2)(a == i / 2 + 1) ? w = 1 : 0;else break;}if (w == 1 && n%i == 0) {if (i == b)printf("0"), n = 1;//n是质数输出0else {n = n / i, s = s + i;(n == 1) ? printf("%d=%d", i, s) : printf("%d+", i);i = 1;//从头再来,后边还要执行i++}}}return 0;
}

第七题

任何一个自然数m的立方均可写成m个连续奇数之和。例如:

1^3=1

2^3=3+5

3^3=7+9+11

4^3=13+15+17+19

编程实现:输入一自然数n,求组成n^3的n个连续奇数。

输入:一个正整数n。输出:组成n^3的连续奇数,用一个空格分隔。

样例输入:
10
样例输出:
91 93 95 97 99 101 103 105 107 109

#include<math.h>
int main(){int n;scanf("%d",&n);for(int i=1,a=pow(n,3);i<=a/n+1;i=i+2){int b=(n*(i+i+2*n-2)/2==a)?0:-1;for (;b>=0&&b<n;b++){//输出等式,最后不能输出换行!(b==0)?printf("%d",i):printf(" %d",i+2*b);}}
}

第八题

很久以前,购物还经常找回硬币。把n张1元纸币换成一分、二分和五分面值的硬币,假设每种至少一枚,问有多少种换法?n值由用户从键盘输入,换法的数量。

输入:整数n

输出:一个整数

样例输入:
2
样例输出:
1921

//方法一
int main() {int n, m = 0;scanf("%d", &n);n = n * 100;for (int a = n; a >= 1; a--) {for (int b = n / 2; b >= 1; b--) {//这个办法有点憨,咱也想不出来更好的了for (int c = n / 5; c >= 1; c--) {(a + 2 * b + 5 * c == n) ? m++ : 0;}}}printf("%d", m);return 0;
}
//方法二
int main() {//一二五分各一张,随着五分多一张,剩下的n分用一分二分有n/2+1种组合方法。int n, m = 0;scanf("%d", &n);for (n = n * 100-8; n > 0; n = n - 5) m = m + n / 2 + 1;printf("%d", m);return 0;
}

第九题

某城市最高的楼有一部电梯,该电梯依照输入楼层数的先后次序运行。电梯最初在0层。运行完一个输入序列后就停止在该楼层,不返回0层。编写程序计算电梯运行一个序列的时间。电梯每上1层需要6秒。每下1层需要4秒。如在某层停留,无论上下人多少,均停留5秒。楼层的值大于等于1,小于100 , 0在序列中表示结束序列输入。程序输入电梯运行序列,输出电梯运行时间(秒)。

样例输入:
2 1 0
样例输出:
26

int main() {int i = 1, a[100],x;for (; a[i-1] != 0; i++) scanf("%d", &a[i]);int s = s = 5 + a[1] * 6;for (int b = 2; b <= i - 2; b++) {x = (a[b] - a[b - 1] > 0) ? ((a[b] - a[b - 1]) * 6 + 5) : ((a[b - 1] - a[b]) * 4 + 5);s = s + x;}printf("%d", s);return 0;
}

第十题

叛逆期的小明什么都喜欢反着做,连看数字也是如此(负号除外),比如:小明会把1234它看成4321;把-1234看成-4321;把230看成032 (032=32);把-230看成-032(-032=-32)。现在,小明做了一些a+b和a-b的题目(a, b为整数且不含前导0),如果给你这些题目正确的答案,你能猜出小明会做得到什么答案吗?

输入:
两个整数x,y(-1000000 < = x, y < =1000000), x表示a+b的正确答案,y表示a-b的正确答案。
输入保证合法,且不需考虑a或b是小数的情况。
输出:
输出两个整数s t,之间用一个空格分开,其中s表示小明将得到的a+b答案,t表示小明将得到的a-b答案。

样例输入:
20 6
样例输出:
38 24

int main() {int x,y,a,b,a1,b1;scanf("%d %d", &x, &y);a = (x + y) / 2, b = (x - y) / 2;a1 = (a > -10) ? a % 10 : -1 * a % 10, b1 = (b > -10) ? b % 10 : -1 * b % 10;//写在for里也行,不易阅读for (a = a / 10, b = b / 10; a != 0 || b != 0; a = a / 10, b = b / 10) {(a == 0) ? 0 : (a1 = a1 * 10 + a % 10);//不加括号会报错,VS不报错(b == 0) ? 0 : (b1 = b1 * 10 + b % 10);}printf("%d %d", a1 + b1, a1 - b1);return 0;
}

第十一题

求一组数中的最大值,然后统计该最大值在这组数中出现的次数。

输入:元素个数n和n个整数。n<200。

输出:最大值及出现的次数。数据间以一个逗号隔开。

样例输入:
1 2
样例输出:
2,1

int main() {int a[201], b, i =0, n = 0;char ch = ' ';for (; ch != '\n'; i++) scanf("%d%c", &a[i], &ch);//!!b = a[1];for (int c = 1; c < i; c++) {(b < a[c]) ? b = a[c], n = 1 : ((b == a[c]) ? n++ : 0);}printf("%d,%d", b, n);return 0;
}

第十二题

输入3个正整数,求最大公约数和最小公倍数。

输入:3个正整数
输出:最大公约数和最小公倍数,空格分隔

样例输入:
2 5 8
样例输出:
1 40

int main() {int a, b, c, x = 1, y;scanf("%d %d %d", &a, &b, &c);for (int i = 1; i <= a; i++) {x = (a%i == 0 && b%i == 0 && c%i == 0) ? i : x;//有一个%写成了&,试了20分钟}for (int i = a; i%a != 0 || i % b != 0 || i % c != 0; i++, y = i);printf("%d %d", x, y);return 0;
}

第十三题

从键盘输入一个正整数(>1),然后将该整数分解为1和各个质因子的相乘,如果输入的整数本身就是质数,则应分解为1和该数本身相乘。

样例输入:
18
样例输出:
123*3

int week8_q13() {//用第六题的代码改一改就好int n, s = 0;scanf("%d", &n);for (int i = 2, w = 0, b = n; n != 1; i++, w = 0) {for (int a = 2; a <= i / 2 + 1; a++) {//判断i是否为质数,是的话w=1if (i%a != 0 || i == 2)(a == i / 2 + 1) ? w = 1 : 0;else break;}if (w == 1 && n%i == 0) {if (i == b)printf("1*%d",n), n = 1;//n是质数输出0else {(n == b) ? printf("1*%d", i) : printf("*%d", i);n = n / i, s = s + i;i = 1;//从头再来,后边还要执行i++}}}return 0;
}

第十四题

有一分数序列如下: 2/1, 3/2, 5/3, 8/5, 13/8, 21/13, … 即后一项的分母为前一项的分子,后项的分子为前一项分子与分母之和,求其前n项之和。
输入:项数n(整数)
输出:前n项之和(实数,注:保留4位小数)

样例输入:
6
样例输出:
10.0071

int main() {float a = 2, b = 1, s = 0, n;scanf("%f", &n);for (int i = 0; i<n; i++) {s = s + a / b;a = a + b;b = a - b;}printf("%.4f",s);return 0;
}

第十五题

输入公元年份和月份,输出该月份的天数。
输入:年,月(逗号分隔)
输出:天数

样例输入:
2018,8
样例输出:
31

int main() {int a, b, l[13] = { 0, 31,28,31,30,31,30,31,31,30,31,30,31 };scanf("%d,%d", &a, &b);(a % 4 == 0 && a % 100 != 0 && b == 2) ? printf("29") : printf("%d", l[b]);return 0;
}

都看到这儿了,点个星星呗https://github.com/nobodyXX/XJTU_C_homework/blob/main/week7

XJTU_ 西安交通大学2020大学计算机作业-第八周相关推荐

  1. XJTU_ 西安交通大学2020大学计算机作业-第六周

    XJTU_ 西安交通大学2020大学计算机作业-第六周 XJTU_ 西安交通大学2020大学计算机作业-第六周 注:所有return 0;均可删去. 所有题均已通过编译. 第一题 请输入一个8位的十进 ...

  2. XJTU_ 西安交通大学2020大学计算机作业-第七周

    XJTU_ 西安交通大学2020大学计算机作业-第七周 XJTU_ 西安交通大学2020大学计算机作业-第七周 注:所有题均已通过所有用例. 文章已上传到github:https://github.c ...

  3. XJTU_ 西安交通大学2020大学计算机作业-第十二周

    XJTU_ 西安交通大学2020大学计算机作业-第十二周 XJTU_ 西安交通大学2020大学计算机作业-第十二周 注:所有题所有用例均已通过. 俺又更新了,还是求点星星

  4. XJTU_ 西安交通大学2020大学计算机作业-第九周

    XJTU_ 西安交通大学2020大学计算机作业-第九周 XJTU_ 西安交通大学2020大学计算机作业-第九周 注:所有题所有用例均已通过. 俺又更新了,还是求点星星

  5. 西安交大计算机考研分数线2020院线,西安交通大学2020研究生复试分数线预计4月中旬左右公布...

    中公浙江人事考试网·中公浙江考研网温馨提醒您关注2020浙江考研分数线:[西安交通大学2020研究生复试分数线预计4月中旬左右公布] 2020浙江考研交流2群:310942342 近期,西安交通大学研 ...

  6. 西安交大计算机考研分数线2020院线,西安交通大学2020考研复试分数线已公布

    2020西安交通大学考研复试分数线已公布!点击查看>>34所自划线院校2020考研复试分数线.2020考研国家线已公布,当前2020考研考生需全力准备考研复试/调剂工作>>考研 ...

  7. 家用计算机手抄报,大学计算机作业手抄报

    与<大学计算机作业手抄报>相关的范文 自动化系暑期社会实践范文 xx年7月26日----7月31日,厦门大学自动化系暑期实践小组一行7人,前往厦门同安区莲花镇后埔村可口可乐希望小学开展暑期 ...

  8. 计算机作业实验环境写什么,(大学计算机作业)实验报告模板.doc

    (大学计算机作业)实验报告模板 西北师范大学<大学计算机基础>实验报告 学院专业班级学号周次第一周日期2011年 月 日- 年 月 日实验教室10E203机号26题目Windows XP的 ...

  9. 双非计算机专业考研西安交通大学,2020双非一战计算机专硕初试403经验贴

    本帖最后由 Johnsonw 于 2020-7-3 10:59 编辑 先自我介绍一下,我初试403分,专业课134分,本科是双非,无项目经历,无科研经历,一战西安交通大学,最终成功上岸. 初试:参考书 ...

最新文章

  1. 如何使用命令行中的“message”和“description”进行更改? [重复]
  2. 机器人或抢走2000万人“饭碗”
  3. gui linux 桌面应用,吃掉Linux开发者,WSL支持GUI应用
  4. mybatis foreach 错误_MyBatis高级结果映射之一对一映射
  5. 南通儒通软件上机面试题
  6. 洛谷 - P1886 滑动窗口(单调队列/线段树)
  7. 集线器(Hub)、交换机(Switch)与路由器(Router)之间的区别和联系
  8. hadoop重命名文件_Hadoop -- 3. 从Flume到HDFS
  9. C#人脸识别入门篇--提取人脸特征值及人脸识别
  10. linux下tmux
  11. JavaWeb将图片显示在浏览器中
  12. RabbitMQ消费者流量控制策略总结
  13. c串口一直读到缓存数据_STM32CubeMX之串口不定长数据接收(接收中断+空闲中断)...
  14. npm安装项目所有依赖包
  15. 佳博打印机打印条码和二维码的方法
  16. 串口 通讯 顶尖电子秤_串口通讯协议_电子秤的串口通讯协议解析 - 全文
  17. Mybatis查询之list作为参数查询
  18. matlab计算正弦信号基波,Matlab入门篇——正弦信号、实指数信号和复指数信号的仿真.ppt...
  19. Android签名生成和Android签名格式转换工具(MD5和SHA1签名)
  20. 数字证书认证机构(摘录自wiki百科)

热门文章

  1. c语言controlled变量的作用,Gate-controlled A-C switch
  2. 揭秘5G,带你了解通信发展
  3. 看财报:新东方步入中老年
  4. 陆奇讲解百度生态全图,百度能否担起“中国第一人工智能独角兽”的盛名
  5. 可视化例子(11)——ECharts line3D制作三维折线图
  6. Vijos 雷曼兔(csapc)
  7. 看看谁获得了CodeM编程大赛的10万奖金
  8. Django的项目---管理员模块(中)_08【可读性更好版本】
  9. 【51单片机】键控流水灯
  10. 【】 Intel(R) 800 Series序列网卡 ice 驱动安装