文章目录

  • 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises13
  • P701
  • P718
  • P739
  • P831
  • P740
  • P741

20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises13

P701


/*编写一程序P701.C实现以下功能从键盘读入10个数存放在一个数组中,要求用户由小到大输入。如果发现读入的某个数不是由小到大,则该数输入无效,继续读入后面的输入数据。再将这10个数依次输出到屏幕上,要求每个数的输出宽度为5、不足5位的在其左边补上空格、数与数之间使用逗号(,)分隔。然后输入一个数,要求找出该数是数组中第几个(序号从1开始计算)元素的值,如果该数不在数组中,则输出“Not Find!”。编程可用素材:printf("please input 10 numbers: ");printf("input the num to look for: ");printf("\nthe position of … is …\n"…);printf("\nNot Find!\n");程序的运行效果应类似地如图1、图2和图3所示,图1中的1 2 9 10 20 30 80 90 100 101和80、图2中的1 2 9 10 20 30 80 90 100 101和70、图3中的1 2 9 10 20 30 80 90 72 68 100 101和100是从键盘输入的内容。please input 10 numbers: 1 2 9 10 20 30 80 90 100 1011,    2,    9,   10,   20,   30,   80,   90,  100,  101
input the num to look for: 80the position of 80 is 7
图1 程序运行效果示例01please input 10 numbers: 1 2 9 10 20 30 80 90 100 1011,    2,    9,   10,   20,   30,   80,   90,  100,  101
input the num to look for: 70Not Find!
图2 程序运行效果示例02please input 10 numbers: 1 2 9 10 20 30 80 90 72 68 100 1011,    2,    9,   10,   20,   30,   80,   90,  100,  101
input the num to look for: 100the position of 100 is 9
图3 程序运行效果示例03 */#include <stdio.h>
#define N 10int main(void)
{int arr[N];int data;int i;int count;// 读入10个数存放在一个数组printf("please input 10 numbers: ");for (i = 0; i < N; i++){scanf("%d", &arr[i]);// 某个数不是由小到大,则该数输入无效,继续读入后面的输入数据if(i >= 1){// 在第2个数开始,都要和之前的数比较,如果小就丢弃重新输入while( arr[i] < arr[i-1]){scanf("%d", &arr[i]);}}}// 输出 输出宽度为5、不足5位的在其左边补上空格、数与数之间使用逗号(,)分隔for (i = 0; i < N - 1; i++){printf("%5d,", arr[i]);}printf("%5d\n", arr[N - 1]);    // 输入一个数printf("\ninput the num to look for: ");scanf("%d", &data);// 要求找出该数是数组中第几个(序号从1开始计算)元素的值count = 0;for(i = 0; i < N; i++){if (data == arr[i]){count = i + 1;break;}}//~~if(count==0 || count ==N)~~ // 这里,测试数据中,刚好是最后一个数时,就会出错,有一个学生提出了,见评论区。if(count==0){printf("\nNot Find!\n");    }else{printf("\nthe position of %d is %d\n", data, count);}return 0;
}

P718

/*编写一程序P718.C实现以下功能有一递推数列,满足f(0)=0,f(1)=1,f(2)=2,  f(n+1)=2f(n)+f(n-1)f(n-2) (n>=2), 编写程序求f(n)的值(n由键盘输入,13>=n>=2)。编程可用素材:printf("Input n (13>=n>=2): ");printf("\nf(…)=…\n"…);程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。Input n (13>=n>=2): 10f(10)=1819456
图1 程序运行效果示例
*/#include <stdio.h>double f(int n);int main(void)
{int n;double result;printf("Input n (13>=n>=2): ");scanf("%d", &n);result = f(n);printf("\nf(%d)=%.0lf\n", n, result);return 0;
}/* 直接使用递归方式,实现递推数列,满足f(0)=0,f(1)=1,f(2)=2,  f(n+1)=2f(n)+f(n-1)f(n-2) (n>=2)注意,这里的跨度:n,n-1,n-2,n-3四级递推式*/
double f(int n)
{if(n==0)return 0;else if(n==1)return 1;else if(n==2)return 2;else// f(n+1)=2f(n)+f(n-1)f(n-2) (n>=2)return 2.0 * f(n - 1) + f(n - 2) * f(n - 3);
}

