重庆科创学院-C语言实例之90
- 格式:doc
- 大小:19.50 KB
- 文档页数:1
C语言编程案例F e i b o n i c数列古典兔子问题题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:#include "stdio.h"#include "conio.h"main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n"); /*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/}getch();}求素数问题题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
2.程序源代码:#include "stdio.h"#include "conio.h"#include "math.h"main(){int m,i,k,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){k=sqrt(m+1);for(i=2;i<=k;i++)if(m%i==0){leap=0;break;}if(leap){printf("%-4d",m);h++;if(h%10==0)printf("\n");}leap=1;}printf("\nThe total is %d",h);getch();}水仙花数题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
C语言项目案例分析C语言项目案例:学生成绩管理系统概述:学生成绩管理系统是一个用于管理学生信息和成绩的软件系统。
该系统可以实现添加、删除、修改学生信息和成绩的功能,并且可以按照学生的学号或者姓名进行查找和排序。
功能要求:1. 学生信息管理:可以添加、删除、修改学生的基本信息,包括学号、姓名、性别、年龄等。
2. 成绩管理:可以添加、删除、修改学生的各科成绩,包括语文、数学、英语等。
3. 查找功能:可以根据学生的学号或者姓名查找学生信息和成绩。
4. 排序功能:可以按照学号、总成绩等排序学生信息和成绩。
设计思路:1. 数据结构设计:采用结构体数组来存储学生信息和成绩,结构体中包含学号、姓名、性别、年龄和各科成绩等字段。
2. 功能模块划分:将学生信息管理、成绩管理、查找功能和排序功能分别实现为不同的函数模块,通过调用这些函数来完成相应的功能。
3. 用户界面设计:通过命令行界面来实现用户与系统的交互,可以通过输入数字来选择相应的功能菜单,并根据用户的输入来执行相应的功能。
代码实现:以下是一个简单的学生成绩管理系统的代码示例:#include <stdio.h>#include <string.h>// 学生结构体struct student {int id;char name[20];int age;float chinese;float math;float english;};// 添加学生信息void addStudent(struct student* stu) {printf("请输入学生的学号:");scanf("%d", &stu->id);printf("请输入学生的姓名:");scanf("%s", stu->name);printf("请输入学生的年龄:");scanf("%d", &stu->age);printf("请输入学生的语文成绩:");scanf("%f", &stu->chinese);printf("请输入学生的数学成绩:");scanf("%f", &stu->math);printf("请输入学生的英语成绩:");scanf("%f", &stu->english);}// 删除学生信息void deleteStudent(struct student* stu) { stu->id = 0;strcpy(stu->name, "");stu->age = 0;stu->chinese = 0.0;stu->math = 0.0;stu->english = 0.0;}// 修改学生信息void modifyStudent(struct student* stu) { printf("请输入学生的学号:");scanf("%d", &stu->id);printf("请输入学生的姓名:");scanf("%s", stu->name);printf("请输入学生的年龄:");scanf("%d", &stu->age);printf("请输入学生的语文成绩:"); scanf("%f", &stu->chinese);printf("请输入学生的数学成绩:"); scanf("%f", &stu->math);printf("请输入学生的英语成绩:"); scanf("%f", &stu->english);}// 查找学生信息void findStudent(struct student* stu, int id) {if (stu->id == id) {printf("学号:%d,姓名:%s,年龄:%d,语文成绩:%.1f,数学成绩:%.1f,英语成绩:%.1f\n", stu->id, stu->name, stu->age, stu->chinese, stu->math, stu->english);}}// 排序学生信息void sortStudents(struct student* stu, int count) {// 冒泡排序for (int i = 0; i < count - 1; i++) {for (int j = 0; j < count - i - 1; j++) {if (stu[j].id > stu[j + 1].id) {struct student temp = stu[j];stu[j] = stu[j + 1];stu[j + 1] = temp;}}}}int main() {int choice;int count = 0;struct student students[100];do {printf("学生成绩管理系统\n");printf("1. 添加学生信息\n");printf("2. 删除学生信息\n");printf("3. 修改学生信息\n");printf("4. 查找学生信息\n");printf("5. 排序学生信息\n");printf("0. 退出\n");printf("请选择操作:");scanf("%d", &choice);switch (choice) {case 1:addStudent(&students[count]);count++;break;case 2:deleteStudent(&students[count - 1]);count--;break;case 3:modifyStudent(&students[count - 1]); break;case 4: {int id;printf("请输入要查找的学生学号:"); scanf("%d", &id);for (int i = 0; i < count; i++) {findStudent(&students[i], id);}break;}case 5:sortStudents(students, count);break;case 0:break;default:printf("请输入正确的操作!\n");break;}} while (choice != 0);return 0;}总结:通过以上的案例分析,可以看出,C语言可以实现一些简单的项目,例如学生成绩管理系统。
c语言程序设计案例C语言程序设计案例。
C语言作为一种通用的高级编程语言,被广泛应用于系统软件、应用软件、驱动程序、网络软件、嵌入式系统、游戏开发等诸多领域。
在学习C语言的过程中,掌握一些实际的程序设计案例对于提高编程能力和理解语言特性非常重要。
本文将介绍一些C语言程序设计案例,帮助读者加深对C语言的理解和掌握。
案例一,计算圆的面积和周长。
```c。
#include <stdio.h>。
#define PI 3.14159。
int main()。
{。
float radius, area, perimeter;printf("请输入圆的半径,");scanf("%f", &radius);area = PI radius radius;perimeter = 2 PI radius;printf("圆的面积为,%f\n", area);printf("圆的周长为,%f\n", perimeter);return 0;}。
```。
这个案例通过输入圆的半径,计算出圆的面积和周长,展示了C语言中基本的输入输出操作和数学运算。
案例二,判断闰年。
```c。
#include <stdio.h>。
int main()。
{。
int year;printf("请输入一个年份,");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)。
{。
printf("%d年是闰年\n", year);}。
else。
{。
printf("%d年不是闰年\n", year);}。
return 0;}。
```。
这个案例通过输入一个年份,判断该年份是否是闰年,展示了C语言中条件语句的使用。
C语言程序设计例子在计算机科学和编程领域,C语言是一种广泛应用的编程语言。
它的简洁性和高效性使得它成为许多计算机程序的首选语言。
本文将介绍几个简单的C语言程序设计例子,以帮助读者更好地理解和掌握这门强大的编程语言。
1. 第一个例子:计算两个数字的和下面是一个简单的C程序,用于计算两个数字的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个数字:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个数字的和是:%d", sum);return 0;}```在这个例子中,我们使用了`printf`函数输出提示信息,并用`scanf`函数获取用户输入的两个数字。
然后,我们使用`+`运算符计算两个数字的和,并通过`printf`函数输出结果。
2. 第二个例子:计算数组元素的平均值下面是一个用C语言编写的程序,用于计算数组元素的平均值。
```c#include <stdio.h>#define SIZE 5int main() {int numbers[SIZE] = {5, 2, 8, 12, 3};int sum = 0;float average;for (int i = 0; i < SIZE; i++) {sum += numbers[i];}average = (float)sum / SIZE;printf("数组元素的平均值是:%.2f", average);return 0;}```在这个例子中,我们首先定义一个大小为5的整型数组`numbers`,并初始化数组的元素。
然后,我们使用`for`循环遍历数组,累加数组中的元素值。
C语言程序设计模块一认识 C 语言能力标准:了解 C 语言的作用;熟悉 C 程序结构;掌握 TC 集成调试环境的使用。
知识点:C语言是人和计算机交流的一种工具;C语言程序的执行过程。
1. C 语言的发展计算机语言是计算机和人交流的工具,必须遵守一定的规则,具有一定的书写格式。
C 语言就是一种计算机语言,诞生于1972 年,是由美国电话电报公司(AT&T)贝尔实验室的设计。
C 语言诞生至今已 30多年,其发展经历了ALGOL(1960 年 )—CPL(1963 年 )—B(1970 年 )—C( 1972 年)的演变过程。
2.人机交流人和计算机交流可以采用对话形式的一问一答方式,也可采用任务方式,即把需要交流的内容集中在一起,一次性完成。
前者的专业述语叫解释方式,后者叫编译方式。
用 C 语言进行人和计算机交流采用的是编译方式。
具体过程如下:编程首先人将和计算机交流的内容按要求,用 C 语言写成任务,如要计算机计算5!,则需要写出以下任务:#include<>main(){float m,k,j;k=5;m=1;for(j=1;j<=k;j++)m=m*j;上述用 C 语言表示的任务,称为程序。
所谓程序指由一系指令组成,完成某个具体功能的指令集合。
编译计算机本身是一堆零件,它只知道高低电平,对应到二进制就是“0”和“ 1”这两个符号,当然它是不认识我们用上述符号写成的程序,因此我们需要将上述程序进行转换,转换成由“0”和“ 1”的组合来表示的二进制程序,也就是机器语言程序。
我们把这样的转换称之为编译。
连接为了方便程序的编写,专业人员已经将许多常用的功能写成了固定的程序,并已进行编译,我们在编写实际应用程序时可以直接使用现成的功能程序,这些功能程序要和用户编写的程序连接起来,形成最终计算机能够执行的机器语言程序。
执行经过上述三步之后生成的机器语言程序,在Turbo C 系统中称为目标程序,把目标程序交给计算机,计算机在操作系统的支持下,就能按人的要求实现相应的功能,就是执行程序,并把执行的结果输出在输出设备上,供人来阅读,从而实现人机交流。
2022年重庆科创职业学院公共课《C语言》科目期末试卷B(有答案)一、填空题1、C语言源程序文件的后缀是;经过编译后,生成文件的后缀是;经过连接后,生成文件的后缀是2、下面程序段中循环体的执行次数是_______。
a=10;b=0;do{b+=2;a-=2+b;}while(a>=0);3、下面程序段是找出整数的所有因子。
请填空。
scanf("%d",&x);i=1;for(;_______;){if(x%i==0)printf("%3d",i);i++;}4、把int类型变量low中的低字节及变量high中的高字节放入变量s中的表达式是_______。
5、请读程序段:int x=1;printf("%d\n",~x);上面程序段的输出结果是_______。
6、若有定义语句:charc='\010';则变量c中包含的字符个数为_______。
7、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、cl='a'、c2='A',正确的scanf函数调用语句是_______,数据输入的形式应为_______。
8、在C语言中,二维数组元素在内存中的存放顺序是_______。
9、下面程序wdm的运行结果是_______。
int i,x[10]={2,3,0,3,0,2,3,2,1,3},y[4]={0};for(i=0;i<10;i++)y[x[i]]++;printf("%d\n",y[3]);10、下面程序段的运行结果是_______。
Char a[]="123456789",*p;inti=0;p=a;while(*p){if(i%2==0)*p='*';p++;i++;}puts(a);二、选择题11、C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符( )A.必须为字母B.必须为下划线C.必须为字母或下划线D.可以是字母、数字和下划线中任一种字符12、下面4个选项中,是正确的八进制数或十六进制数的选项是()。
C语言经典编程100例--实践版1绘制余弦曲线在屏幕上用显示0360度的余弦函数cos x 曲线问题分析与算法设计如果在程序中使用数组这个问题十分简单但若规定不能使用数组问题就变得不容易了关键在于余弦曲线在0360度的区间内一行中要显示两个点而对一般的显示器来说只能按行输出即输出第一行信息后只能向下一行输出不能再返回到上一行为了获得本文要求的图形就必须在一行中一次输出两个为了同时得到余弦函数cos x 图形在一行上的两个点考虑利用cos x 的左右对称性将屏幕的行方向定义为x列方向定义为y则0180度的图形与180360度的图形是左右对称的若定义图形的总宽度为62列计算出x行0180度时y点的坐标m 那么在同一行与之对称的180360度的y点的坐标就应为62-m程序中利用反余弦函数acos计算坐标 xy 的对应关系使用这种方法编出的程序短小精炼体现了一定的技巧程序说明与注释includeincludeint mainint xmfor y 1y -1y- 01 y为列方向值从1到-1步长为01m acos y 10 计算出y对应的弧度m乘以10为图形放大倍数for x 1x mx printf " "printf "" 控制打印左侧的号for x 62-mx printf " "printf "\n" 控制打印同一行中对称的右侧号return 0思考题如何实现用显示0360度的sin x 曲线2绘制余弦曲线和直线在屏幕上显示0360度的cos x 曲线与直线f x 45 y-1 31的迭加图形其中cos x 图形用表示f x 用表示在两个图形相交的点上则用f x 图形的符号问题分析与算法设计本题可以在上题的基础上进行修改图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后正确判断相互的位置关系为此可以先判断图形的交点再分别控制打印两个不同的图形程序注释与说明includeint maindouble yint xmnyyfor yy 0yy 20yy 对于第一个y坐标进行计算并在一行中打印图形y 01yy y屏幕行方向坐标m acos 1-y 10 m cos x 曲线上y点对应的屏幕列坐标n 45 y-1 31 n 直线上y点对应的列坐标for x 0x 62x x 屏幕列方向坐标if x mx n printf "" 直线与cos x 相交时打印else if x n printf "" 打印不相交时的直线图形else if x mx 62-m printf "" 打印不相交时的cos x 图形else printf " " 其它情况打印空格printf "\n"return 0思考题如何实现sin x 曲线与cos x 曲线图形的同时显示3绘制圆在屏幕上用画一个空心的圆问题分析与算法设计打印圆可利用图形的左右对称性根据圆的方程RR XXYY可以算出圆上每一点行和列的对应关系程序说明与注释includeincludeint maindouble yint xmfor y 10y -10y--m 25sqrt 100-yy 计算行y对应的列坐标m25是屏幕纵横比调节系数因为屏幕的行距大于列距不进行调节显示出来的将是椭圆for x 1x 30-mx printf " " 图形左侧空白控制printf "" 圆的左侧for x 30mx printf " " 图形的空心部分控制printf "\n" 圆的右侧return 0思考题实现函数y x2的图形与圆的图形叠加显示4歌星大奖赛在歌星大奖赛中有10个评委为参赛的选手打分分数为1100分选手最后得分为去掉一个最高分和一个最低分后其余8个分数的平均值请编写一个程序实现问题分析与算法设计这个问题的算法十分简单但是要注意在程序中判断最大最小值的变量是如何赋值的程序说明与注释includeint mainint integeriminsum-32768 先假设当前的最大值为C语言整型数的最小值min 32767 先假设当前的最小值min为C语言整型数的最大值sum 0 将求累加和变量的初值置为0for i 1i 10iprintf "Input number d "iscanf "d"integer 输入评委的评分sum integer 计算总分if integer integer 通过比较筛选出其中的最高分if integer min min integer 通过比较筛选出其中的最低分printf "Canceled scored\nCanceled min scored\n"min printf "Average scored\n" sum--min 8 输出结果运行结果Input number1 90Input number2 91Input number3 93Input number4 94Input number5 90Input number6 99Input number7 97Input number8 92Input number9 91Input number10 95Canceled score99Canceled min score90Average score92思考题题目条件不变但考虑同时对评委评分进行裁判即在10个评委中找出最公平即评分最接返平均分和最不公平即与平均分的差距最大的评委程序应该怎样实现5求最大数问555555的约数中最大的三位数是多少问题分析与算法设计根据约数的定义对于一个整数N除去1和它自身外凡能整除N的数即为N的约数因此最简单的方法是用2到N-1之间的所有数去除N即可求出N的全部约数本题只要求取约数中最大的三位数则其取值范围可限制在100到999之间程序说明与注释includeint mainlong iint jprintf "Please input number"scanf "ld"ifor j 999j 100j--if ij 0printf "The factor with 3 digits in ld isd\n"ijbreak运行结果输入555555输出The factor with 3 digits in 555555 is7776高次方数的尾数求13的13次方的最后三位数问题分析与算法设计解本题最直接的方法是将13累乘13次方截取最后三位即可但是由于计算机所能表示的整数范围有限用这种正确的算法不可能得到正确的结果事实上题目仅要求最后三位的值完全没有必要求13的13次方的完整结果研究乘法的规律发现乘积的最后三位的值只与乘数和被乘数的后三位有关与乘数和被乘数的高位无关利用这一规律可以大大简化程序程序说明与注释includeint mainint ixylast 1 变量last保存求X的Y次方过程中的部分乘积的后三位printf "Input X and Y XY "scanf "dd"xyfor i 1i yi X自乘Y次last lastx1000 将last乘X后对1000取模即求积的后三位printf "The last 3 digits of dd isd\n"xylast1000 打印结果运行结果Input X and Y XY 1313The last 3 digits of 1313 is253Input X and Y XY 1320The last 3 digits of 1320 is8017阶乘尾数零的个数100的尾数有多少个零问题分析与算法设计可以设想先求出100的值然后数一下末尾有多少个零事实上与上题一样由于计算机所能表示的整数范围有限这是不可能的为了解决这个问题必须首先从数学上分析在100结果值的末尾产生零的条件不难看出一个整数若含有一个因子5则必然会在求100时产生一个零因此问题转化为求1到100这100个整数中包含了多少个因子5若整数N能被25整除则N包含2个因子5若整数N能被5整除则N包含1个因子5程序说明与注释includeint mainint acount 0for a 5a 100a 5 循环从5开始以5的倍数为步长考察整数count 若为5的倍数计数器加1if a25 count 若为25的倍数计数器再加1printf "The number of 0 in the end of 100 is d\n"count 打印结果return 0运行结果The number of 0 in the end of 100 is 24问题进一步讨论本题的求解程序是正确的但是存在明显的缺点程序中判断整数N包含多少个因子5的方法是与程序中的100有关的若题目中的100改为1000则就要修改程序中求因子5的数目的算法了思考题修改程序中求因子5的数目的算法使程序可以求出任意N的末尾有多少个零8借书方案知多少小明有五本新书要借给ABC三位小朋友若每人每次只能借一本则可以有多少种不同的借法问题分析与算法设计本问题实际上是一个排列问题即求从5个中取3个进行排列的方法的总数首先对五本书从1至5进行编号然后使用穷举的方法假设三个人分别借这五本书中的一本当三个人所借的书的编号都不相同时就是满足题意的一种借阅方法程序说明与注释int mainint abccount 0printf "There are diffrent methods for XM to distribute books to 3 readers\n"for a 1a 5a 穷举第一个人借5本书中的1本的全部情况for b 1b 5b 穷举第二个人借5本书中的一本的全部情况for c 1a bc 5c 当前两个人借不同的书时穷举第三个人借5本书中的1本的全部情况if c ac b 判断第三人与前两个人借的书是否不同printf count8"2dddd ""2dddd\n "countabc打印可能的借阅方法运行结果There are diffrent methods for XM to distribute books to 3 readers1 1232 1243 1254 1325 1346 1357 1428 1439 145 1015211153 12154 13213 14214 1521516231 17234 18235 19241 2024321245 22251 23253 24254 2531226314 27315 28321 29324 3032531341 32342 33345 34351 3535236354 37412 38413 39415 4042141423 42425 43431 44432 4543546451 47452 48453 49512 5051351514 52521 53523 54524 5553156532 57534 58541 59542 605439杨辉三角形在屏幕上显示杨辉三角形11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1问题分析与算法设计杨辉三角形中的数正是 xy 的N次方幂展开式各项的系数本题作为程序设计中具有代表性的题目求解的方法很多这里仅给出一种从杨辉三角形的特点出发可以总结出1 第N行有N1个值设起始行为第0行2 对于第N行的第J个值 N 2当J 1或J N1时其值为1J 1且J N1时其值为第N-1行的第J-1个值与第N-1行第J个值之和将这些特点提炼成数学公式可表示为1 x 1或x N1c xyc x-1y-1 c x-1y 其它本程序应是根据以上递归的数学表达式编制的程序说明与注释includeint mainint ijn 13printf "N "while n 12scanf "d"n 控制输入正确的值以保证屏幕显示的图形正确for i 0i ni 控制输出N行for j-0j 24-2ij printf " " 控制输出第i行前面的空格for j 1j i2j printf "4d"c ij 输出第i行的第j个值printf "\n"void int c int xint y 求杨辉三角形中第x行第y列的值int zif y 1 y x1 return 1 若为x行的第1或第x1列则输出1z c x-1y-1 c x-1y 否则其值为前一行中第y-1列与第y列值之和return z思考题自行设计一种实现杨辉三角形的方法10数制转换将任一整数转换为二进制形式问题分析与算法设计将十进制整数转换为二进制的方法很多这里介绍的实现方法利用了C语言能够对位进行操作的特点对于C语言来说一个整数在计算机内就是以二进制的形式存储的所以没有必要再将一个整数经过一系列的运算转换为二进制形式只要将整数在内存中的二进制表示输出即可程序说明与注释includevoid printb intintint mainint xprintf "Input number"scanf "d"xprintf "number of decimal formd\n"xprintf " its binary form"printb xsizeof int 8 x整数 sizeof int int型在内存中所占的字节数sizeof int 8int型对应的位数putchar \nvoid printb int xint nif n 0putchar 0 unsigned x 1 n-1 n-1 输出第n位printb xn-1 归调用输出x的后n-1位运行结果输入8输出number of decimal form8its bunary form0000000000001000输入-8输出number of decimal form-8its binary form1XXXXXXXXXX11000输入32767输出number of decimal form32767its binary form01XXXXXXXXXX1111输入-32768输出number of decimal form-32768its binary form1XXXXXXXXXX00000输入128输出number of decimal form128its binary form0000000010000000问题的进一步讨论充分利用C语言可以对位进行操作的特点可以编写许多其它高级语言不便于编写甚至根本无法编写的程序位操作是C语言的一大特点在深入学习C语言的过程中应力求很好掌握程序中使用的位运算方法不是最佳的也可以不用递归操作大家可以自行对程序进行优化思考题将任意正整数转换为四进制或八进制数11打鱼还是晒网中国有句俗语叫三天打鱼两天晒网某人从1990年1月1日起开始三天打鱼两天晒网问这个人在以后的某一天中是打鱼还是晒网问题分析与算法设计根据题意可以将解题过程分为三步1 计算从1990年1月1日开始至指定日期共有多少天2 由于打鱼和晒网的周期为5天所以将计算出的天数用5去除3 根据余数判断他是在打鱼还是在晒网若余数为123则他是在打鱼否则是在晒网在这三步中关键是第一步求从1990年1月1日至指定日期有多少天要判断经历年份中是否有闰年二月为29天平年为28天闰年的方法可以用伪语句描述如下如果年能被4除尽且不能被100除尽或能被400除尽则该年是闰年否则不是闰年C语言中判断能否整除可以使用求余运算即求模程序说明与注释includeint days struct date daystruct dateint yearint monthint dayint mainstruct date todaytermint yeardayyeardayprintf "Enter yearmonthday"scanf "ddd"todayyeartodaymonthtodayday 输入日期termmonth 12 设置变量的初始值月termday 31 设置变量的初始值日for yearday 0year 1990year todayyearyeartermyear yearyearday days term 计算从1990年至指定年的前一年共有多少天yearday days today 加上指定年中到指定日期的天数day yearday5 求余数if day 0day 4 printf "he was fishing at that day\n" 打印结果else printf "He was sleeping at that day\n"int days struct date daystatic int day_tab[2][13]0312831303130313130313031 平均每月的天数0312931303130313130313031int ilplp dayyear4 0dayyear100 0dayyear400 0判定year为闰年还是平年lp 0为平年非0为闰年for i 1i daymonthi 计算本年中自1月1日起的天数dayday day_tab[lp][i]return dayday运行结果Enter yearmonthday1991 10 25He was fishing at dayEnter yearmonthday1992 10 25He was sleeping at dayEnter yearmonthday1993 10 25He was sleeping at day思考题请打印出任意年份的日历12抓交通肇事犯一辆卡车违反交通规则撞人后逃跑现场有三人目击事件但都没有记住车号只记下车号的一些特征甲说牌照的前两位数字是相同的乙说牌照的后两位数字是相同的但与前两位不同丙是数学家他说四位的车号刚好是一个整数的平方请根据以上线索求出车号问题分析与算法设计按照题目的要求造出一个前两位数相同后两位数相同且相互间又不同的整数然后判断该整数是否是另一个整数的平方程序说明与注释includeincludeint mainint ijkcfor i 1i 9i i车号前二位的取值for j 0j 9j j车号后二位的取值if i j 判断二位数字是否相异k i1000i100j10j 计算出可能的整数for c 31cc kc 判断该数是否为另一整数的平方if cc k printf "Lorry--No is d\n"k 若是打印结果运行结果Lorry _Nois 774413该存多少钱假设银行一年整存零取的月息为063现在某人手中有一笔钱他打算在今后的五年中的年底取出1000元到第五年时刚好取完请算出他存钱时应存入多少问题分析与算法设计分析存钱和取钱的过程可以采用倒推的方法若第五年年底连本带息要取1000元则要先求出第五年年初银行存款的钱数第五年初存款 1000 11200063依次类推可以求出第四年第三年的年初银行存款的钱数第四年年初存款第五年年初存款1000 11200063第三年年初存款第四年年初存款1000 11200063第二年年初存款第三年年初存款1000 11200063第一年年初存款第二年年初存款1000 11200063通过以上过程就可以很容易地求出第一年年初要存入多少钱程序说明与注释includeint mainint ifloat total 0for i 0i 5i i 为年数取值为04年total total1000 10006312 累计算出年初存款数额第五次的计算结果即为题解printf "He must save 2f at first\n"total运行结果He must save 403944 at first14怎样存钱利最大假设银行整存整取存款不同期限的月息利率分别为063 期限 1年066 期限 2年069 期限 3年075 期限 5年084 期限 8年利息本金月息利率12存款年限现在某人手中有2000元钱请通过计算选择一种存钱方案使得钱存入银行20年后得到的利息最多假定银行对超过存款期限的那一部分时间不付利息问题分析与算法设计为了得到最多的利息存入银行的钱应在到期时马上取出来然后立刻将原来的本金和利息加起来再作为新的本金存入银行这样不断地滚动直到满20年为止由于存款的利率不同所以不同的存款方法年限存20年得到的利息是不一样的分析题意设2000元存20年其中1年存i1次2年存i2次3年存i3次5年存i5次8年存i8次则到期时存款人应得到的本利合计为2000 1rate1 i1 1rate2 i2 1rate3 i3 1rate5 i5 1rate8 i8其中rateN为对应存款年限的利率根据题意还可得到以下限制条件0 i8 20 i5 20-8i8 50 i3 20-8i8-5i5 30 i2 20-8i8-5i5-3i3 20 i1 20-8i8-5i5-3i3-2i2可以用穷举法穷举所有的i8i5i3i2和i1的组合代入求本利的公式计算出最大值就是最佳存款方案程序说明与注释includeincludeint mainint i8i5i3i2i1n8n5n3n2n1float 0termfor i8 0i8 3i8 穷举所有可能的存款方式for i5 0i5 20-8i8 5i5for i3 0i3 20-8i8-5i5 3i3for i2 0i2 20-8i8-5i5-3i3 2i2i1 20-8i8-5i5-3i3-2i2term 20000pow double 10006312 double i1pow double 120006312 double i2pow double 130006912 double i3pow double 150007512 double i5pow double 180008412 double i8计算到期时的本利合计if termtermn1 i1n2 i2n3 i3n5 i5n8 i8printf "For inum profithe should so save his money in a bank\n" printf " made fixed deposit for 8 year d times\n"n8printf " made fixed deposit for 5 year d times\n"n5printf " made fixed deposit for 3 year d times\n"n3printf " made fixed deposit for 2 year d times\n"n2printf " made fixed deposit for 1 year d times\n"n1printf " Toal 2f\n"输出存款方式运行结果For inum profithe should so save his money in a bankmade fixed deposit for 8 year 0timesmade fixed deposit for 5 year 4timesmade fixed deposit for 3 year 0timesmade fixed deposit for 2 year 0timesmade fixed deposit for 1 year 0timesTotal884101可见最佳的存款方案为连续四次存5年期思考题某单位对职工出售住房每套为2万元买房付款的方法是一次交清优惠20从第一年开始每年年初分期付款5年交清优惠5010年交清优惠1020年交清没有优惠现在有人手中正好有2万元若假定在今后20年中物价和银行利率均保持不变问他应当选择哪种付款方式可以使应付的钱最少15捕鱼和分鱼ABCDE五个人在某天夜里合伙去捕鱼到第二天凌晨时都疲惫不堪于是各自找地方睡觉日上三杆A第一个醒来他将鱼分为五份把多余的一条鱼扔掉拿走自己的一份B第二个醒来也将鱼分为五份把多余的一条鱼扔掉保持走自己的一份CDE依次醒来也按同样的方法拿走鱼问他们合伙至少捕了多少条鱼问题分析与算法设计根据题意总计将所有的鱼进行了五次平均分配每次分配时的策略是相同的即扔掉一条鱼后剩下的鱼正好分成五份然后拿走自己的一份余下其它的四份假定鱼的总数为X则X可以按照题目的要求进行五次分配X-1后可被5整除余下的鱼为4 X-1 5若X满足上述要求则X就是题目的解程序说明与注释includeint mainint nixflag 1 flag控制标记for n 6flagn 采用试探的方法令试探值n逐步加大for x ni 1flagi 5iif x-1 5 0 x 4 x-1 5else flag 0 若不能分配则置标记falg 0退出分配过程if flag break 若分配过程正常结束则找到结果退出试探的过程else flag 1 否则继续试探下一个数printf "Total number of fish catched d\n"n 输出结果运行结果Total number of fish catched 3121问题的进一步讨论程序采用试探法试探的初值为6每次试探的步长为1这是过分保守的做法可以在进一步分析题目的基础上修改此值增大试探的步长值以减少试探次数思考题请使用其它的方法求解本题16出售金鱼买卖提将养的一缸金鱼分五次出售系统上一次卖出全部的一半加二分之一条第二次卖出余下的三分之一加三分之一条第三次卖出余下的四分之一加四分之一条第四次卖出余下的五分之一加五分之一条最后卖出余下的11条问原来的鱼缸中共有几条金鱼问题分析与算法设计题目中所有的鱼是分五次出售的每次卖出的策略相同第j次卖剩下的 j1 分之一再加1 j1 条第五次将第四次余下的11条全卖了假定第j次鱼的总数为X则第j次留下x- x1 j1当第四次出售完毕时应该剩下11条若X满足上述要求则X就是题目的解应当注意的是" x1 j1 "应满足整除条件试探X的初值可以从23开始试探的步长为2因为X的值一定为奇数程序说明与注释includeint mainint ijn 0x n为标志变量for i 23n 0i 2 控制试探的步长和过程for j 1x ij 4x 11j 完成出售四次的操作if x1 j1 0 若满足整除条件则进行实际的出售操作x- x1 j1else x 0break 否则停止计算过程if j 5x 11 若第四次余下11条则满足题意printf "There are d fishes at first\n"i 输出结果n 1 控制退出试探过程运行结果There are 59 fishes at first思考题日本著名数学游戏专家中村义作教授提出这样一个问题父亲将2520个桔子分给六个儿子分完后父亲说老大将分给你的桔子的18给老二老二拿到后连同原先的桔子分17给老三老三拿到后连同原先的桔子分16给老四老四拿到后连同原先的桔子分15给老五老五拿到后连同原先的桔子分14给老六老六拿到后连同原先的桔子分13给老大结果大家手中的桔子正好一样多问六兄弟原来手中各有多少桔子17平分七筐鱼甲乙丙三位鱼夫出海打鱼他们随船带了21只箩筐当晚返航时他们发现有七筐装满了鱼还有七筐装了半筐鱼另外七筐则是空的由于他们没有秤只好通过目测认为七个满筐鱼的重量是相等的7个半筐鱼的重量是相等的在不将鱼倒出来的前提下怎样将鱼和筐平分为三份问题分析与算法设计根据题意可以知道每个人应分得七个箩筐其中有35筐鱼采用一个33的数组a 来表示三个人分到的东西其中每个人对应数组a的一行数组的第0列放分到的鱼的整筐数数组的第1列放分到的半筐数数组的第2列放分到的空筐数由题目可以推出数组的每行或每列的元素之和都为7对数组的行来说满筐数加半筐数 35每个人所得的满筐数不能超过3筐每个人都必须至少有1 个半筐且半筐数一定为奇数对于找到的某种分鱼方案三个人谁拿哪一份都是相同的为了避免出现重复的分配方案可以规定第二个人的满筐数等于第一个人的满筐数第二个人的半筐数大于等于第一个人的半筐数程序说明与注释includeint a[3][3]countint mainint ijkmnflagprintf "It exists possible distribtion plans\n"for i 0i 3i 试探第一个人满筐a[0][0]的值满筐数不能 3a[0][0] ifor j ij 7-ij 3j 试探第二个人满筐a[1][0]的值满筐数不能 3a[1][0] jif a[2][0] 7-j-a[0][0] 3 continue 第三个人满筐数不能 3if a[2][0] a[1][0] break 要求后一个人分的满筐数前一个人以排除重复情况for k 1k 5k 2 试探半筐a[0][1]的值半筐数为奇数a[0][1] kfor m 1m 7-km 2 试探半筐a[1][1]的值半筐数为奇数a[1][1] ma[2][1] 7-k-mfor flag 1n 0flagn 3n判断每个人分到的鱼是 35筐flag为满足题意的标记变量if a[n][0]a[n][1] 7a[n][0]2a[n][1] 7a[n][2] 7-a[n][0]-a[n][1] 计算应得到的空筐数量else flag 0 不符合题意则置标记为0if flagprintf "Nod Full basket Semi--basket Empty\n"count for n 0n 3nprintf " fisher c d d d\n"Ana[n][0]a[n][1]a[n][2]运行结果It exists possible distribution plansNo1 Full basket Semi--basket Emptyfisher A 1 5 1fisher B 3 1 3fisher C 3 1 3No2 Full basket Semi--basket Emptyfisher A 2 3 2fisher B 2 3 2fisher C 3 1 3思考题晏会上数学家出了一道难题假定桌子上有三瓶啤酒癣瓶子中的酒分给几个人喝但喝各瓶酒的人数是不一样的不过其中有一个人喝了每一瓶中的酒且加起来刚好是一瓶请问喝这三瓶酒的各有多少人答案喝三瓶酒的人数分别是2人3人和6人18有限5位数个位数为6且能被3整除的五位数共有多少题目分析与算法设计根据题意可知满足条件的五位数的选择范围是100061001699996可设基础数i 1000通过计算i106即可得到欲选的数 i的变化范围是1000999 再判断该数能否被3整除程序说明与注释includeint mainlong int iint count 0 count统计满足条件的五位数的个数for i 1000i 9999iif i106 3 判断所选的数能否被3整除count 若满足条件则计数printf "count d\n"count运行结果count 2999思考题求100到1000之间有多少个其数字之和为5的整数答案104113122131140203212221230302311320401410500198除不尽的自然数一个自然数被8除余1所得的商被8除也余1再将第二次的商被8除后余7最后得到一个商为a又知这个自然数被17除余4所得的商被17除余15最后得到一个商是a的2倍求这个自然数问题分析与算法设计根据题意可设最后的商为i i从0开始取值用逆推法可以列出关系式i87 8 1 81 2i17 15 184再用试探法求出商i的值程序说明与注释includeint mainint ifor i 0i 试探商的值if i87 81 81 34i15 174逆推判断所取得的当前i值是否满足关系式若满足则输出结果printf "The required number is d\n" 34i15 174break 退出循环运行结果The required number is199320一个奇异的三位数一个自然数的七进制表达式是一个三位数而这个自然数的九进制表示也是一个三位数且这两个三位数的数码正好相反求这个三位数问题分析与算法设计根据题意可知七进制和九进制表示的这全自然数的每一位一定小于7可设其七进制数形式为kji ijk的取值分别为16 然后设其九进制表示形式为ijk 程序说明与注释includeint mainint ijkfor i 1i 7ifor j 0j 7jfor k 1k 7kif i99j9k ij7k77printf "The special number with 3 digits is"printf "ddd 7 ddd 9 d 10 \n"kjiijki99j9k运行结果The special number with 3 digits is503 7 305 9 248 10 214位反序数设N是一个四位数它的9倍恰好是其反序数求N反序数就是将整数的数字倒过来形成的整数例如1234的反序数是4321问题分析与算法设计可设整数N的千百十个位为ijkl其取值均为09则满足关系式i103j10210kl 9 l103k10210ji的ijkl即构成N程序说明与注释includeint mainint ifor i 1002i 1111i 穷举四位数可能的值if i101000i1010100i1001010i1000 i9判断反序数是否是原整数的9倍printf "The number satisfied stats condition is d\n"i若是则输出运行结果The number satisfied states condition is1089分类22求车速一辆以固定速度行驶的汽车司机在上午10点看到里程表上的读数是一个对称数即这个数从左向右读和从右向左读是完全一样的为95859两小时后里程表上出现了一个新的对称数问该车的速度是多少新的对称数是多少问题分析与算法设计根据题意设所求对称数为i其初值为95589对其依次递增取值将i值的每一位分解后与其对称位置上的数进行比较若每个对称位置上的数皆相等则可判定i即为所求的对称数程序说明与注释includeint mainint ta[5] 数组a存放分解的数字位long int kifor i 95860i 以95860为初值循环试探for t 0k 100000k 10t 从高到低分解所取i值的每位数字依次存放于a[0]a[5]中a[t] ik k10k 10if a[0] a[4] a[1] a[3]printf "The new symmetrical number kelometers isddddd\n"a[0]a[1]a[2]a[3]a[4]printf "The velocity of the car is 2f\n" i-95859 20break运行结果The new symmetrical number kelometers is95959The velocity of the car is5000思考题将一个数的数码倒过来所得到的新数叫原数的反序数如果一个数等于它的反序数则称它为对称数求不超过1993的最大的二进制的对称数23由两个平方三位数获得三个平方二位数已知两个平方三位数abc和xyz其中abcxyz未必是不同的而axbycz是三个平方二位数请编程求三位数abc和xyz问题分析与算法设计任取两个平方三位数n和n1将n从高向低分解为abc将n1从高到低分解为xyz 判断axbycz是否均为完全平方数程序说明与注释include。
经典的c语言编程案例经典的C语言编程案例是学习和理解C语言的重要途径,它们涵盖了C语言的基本语法和常见编程思想。
下面列举了10个经典的C 语言编程案例:1. Hello World程序Hello World程序是入门级的C语言编程案例,它用于展示C语言的基本语法和程序结构。
该程序的功能是在屏幕上输出"Hello World"。
```c#include <stdio.h>int main() {printf("Hello World\n");return 0;}```2. 计算阶乘阶乘是一个经典的数学问题,可以通过递归或循环的方式来求解。
下面是一个使用循环的计算阶乘的C程序。
```c#include <stdio.h>int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}int main() {int n = 5;printf("Factorial of %d is %d\n", n, factorial(n));return 0;}```3. 翻转字符串翻转字符串是一个常见的编程问题,可以通过交换字符串中的字符来实现。
下面是一个用C语言实现翻转字符串的程序。
```c#include <stdio.h>#include <string.h>void reverseString(char* str) {int left = 0;int right = strlen(str) - 1;while (left < right) {char temp = str[left];str[left] = str[right];str[right] = temp;left++;right--;}}int main() {char str[] = "Hello World";reverseString(str);printf("Reversed string: %s\n", str);return 0;}```4. 查找数组中的最大值查找数组中的最大值是一个常见的编程问题,可以通过遍历数组并比较元素的方式来实现。
项目一测试1.CPU 1214C最多可以扩展个信号模块、个通信模块。
( )A:5,5B:8,3C:3,3D:5,3答案:B2.信号模块安装在CPU的边,通信模块安装在CPU的边。
( )A:左,左B:左,右C:右,左D:右,右答案:C3.CPU 1214C有集成的点数字量输入、点数字量输出。
( )A:8,8B:10,8C:10,10D:14,10答案:D4.在PLC编程中,最常用的编程语言是()A:语句表B:C语言C:功能块图D:梯形图答案:D5.下列哪个CPU型号不是S7-1200的型号()A:CPU1211CB:CPU1213CC:CPU1215CD:CPU1214C答案:B项目二测试1.( )是MD200中最低的8位对应的字节。
A:MB202B:MB200C:MB203D:MB201答案:C2.Q4.2是输出字节 QB4 的第( )位。
A:2B:0C:1D:3答案:A3.MW 4它的高位字节是()。
A:MB5B:MB2C:MB4D:MB3答案:C4.RS触发器是()优先。
A:通电B:置位C:复位D:断电答案:B5.MW2是属于()数据类型。
A:字节B:双字C:字D:整数答案:C项目三测试1.脉冲定时器输入信号上升沿,Q的输出为()状态A:0B:2C:不确定D:1答案:D2..TON定时器输入信号上升沿,Q的输出为()状态A:0B:1C:2D:不确定答案:A3.当TON定时器PT值到达设定值后,ET 值()。
A:不确定B:减小C:增加D:不变答案:D4.TOF定时器在输入信号为1时,Q的输出为()状态A:不确定B:2C:1D:0答案:C5.TONR定时器在PT值小于设定值,当输入信号为1变为0时,ET的值()。
A:1B:不变C:0D:不确定答案:B项目四测试1.在加计数器的设置输入CU端的( ),将PV端指定的预置值送入计数器值。
A:下降沿B:上升沿C:低电平D:高电平答案:B2.使用加计数时,当PV值()CV值时,Q输出会输出高电平A:不等于B:大于等于C:大于D:小于答案:B3.CTD计数器的计数值不等于0时,计数器位为;计数值为0时,计数器位为 ( ) 。
(完整版)C语言程序设计100个简单的经典例子编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)C语言程序设计100个简单的经典例子)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)C语言程序设计100个简单的经典例子的全部内容。
(完整版)C语言程序设计100个简单的经典例子编辑整理:张嬗雒老师尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布到文库,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是我们任然希望(完整版)C语言程序设计100个简单的经典例子这篇文档能够给您的工作和学习带来便利。
同时我们也真诚的希望收到您的建议和反馈到下面的留言区,这将是我们进步的源泉,前进的动力.本文可编辑可修改,如果觉得对您有帮助请下载收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为〈(完整版)C语言程序设计100个简单的经典例子> 这篇文档的全部内容。
经典C语言程序设计100例1.数字排列2。
奖金分配问题3.已知条件求解整数4。
输入日期判断第几天5.输入整数进行排序6.用*号显示字母C的图案7.显示特殊图案8.打印九九口诀9.输出国际象棋棋盘10。
打印楼梯并按条件打印笑脸11.经典兔子问题12.判断素数13.水仙花数问题14。
正整数分解质因数15.学习成绩划分16.正整数求其最大公约数和最小公倍数17.统计英文字母/空格/数字个数18.求s=a+aa+aaa+aa。
.a的值19。
求解”完数"20。
球体自由落下物理问题21.猴子吃桃问题22.乒乓球比赛抽签问题23.打印菱形图案24。
重庆科技学院课程设计报告院(系):_电子信息工程学院_专业班级:计科应06 学生姓名:吴小龙学号: 2006540240 设计地点(单位)_____I302 ________ __ ______ _ 设计题目: OLE项目出入数据表控制方法设计完成日期: 2009 年 9 月 22 日指导教师评语: _______________________________________ ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________ __________ _成绩(五级记分制):______ __________指导教师(签字):________ ________重庆科技学院课程设计任务书设计题目:文档管理器设计——OLE项目出入数据表控制方法设计教研室主任:指导教师:年月日随着计算机技术应用的普及,对于文件的管理要求也越来越高,因此设计一个能够管理Word文档和Excel文档文件管理器是非常有必要的。
本次设计做的是一个OLE文档管理器,能把Word和Excel文档读入到文档管理器。
在文档管理器菜单中可以看到文档的文件夹和子文件夹。
文档在管理器中能够被打开编辑文档,并能保存数据到数据表。
所有涉及到的数据表都是基于ACCESS数据库的。
文档管理器实现了对文档的理,使得文档的操作变得更加简便快捷。
关键字: OLE 文档管理 ACCESS数据库1 需求分析 (5)1.1 设计需求 (5)1.2 设计思路 (5)1.3用户操作控制流程 (7)2 功能设计与实现方法 (8)2.1总体功能结构图 (8)2.2 应用程序直接读入文档文件 (8)2.3 将OLE项目写为文档文件 (10)2.4 从数据表中读出OLE项目 (12)2.5 新建OLE项目文档 (13)3 代码调试步骤与注释 (15)3.1应用程序界面与OLE项目服务程序界面共生 (15)3.2 文档类型视图CTypeTreeView类设计 (16)3.3 数据表视图CTypeObjGridView类设计 (19)3.4 引入CCyzAdo类访问数据库 (21)4 总结致谢 (24)参考文献 (25)1 需求分析1.1 设计需求随着计算机技术应用的普及,对于文件的管理要求也越来越高,因此设计一个能够管理Word文档和Excel文档文件管理器是非常有必要的。