P739

/*编写一程序P739.C实现以下功能从键盘输入年月日日期,计算出该日期是公元纪年以来的第几天。注:判断年份是否为闰年的方法——为400的倍数为闰年,如2000年;若非100的倍数,而是4的倍数,为闰年,如1996年。编程可用素材:printf("input a data(year-month-day):");printf("\nThe result is ....\n"...);程序的运行效果应类似地如图1所示,图1中的2009-10-1是从键盘输入的内容。
input a data(year-mont-day):2009-10-1
The result is 733681.
图1 程序运行效果示例思路:1. 整年,直接使用365或是366天,注意闫年2. 当年,计月份,具体月份具体计算,注意二月,所以上面的年份,只能计到前一年3. 当天,是计天数,该月的第几天,所以,上面的月份,只能计到前一个月
*/#include <stdio.h>int isLeapYear(int year);int main(void)
{int year, month, day;int totalDays = 0;int i;// 输入的year要>=1才是有效的,因为公元元年即公元1年printf("input a data(year-month-day):");scanf("%d-%d-%d", &year, &month, &day);// 求之前年的所有天 公元纪年以来的第几天// 常识://      公元元年采用是公元纪年法,它以耶稣诞生之年作为纪年的开始,即公元1年。//      之前的年份一般称为公元前。在中国这一年正好是西汉平帝元始元年。// 注意,公元元年,即第0年,不能计算,只能从第1年开始,才可以计前一年的天数for (i = 1; i < year; i++){if (isLeapYear(i)){totalDays += 366;}else{totalDays += 365;}}// 当年到当日的天数switch (month - 1){case 11:totalDays += 30;case 10:totalDays += 31;case 9:totalDays += 30;case 8:totalDays += 31;case 7:totalDays += 31;case 6:totalDays += 30;case 5:totalDays += 31;case 4:totalDays += 30;case 3:totalDays += 31;case 2:if (isLeapYear(year)){totalDays += 29;}else{totalDays += 28;}case 1:totalDays += 31;default:break;}// 加上天totalDays += day;printf("\nThe result is %d\n", totalDays);return 0;
}int isLeapYear(int year)
{return year % (year % 100 ? 4 : 400) ? 0 : 1;
}

P831

/*编写一程序P831.C实现以下功能某班有40位同学参加考试,成绩(整数)从键盘输入,求全班最高分、最低分以及平均分,并统计该班同学的考试及格率。编程可用素材:printf("请输入40位同学的成绩:");printf("\n最高分:…最低分:…平均分:…及格率:);程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。请输入40位同学的成绩:99 81 71 81 77 94 100 67 66 44 75 49 47 45 65 74 73 74 63
69 72 77 65 79 84 73 46 62 68 42 75 62 65 66 62 69 44 62 84 77最高分:100
最低分:42
平均分:68.7
及格率:83%
图1 程序运行效果示例
*/#include <stdio.h>#define N 40/* 自行完成四舍五入的取整运算函数*/
int double2Int(double a);int main(void)
{int score[N]; // 40位同学参加考试,成绩(整数)int i;// 最高分 最低分 平均分 考试及格率int max, min, beyond60 = 0;double total, avg, rate;printf("请输入40位同学的成绩:");for (i = 0; i < N; i++){scanf("%d", &score[i]);}// 第一个人的成绩,初始化各种数据max = min = score[0];total = score[0];if (score[0] > 60){beyond60++;}// 从第二个人开始处理for (i = 1; i < N; i++){total += score[i];if (max < score[i]){max = score[i];}if (min > score[i]){min = score[i];}if (score[i] >= 60){beyond60++;}}avg = total / N;                // 平均分rate = (double)beyond60 / N;    // 及格率// 求全班最高分、最低分以及平均分,并统计该班同学的考试及格率// 输出// 最高分:100// 最低分:42// 平均分:68.7// 及格率:83%printf("\n最高分:%d\n最低分:%d\n平均分:%.1lf\n及格率:%d%%", max, min, avg, double2Int(rate * 100));return 0;
}/* 四舍五入完成*/
int double2Int(double a)
{int tmp;// 取小数点后的第一位来判断四还是五tmp = (int)(a * 10) % 10;if(tmp>=5){return (int)(a) + 1;}else{return (int)(a);}
}/*
关于C语言的取整的讨论1. int i = 2.5; 或 i = (int) 2.5;    这种方法采用的是舍去小数部分2. 使用floor函数。floor(x)返回的是x的整数部分。如:    floor(2.5) = 2    floor(-2.5) = -3    3. 使用ceil函数。ceil(x)返回的是不大于x的最小整数。如:    ceil(2.5) = 2    ceil(-2.5) = -2    floor和ceil对于正数没有区别,但是对于负数结果不同。floor()是向负无穷大舍入,floor(-2.5) = -3   【即,向下,地板取整】ceil()是向正无穷大舍入,ceil(-2.5) = -2     【即,向上,天花板取整】4. round(x)返回x的四舍五入整数值本题,应该四舍五入取整更符合常理*/

P740

/*编写一程序P740.C实现以下功能公鸡每只5元,母鸡每只3元,小鸡每3只1元,用M元钱买N只鸡,问公鸡、母鸡、小鸡各几只。编程可用素材:printf("Input the money: ");printf("Input the number: ");printf("\n  cock   hen chick\n");程序的运行效果应类似地如图1和图2所示,图中的红色部分是从键盘输入的内容。Input the money: 100
Input the number: 100cock   hen chick0    25    754    18    788    11    8112     4    84
图1 程序运行效果示例Input the money: 80
Input the number: 90cock   hen chick1    17    725    10    759     3    78
图2 程序运行效果示例
*/#include <stdio.h>void printResult(int money, int count);     // 声明函数int main(void)
{int money, count;printf("Input the money: ");scanf("%d", &money);printf("Input the number: ");scanf("%d", &count);printf("\n  cock   hen chick\n");printResult(money, count);      // 调用函数return 0;
}/* 直接实现M钱C鸡的功能函数*/
void printResult(int money, int count)
{int cock, hen, chick;for (cock = 0; cock <= money / 5; cock++){for (hen = 0; hen <= money / 3; hen++){/* 要特别注意,chick可能出现负值的情况,这里的负数是没有实际意义的*/chick = count - cock - hen;if (cock * 5 + hen * 3 + (double)chick / 3.0 == money && chick >= 0){printf("%6d%6d%6d\n", cock, hen, chick);}}}
}

P741

/*编写一程序P741.C实现以下功能输入两个整数m和n,输出大于等于m(m>5)的n个素数,输出的各素数间以空格相隔。注:素数(Prime Number),亦称质数,指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。编程可用素材:printf("Input the m, n: ");printf("\nThe result:\n");程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。Input the m, n: 17, 5The result:
17 19 23 29 31
图1 程序运行效果示例
*/#include <stdio.h>
#include <math.h>int isPrime(int m);int main(void)
{int m, n;int count = 0;printf("Input the m, n: ");scanf("%d, %d", &m, &n);printf("\nThe result:\n");do{if(isPrime(m)){count++;printf("%d ", m);   // 是素数,则计数,并输出if(count == n){break;}}} while (m++);return 0;
}/* 判断是否素数只要有了约数,就一定不是素数,直接回返0,即否定算到了最后,就返回1,即肯定是素数*/
int isPrime(int m)
{int i;for (i = 2; i <= (int)sqrt(m); i++){if(m%i==0){return 0;}}return 1;
}

20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises12相关推荐

  1. 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises02

    文章目录 20201015-成信大-C语言程序设计-20201学期<C语言程序设计B>C-trainingExercises02 成信大-C语言程序设计上机作业-参考 **20201学期& ...

  2. 20201104-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises07

    文章目录 20201022-成信大-C语言程序设计-20201学期<C语言程序设计B>C-trainingExercises07 P702 P754 P112 P793 P744 2020 ...

  3. 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises29

    文章目录 20201022-成信大-C语言程序设计-20201学期<C语言程序设计B>C-trainingExercises29 程序改错与填空要求 具体要求 具体题面 D1 D2 D3 ...

  4. 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises26

    文章目录 20201022-成信大-C语言程序设计-20201学期<C语言程序设计B>C-trainingExercises26 P320 P321 P324 P325 20201022- ...

  5. 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises03

    文章目录 20201015-成信大-C语言程序设计-20201学期<C语言程序设计B>C-trainingExercises03 P122 P708 P133 P135 P721 P735 ...

  6. 成信大2020C语言编程114,南京信息工程大学2020考研大纲822CC语言程序设计

    <南京信息工程大学2020考研大纲822CC语言程序设计>由会员分享,可在线阅读,更多相关<南京信息工程大学2020考研大纲822CC语言程序设计(8页珍藏版)>请在人人文库网 ...

  7. 成信大807程序综合设计2015-2022历年真题及答案【持续更新中】

    快速导航 2015年 一.填空题 二.程序改错题 三.分析程序题 四.算法设计及编程题 2016年 一.单项选择题 二.判断题 三.程序分析题 四.程序设计题 2017年 一.单项选择题 二.判断题 ...

  8. 成信大807常用函数复习

    快临近考试了,这里在带领大家复习一遍常用的函数库函数,考场上可以直接调用省去一大堆的推演代码时间 目录 #include//以下函数包含使用头文件 #include//以下函数包含使用头文件 真题函数 ...

  9. 成信大C语言D1,网络空间安全学院成功举办C语言程序设计大赛

    4月24日晚,在学院蔺冰老师的细心指导下,由网络空间安全学院科技实践部主办,生活纪检部与外联部协办的C语言程序设计大赛在第二实验楼6607教室举行. 随着主持人宣布--比赛正式开始,现场的工作人员以最 ...

  10. 成信大c语言答案P239.C,2011秋季江苏省计算机二级C语言试题与答案.doc

    2011秋季江苏省计算机二级C语言试题与答案 [本试卷的欠妥处]经过对2011秋江苏省C语言试卷仔细阅读和上机调试,本试卷卷面错误比2011春有较大改进.但还存在如下三处不足之处或命题欠妥处,有待改进 ...

最新文章

  1. python 搭建ftp服务器
  2. 【深度学习】Dropout、正反向传播、计算图等的介绍和实现(Pytorch)
  3. InstallShield 2012 Spring评估试用(1): 支持Windows 8和Windows Server 2012操作系统
  4. Trial SCN WebIDE版本下载
  5. 利用DBMS_ROWID.ROWID_CREATE来找出事务等待的行数据
  6. Windows上使用Netbeans进行Linux C开发
  7. Spring Cloud(8):Sleuth和Zipkin的使用
  8. ESP8266 MQTT
  9. 结构体 内存对齐 keil STM32
  10. 三星 smarttv android,三星SmartView
  11. 用粉红噪声煲机_虾米歌单 | 【科学煲耳机】(白噪音 粉红噪音 无损) - 虾米音乐...
  12. c语言for死循环的作用,for循环死循环语句
  13. 计算机再带word打不开,电脑word文档打不开怎么办(附:4种解决办法)
  14. kinect游戏linux,两台kinect同时运行
  15. 审计一波appcms-持续更新。
  16. 如何做好一名合格的项目组长
  17. 型号不同的计算机内存条可以通用么,不同频率的内存条可以混用吗
  18. Android自带图标大全
  19. 腰椎间盘突出伴马尾神经损伤患者不适合做哪些运动?
  20. 判断输入的Email地址格式是否正确

热门文章

  1. Windows NTP 服务器配置及开启
  2. jsp余jspx的区别
  3. 黑群晖6.1.4-DS3615xs_65217安装使用教程、含下载资源、亲测有效
  4. html点击图片可以放全屏,html:点击图片放大到全屏,再次点击缩回
  5. java前后端分离解决session,解决前后端分离开发sessionId不一致问题
  6. linux软件源怎么看,Linux软件源
  7. SIP的几个主要标准协议
  8. CMD命令关闭指定PID进程
  9. pdfFactory Pro2022最新下载虚拟打印机
  10. SDRAM控制器在连续读写数据时的优化