C语言大作业(仅供参考)
c语言大作业综合
c语言大作业综合第一章C语言简介及算法一.选择题1.一个C程序可以包含的函数。
A.一个B.多个C.若干D.任意2.下面不可以使用来编译和连接一个C 程序。
A.TurboCB.VC++C.C语言编译器D.BC3.C语言的程序一行写不下时,可以。
A.用逗号换行B.用分号换行C.在任意一空格处换行D.用回车符换行4.C控制语句有种。
A.6B.9C.32D.345.复合语句是用一对界定的语句块。
A.{}B.[]C.()D.”6.一个C程序的执行总是从该程序的函数开始,在函数最后结束。
A.第一个、最后一个B.main、mainC.主函数、最后一个D.第一个、第一个7.C语言提供的合法的数据类型关键字A.FloatB.ignedC.integerD.Char8.在以下各组标识符中,合法的标识符是(1)A.B01B.table_1C.0_tD.k%(2)A.Fat_B.voidC.pblD.(3)A.某y_B.longdoubleC.某pD.CHAR(4)A.jB.IntC._某yD.w_y239.C语言的标识符里不能有A.大小写字母B.数字C..D.下划线二.填空题1.C程序是由构成的,一个C程序中至少包含因此,是C程序的基本单位。
2.C程序注释是由和所界定的文字信息组成的。
3.函数体一般包括和4.算法是解决问题的和的描述。
5.C程序的注释部分可以出现在程序的位置,它对程序的编译和运行作用,但是可以增加程序的第二章C语言数据类型、基本运算及简单程序设计一.选择题1.不合法的字符常量是A.‘\\t’B.“A”C.‘a’D.’\\某32’2.逻辑运算符两侧运算对象的数据类型。
A.只能是0或1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据3.下列表达式中,不满足“当某的值为偶数时值为真,为奇数时值为假”的要求。
A.某%2==0B.!某%2!=0C.(某/2某2-某)==0D.!(某%2)4.下面选项中,不是合法整型常量的是A.160B.-0某cdgC.-01D.-0某48a5.能正确表示“当某的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。
C语言程序设计大作业
学年学期:20xx - 20xx 学年 1 学期课程名称:C语言程序设计综合训练课程学分:2分考核形式:大作业任课教师:xx题目:学生成绩统计程序学院:xx学院__________________________________ 专业班级:xx_______________________________________ 学号:_______ 学生姓名:提交日期:目录目录 (2)引言 (3)1. 学生成绩管理系统 (4)1.1系统简介 (4)1.2相关代码及知识点介绍 (4)2. 添加学生成绩功能 (5)3. 查找学生成绩功能 (6)4. 排序学生成绩功能 (7)5. 展示学生成绩功能 (9)6. 删除学生成绩功能 (10)7. 附页代码 (11)引言C语言是一种比较常见的计算机语言,许多大型应用软件都是用C语言编写而成的。
其简洁紧凑,灵活方便,数据结构丰富。
在一定程度上,C语言比汇编语言更实用,具有结构化语句,实现了结构化编程,使程序编写变得更容易、更快捷,可以编写出各种类型的程序。
同时,C语言是一门实践性强的学科,在学习的过程中,利用所学知识,编写一些与生活、学习相关的应用程序来提高程序编写能力,增强学习兴趣。
本次使用C语言设计一个学生成绩管理系统,可以实现学生成绩的添加,查找,排序及展示。
在作业中使用的是函数的模块化设计,将四个程序使用四个函数来实现。
与此同时,增加用户界面的交互,可供用户选择想要的功能,实现增删查排等操作。
1. 学生成绩管理系统1.1系统简介该系统主要实现学生成绩的添加,查找,排序,展示和删除五个功能,添加学生成绩主要有6个输入值组成,其中包括学号,姓名,语文,数学,英语,政治等。
查找学生成绩主要通过学号查询。
对学生成绩进行排序,可以分别通过学号,语文,数学,英语,政治,平均分,总分等进行排序。
第四项功能是对学生成绩以表格的形式进行展示。
删除学生成绩是按照学号对表格中的数据进行删除。
大学C语言程序设计大作业题目
1数据处理系统一、软件开发目的该软件主要是使用C语言设计开发数据处理程序,实现对数据的排序、查找、插入、计算、输出等功能。
二、数据结构定义一个11*10的二维数组。
三、软件功能说明1.生成100个随机数:调用库函数rand()或random()产生100个随机数,并存储在二维数组中的前十行。
2.选择法排序:用选择法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
3.冒泡法排序:用冒泡法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
4.插入法排序:用插入法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
5.查找数据:输入待查找数据, 在二维数组中逐个查找,若找到输出数据所在位置的行列号,若无该数值则输出“无此数”。
6.转换二进制:将数组中数据转换为二进制并转存到另一数组中输出。
7.转换为素数之和:对于原数组中的数进行判断:若为偶数,则表示成两个素数的和,并输出。
8.插入数据:输入一个数,将该数插入原数组中,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。
9.删除数据输入一个数,若原数组中存在该数,则删除该数,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。
10.退出系统,结束任务。
四、软件验收标准1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。
系统菜单功能项:1生成100个随机数2选择法排序3冒泡法排序4插入法排序5查找数据6转换二进制7转换为素数之和8插入数据9删除数据10退出系统注意:要求每执行一个具体的功能之后,程序将重新显示菜单。
2.系统要有一定的可靠性、稳定性,能够实现各功能模块。
2图书借阅管理系统一、软件开发目的该软件主要是使用C语言设计开发一个简单的图书借阅管理系统,实现对图书的借书,还书的管理和数据统计。
C语言大作业
学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (3)2.3函数实现 (4)2.4开发日志 (4)3 程序调试及运行 (5)3.1程序运行结果 (5)3.2程序使用说明 (6)3.3程序开发总结 (6)4 附件(源程序) (6)1 摘要1.1 设计题目(1)数学型大作业4.歌星大奖赛。
(2)数学型大作业6. 高次方数的尾数.1.2 设计内容(1)在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分,选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。
(2)求13的13次方的最后三位数。
1.3 开发工具开发工具为Microsoft Visual C++ 6.0.1.4 应用平台Windows XP32位。
2 详细设计2.1 程序结构(1)整体包括一个主函数和一个自定义函数,首先在主函数中输入10个分数,在输出函数中调用自定义函数,在调用过程中向自定义函数传递实参。
在自定义函数中实现了平均分的计算。
然后返回到主函数输出。
(2)程序整体上是用到一个主函数和一个自定义函数。
程序先运行主函数,然后在主函数中调用自定义函数Thr,Thr函数实现了求13的13次方的最后三位尾数。
调用Thr函数时将实参(13,13)传递到自定义函数的形参中,从而实现了对问题的求解。
2.2 主要功能(!)该程序主要用于求解去除最高分和最低分的平均分。
该功能的实现是在自定义的函数中实现的,即用选择法先对10个分数进行排序,排序中用的是选择法,即从第i+1至第n个数中选出比第i个数小的,然后和其交换,如都大于第i个数,则不进行交换。
从而实现从小到大的排序。
然后只计算第2至第n-1个数的平均值,计算结果即为最后得分。
(2)该程序的主要功能为实现高次方数的尾数的求解。
高次方数的结果一般较大,超过了计算机的内存,由乘法的运算性质知其最后的尾数只与每次最后三位的乘积有关,于是每次只运行最后三位的乘积即可,然后截取即可,这样就避免了内存不足这一缺陷,程序便可得到正确的结果。
C语言大作业
学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (10)2.3函数实现 (10)2.4开发日志 (17)3 程序调试及运行 (18)3.1程序运行结果 (18)3.2程序使用说明 (19)3.3程序开发总结 (20)4 附件(源程序) (20)1 摘要1.1 设计题目A题算法型:折半查找算法演示程序B题空间桁架结构节点位移求解1.2 设计内容A题:本程序是一个演示折半查找算法的演示程序。
当用户输入查找数据表列和要查找的数据时,程序会演示折半法查找该数的详细过程,并且支持多次查找、错误提示等功能。
B题:空间桁架结构节点位移求解1.3 开发工具Code Blocks 12.11(内置MinGW)1.4 应用平台Windows 7 64位2 详细设计2.1 程序结构A题:程序功能模块:本程序主要包含六大模块:程序说明模块、输入模块、排序模块、折半法查找模块、选择模块和程序退出模块。
工程文件结构:本程序的工程含有6个文件,其中main.cpp、print_stars.cpp、judge.cpp、sort.cpp、putout.cpp5个cpp 文件和include.h1个头文件(参见下图),两者共同存在于工程“折半法查找演示程序”中。
其中main.cpp 文件包含了程序的主体部分,程序说明模块、输入、排序、折半查找、选择、程序退出模块按线性排列。
其中输入、排序模块执行一次,这般查找、选择模块可多次执行,直到程序退出模块执行。
六大模块说明:(1) 程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。
此部分模块主函数源代码如下:int a[N];/*存储要查找的数表,用户输入*/int i,n,num,count;/*count为折半次数计数器,n为数表数据个数,num存储所查数据*/int top,bottom,mid;char c;/*存储选择函数中的输入的字符y或n*/int flag=1;/*折半法循环标志变量*/int loc=-1;/*存储所查找数据位置*/double k=0;p_s(76);puts("\n");/*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n");puts("\n");/*程序欢迎语*/p_s(13);printf("制作者:Haidong Chen***");/*作者信息*/p_s(4);printf("**Email:1562353594@");/*电子邮件*/p_s(11);puts("\n");p_s(76);puts("\n");/*再次引用p_s函数,程序说明部分结束*/附:print_star.cpp文件源代码#include<stdio.h>void p_s(int k){int i;for(i=1;i<=k;i++)/*连续输出ka个'*'*/printf("*");}(2) 输入模块:引导使用者输入要在其中查找数据的数表的数据个数和数表数据。
c语言大作业
2、教学事务管理系统
该系统在磁盘上存储如下信息: 1。注册信息,每个学期的注册信息应包括每个已注册学生的班级代号、学号、姓 名、注册的学期。 2。选课信息。包括已注册的每个学生每个学期所选课程。本程序仅限一年级2个学 期。 3。成绩。 每个学生所选的课程的考核成绩,包括补考成绩。 该系统的功能: 1。能输入注册信息,选课信息和(含学号,姓名,成绩) 2)某门课程全年级前5名的学号,姓名,成绩 3)某门课程的选修者名单; 4)某个学生本学期的成绩单 5)某门课程每个班的总平均粉(从高到低排列) 6)某门课程某班的成绩单(按学号排列)
3、篮球赛个人技术统计系统
设某篮球联赛要统计20名著名球员个人技术数据。要求用高级语言实现篮 球联赛个人技术数据处理系统。该系统在磁盘上存储如下信息: 1。每场球赛的个人技术数据。一场球一个人的技术数据包括:姓名,所属 球队,三分球个数,篮板球个数,扣篮成功次数,抢断次数,得分,比 赛日期。 2。个人技术数据汇总表。表中反映了每个人的技术数据的累计结果。表羡 为:姓名,三分球总数,篮板球总数,扣篮成功总次数,抢断总次数, 得分总数,比赛场数。 本系统功能如下: 1。创建存储每常球赛个人技术数据的存储系统(第一次输入个人技术数据 时),然后自动创建存储个人技术数据汇总表的存储系统。 2。每场比赛后,添加个人技术数据,然后自动修改个人技术数据汇总表 3。能输出当前的个人技术数据汇总表 4。能输出指定技术项目平均每场数据较高的前三名运动员的姓名,所在队 名和平均每场的单项数据。
短学期上机时间安排如下:
第一周:周五晚; 第二周:周一、五晚; 第三周:周一、四晚; 第四周:周一、四、五晚。
1、工资管理系统
该系统在磁盘上储存了某单位上月全体员工的工资信息,对于每一位职工存储以 下信息: 月份,职工编号,基本工资,津贴,岗贴,补贴,房贴,交通补贴,应发数,房 租,储蓄,会费,个人所得税,应扣数,实发数。 个人所得税计算方法设定为:工资少于800元为0,800-1000元的部分为5%, 1000-5000元的部分为10%,5000元以上的部分为20%。 该系统功能如下: 1)创建存储职工工资信息的存储系统。 2)添加职工的工资信息(增加新职工时用) 3)删除某职工的工资信息(职工离职或者死亡时用) 4)修改某职工的部分工资信息(当月开始增加或减少某些项工资或扣款数变化) 5)输出指定编号职工的工资信息(查询用) 6)输出当月全体职工的工资信息(发工资用)
C语言作业及参考答案
C语言及实验作业参考做法分支程序设计1.输入4个整数,按从小到大的顺序输出2.根据月份判断季节。
输入月份,输出春/夏/秋/冬。
要求用switch语言实现3.学生学习两门课:必修课成绩为course1,选修课成绩为course2,若两门都及格,打印pass,必修课不及格,打印fail4.从键盘输入一个年份,判该年是否是闰年,是闰年就输出yes,否则输出no 5.从键盘输入一个字符,判断该字符是数字字符、大写字母、小写字母、空格还是其他字符。
6.商店卖西瓜,10斤以上每斤0.8元, 8斤以上每斤0.6元, 6斤以上每斤0.4元,4斤以上每斤0.3元, 4斤以下每斤0.15元,输入西瓜重量和所付的钱数,输出应付的货款和应找的钱数循环程序设计1.从键盘上输入10个整数,计算这些整数的和2.水仙花数。
一个3位数,若其各位数字之和等于它本身,这个数就称为水仙花数.输出所有的水仙花数。
(如153)#include<stdio.h>int main()//方法一{ int num,bai,shi,ge;for(num=100; num<1000; num++){bai=num/100;shi=num/10%10;ge=num%10;if(num==bai*bai*bai+shi*shi*shi+ge*ge*ge)printf("%d\n",num);}return 0;}//方法二int main(){int i,j,k;for(i=1; i<10; i++)for(j=0; j<10; j++)for(k=0; k<10; k++)if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf("%d\n",100*i+j*10+k);return 0;}3.计算分数序列2/1,3/2,5/3,8/5,13/8,21/13,.....前20项之和。
C语言大作业全
#include "stdafx.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "malloc.h"#define LEN sizeof(struct student) #define NULL 0int n,m;int k=1;struct student{char num[20];char name[20];int age;char profession[50];int maths;int english;int C_program;float ave;struct student * next;};float ave(struct student * p1){float ave;ave=(float)(p1->maths+p1->english+p1->C_program)/3;return ave;}void save(struct student *head){struct student *p1 = head;FILE *outFile;outFile = fopen("stu.bin", "wb");if (outFile == NULL) {printf("\nFile error.");}else {while(p1 != NULL){fwrite(p1, sizeof(struct student), 1, outFile);p1 = p1->next;}fclose(outFile);}}//将数据存入文档中void check(struct student * head,struct student * p1) {struct student *h=head;for(m=0;m<n;m++,h=h->next ){if(strcmp( h->num,p1->num)==0){printf("输入号码重复\n");printf("请重新输入学号:");scanf("%s",p1->num);getchar();check(head,p1);}}}//检验学号是否重复struct student * creat(){struct student * head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN); printf("学号:\n");scanf("%s",p1->num);getchar();printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);head=NULL;while(strcmp(p1->num,"0")!=0){n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf("学号:\n");scanf("%s",p1->num);getchar();check(head,p1);//检查输入的学号是不是重复且是不是重复输错 printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);}p2->next=NULL;save(head);return(head);}//录入数据并将其保存至文档void print(struct student *head){struct student * p;printf("\n这%d个学生的成绩为:\n",n);printf("学号姓名年龄专业数学英语 C语言平均成绩\n");p=head;if(head==NULL)printf("The info error\n");if(head!=NULL)while(p!=NULL){p->ave=ave(p);printf("%s%8s%8d%13s%9d%10d%9d%10.2f",p->num,p->name,p->age,p->profession,p->maths,p->engl ish,p->C_program,p->ave);printf("\n");p=p->next;}}//输出链表//struct student* read(){struct student *head = NULL;struct student *p2 = head;struct student record;FILE *infile;infile = fopen("stu.bin", "rb");n=1;if(infile == NULL){printf("\nFile error.");}else {head = (struct student *)malloc(sizeof(struct student));fread(head, sizeof(*head), 1, infile);p2 = head;while(fread(&record, sizeof(record), 1, infile))//fread返回数据个数,结束和出错返回0;{p2->next = (struct student *)malloc(sizeof(struct student));memcpy(p2->next, &record, sizeof(record)); //复制结构体数据p2 = p2->next;n=n+1;}p2->next=NULL;fclose(infile);}return head;}//从文件中读取数据struct student * search_num(struct student * head,char array[20]){struct student * p1;p1=head;if(head==NULL){printf("打开错误");return(head);}while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)){p1=p1->next;}//找到相应的学号if(strcmp(array,p1->num)==0){printf("学号姓名年龄专业数学英语 C语言\n");printf("%s%10s%10d%15s%11d%12d%11d",p1->num,p1->name,p1->age,p1->profession,p1->maths,p1-> english,p1->C_program);printf("\n");}else printf("此学号不存在\n");return(head);}//按学号查询数据//]struct student * search_name(struct student * head,char array[20]){struct student * p1;p1=head;if(head==NULL){printf("打开错误");return(head);}while((strcmp(array,p1->name)!=0)&&(p1->next!=NULL)){p1=p1->next;}//找到相应的学号if(strcmp(array,p1->name)==0){printf("学号姓名年龄专业数学英语 C语言\n");printf("%s%10s%10d%15s%11d%12d%11d",p1->num,p1->name,p1->age,p1->profession,p1->maths,p1-> english,p1->C_program);printf("\n");}else printf("此姓名不存在\n");return(head);}//按姓名查询数据//struct student * change(struct student * head,char array[20]){struct student *p1;p1=head;if(head==NULL){printf("打开错误!");return(head);}while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)) {p1=p1->next;} //找到相应的学号if(strcmp(array,p1->num)==0){printf("请输入更改的学号:\n");printf("学号:\n");scanf("%s",p1->num);getchar();printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);save(head);}else printf("所查学号不存在\n");return(head);}//修改数据//struct student * del(struct student * head,char array[20]) {struct student * p1,* p2;if(head==NULL){printf("\nlist null!\n");return head;}p1=head;while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}//找到相应的学号、if((strcmp(array,p1->num)==0)){if(strcmp(array,head->num)==0)head=p1->next;elsep2->next=p1->next;}elseprintf("你查询的学号(%s)不存在!",p1->num);save(head);return(head);}void add(struct student * head){struct student *p1;printf("\n请输入添加学生的信息:\n");p1=(struct student *)malloc(LEN);printf("学号:\n");scanf("%s",p1->num);getchar();check(head,p1);printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);FILE *outFile;outFile = fopen("stu.bin", "ab");if (outFile == NULL) {printf("\n打开错误.");}fwrite(p1, sizeof(struct student), 1, outFile);fclose(outFile);}void sta(struct student * head,char array[20],int max,int min) {struct student *p1=head;int k=0;if(strcmp(array,"maths")==0){while(p1!=NULL){if(p1->maths>=min&&p1->maths<=max)k++;p1=p1->next;}printf("数学科目在%d到%d之间的人数为:%d\n",min,max,k);}else if(strcmp(array,"english")==0){while(p1!=NULL){if(p1->english>=min&&p1->english<=max)k++;p1=p1->next;}printf("英语科目在%d到%d之间的人数为:%d\n",min,max,k); }else if(strcmp(array,"C_program")==0){while(p1!=NULL)if(p1->C_program>=min&&p1->C_program<=max)k++;p1=p1->next;}printf("C语言科目在%d到%d之间的人数为:%d\n",min,max,k); }}void exit(){printf("\t\t");printf("**********************\n");printf("\t\t");printf("*******感谢使用*******\n");printf("\t\t");printf("**********************\n");k=0;}void Chooseproject(int i){ struct student * head=NULL;if(i==1){head = read();print(head);else if(i==2){int p=1 ;printf("请选择按学号查询(1)还是按姓名查询(0):");scanf("%d",&p);while(p!=1&&p!=0){printf("输入错误!");printf("请选择学号查询(1)还是姓名查询(0)");scanf("%d",&p);}if(p==1){head = read();char num[20];printf("请输入查询的学号:\n");scanf("%s",num);head=search_num(head,num);while(strcmp(num,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n");scanf("%s",num);if(strcmp(num,"0")==0)break;head=search_num(head,num);}}else if(p==0){head = read();char name[20];printf("请输入查询的学号:\n");scanf("%s",name);head=search_name(head,name);while(strcmp(name,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n"); scanf("%s",name);if(strcmp(name,"0")==0)break;head=search_name(head,name);}}}else if(i==3){ head = read();char num[20];printf("请输入要更改的学号:\n");scanf("%s",num);getchar();head=change(head,num);print(head);while(strcmp(num,"0")!=0){printf("是否继续更改(是就输学号,否就输0):\n"); scanf("%s",num);getchar();if(strcmp(num,"0")==0)break;head=change(head,num);print(head);}}else if(i==4){head=read();add(head);}else if(i==5){char num[20];head=read();printf("请输入要删除的学号:\n");scanf("%s",num);getchar();head=del(head,num);print(head);}else if(i==6){head = read();int i;printf("\t\t");printf("************1.学号排序;********************\n");printf("\t\t");printf("************2.平均成绩排序;****************\n");printf("\t\t");printf("************3.数学成绩排序;****************\n"); printf("\t\t");printf("************4.英语成绩排序;****************\n"); printf("\t\t");printf("************5.C语言成绩排序;***************\n");printf("请输入相应的排序代号:");scanf("%d",&i);sort_down(head,i);}else if(i==7){head=read();int min,max;char subject[20];printf("\t\t");printf("************数学(maths);***************\n");printf("\t\t");printf("************英语(english);*************\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();while((strcmp(subject,"maths")!=0&&strcmp(subject,"english")!=0&&strcmp(subject,"C_pro gram")!=0)){printf("输入错误!");printf("\t\t");printf("************数学(maths);***********\n");printf("\t\t");printf("************英语(english);***********\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();}printf("请输入分数段的区间:");printf("区间上限:");scanf("%d",&max);printf("区间下限:");scanf("%d",&min);while(min>=max){printf("输入的下限大于等于上限,错误!");printf("请重新输入分数段的区间:");printf("区间上限:");scanf("%d",max);printf("区间下限:");scanf("%d",min);}sta(head,subject,max,min);}else if(i==8){printf("\t\t");printf("************************************\n");printf("\t\t");printf("**************感谢使用**************\n");printf("\t\t");printf("************************************\n");k=0;}}//选择功能void menu(){int i;printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息排序;***********\n");printf("\t\t");printf("***********7.信息统计;***********\n");printf("\t\t");printf("***********8,退出系统;***********\n");printf("请选择项目:");scanf("%d",&i);while(i<1||i>8){printf("输入错误,请重新输入:\n");printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息统计;***********\n");printf("\t\t");printf("***********7,退出系统;***********\n");printf("请重新选择项目:");scanf("%d",&i);}Chooseproject(i);}int _tmain(int argc, _TCHAR* argv[]){ struct student *head = NULL;printf("\t\t");printf("************************************************************\n");printf("\t\t");printf("*********************学生管理系***************************\n");printf("\t\t");printf("************************************************************\n" );printf("是否已经录入信息?\n");char c;printf("请输入 'y' 或 'n':");c=getchar();getchar();while(c!='n'&&c!='y'){printf("输入错误,请重新输入( 'y' 或 'n'):\n");c=getchar();getchar();}if(c=='n'){printf("请输入学生成绩:\n");head=creat();}while(k!=0){menu();}system("pause");return 0;}。
-C语言程序设计课程大型作业
• 中文窗口下拉式菜单设计 , 汉化TC2.0界面 , 只要求实现菜单 , 不要 求TC功能• BMP图象处理 , 柔化SMOOTH 、锐 化SHARPEN 、浮雕EMBOSS 、扩散 DIFFUSE和定制过滤器 。对640*480*256色图象处理
所有题目简介
图形操作简介
• #include <dos.h>• #include <conio.h>• #include <stdio.h>• #include <stdlib.h>• #include <graphics.h>
必要的头文件
• in t GraphDriver;• in t GraphMode ;• double AspectRatio;• in t MaxX, MaxY;• in t MaxColors ;• in t ErrorCode ;• struct palettetype palette ;
题目简介
* 汉诺塔的动态 演示 , 自动移 动HANIO , 要 求能输入塔盘 的数量。
题目简介
• 数据加密技术探讨 , DES加密算法 的实现 , 要求能够加密解密 , 密钥 位数可以指定。*扑克牌24点游戏 , 人机对弈 , 提供 难度选择。
题目简介
* TIC-TAC-TOE 的人机对弈,机器判断输赢。
必须的变量
GraphDriver = DETECT;in itgraph(&GraphDriver,&GraphMode,"" ) ;in itgraph(&GraphDriver,&GraphMode, ”d :\\tc" ) ;
初始化图形界面
《C语言程序的设计》大作业
南昌大学软件学院C语言程序设计工程实训大作业班级:09软件技术(2)班学号:8001509107姓名:吴承增指导老师:危建国2010年12月10日系统说明书1.问题描述:该程序包内容包括以下的模块,均用子函数完成:(1)主菜单(2)输入若干条记录并保存文件(指学生的信息)(3)学生信息录入、修改、删除、查询、存储。
(4)学生信息的浏览及排序(冒泡排序算法)。
(5)学生成绩的录入、修改。
(6)统计及格和优秀人数(7)退出系统2.程序设计和程序流程图:解决方案:主函数流程图:各部分功能的流程图:录入学生成绩流程图:统计功能流程图如图3所示:图3 统计模块流程图冒泡排序流程图:排序学生信息流程图:删除学生成绩信息流程图:3.系统的基本功能(主要数据和函数功能描述):char xh[15]; //以字符串数组形式存储学生学号char name[25]// 以字符串数组形式存储学生姓名char sex[5]; //性别float sxcj; //数学成绩float yycj; //英语成绩float Cyycj; //C语言成绩float ave; //平均成绩float sum; //总成绩#define N 4 //宏定义学生#define MAX 60 //学生最大个数int nCOUNT=0; //记录当前学生个数struct student //定义结构体学生int ScoreNew() //录入学生成绩int average() //求平均数int xsxscj() //显示输入学生信息、将学生打印到屏幕上int xsxsxx() //显示学生信息int xhcjpx() //按学生学号排序学生信息int sxcjpx()按数学成绩排序学生信息int yycjpx()按英语成绩排序学生信息int Cyypx() //按C语言成绩排序学生信息int zcjpx()按总成绩排序学生信息int pxxsxx()//排序学生信息int axhcx() //按学号查询int axmcx() //按姓名查询int SearchStud() //查询学生成绩信息int zjxsxx() //增加学生信息int xgxsxx() //修改学生信息int scxsxx() //删除学生信息int gxxscj() //更新学生信息int tjxscj() //统计学生成绩int save() //保存到文件((fp=fopen("stu_list.txt","wb"))==NULL) //以只读方式打开文件stu_list.txt (fwrite(&str[i],sizeof(struct student),1,fp)!=1) //创建文件并以二进制形式打开int xswj() //显示文件信息int main() //主函数mainmemu4.拟采用开发平台:Visual C++,Borland C++等。
c语言课程设计大作业
c语言课程设计大作业一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构和算法,具备使用C语言进行程序设计的能力。
具体目标如下:1.知识目标:学生能够理解并掌握C语言的基本语法、数据结构和常用算法。
2.技能目标:学生能够运用C语言编写简单的程序,解决实际问题。
3.情感态度价值观目标:学生能够体验到编程的乐趣,培养对计算机科学的兴趣。
二、教学内容根据课程目标,本课程的教学内容主要包括C语言的基本语法、数据结构和算法。
具体安排如下:1.C语言的基本语法:包括变量、运算符、控制结构、函数等。
2.数据结构:包括数组、链表、栈、队列、树等。
3.算法:包括排序算法、查找算法、递归算法等。
三、教学方法为了达到课程目标,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
具体方法如下:1.讲授法:用于讲解C语言的基本语法、数据结构和算法。
2.讨论法:用于引导学生探讨编程问题,培养解决问题的能力。
3.案例分析法:通过分析实际案例,使学生更好地理解C语言的应用。
4.实验法:让学生动手编写程序,提高编程能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:《C语言程序设计》。
2.参考书:提供相关的编程资料和算法教程。
3.多媒体资料:制作课件和教学视频,辅助学生学习。
4.实验设备:提供计算机实验室,让学生进行编程实践。
五、教学评估本课程的评估方式包括平时表现、作业和考试。
具体评估方式如下:1.平时表现:通过学生在课堂上的参与度、提问和讨论,评估其对C语言的理解和应用能力。
2.作业:布置编程作业,评估学生对C语言语法和算法的掌握程度。
3.考试:进行期中和期末考试,评估学生对C语言的整体掌握情况。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生掌握C语言的基本语法、数据结构和算法。
C语言200道练习题及答案
一维数组
题目1
题目2
题目3
题目4
求一维数组中的最大值 和最小值。
将一维数组中的元素逆 序存放。
查找一维数组中指定的 元素,并返回其下标。
求一维数组中所有元素 的和。
二维数组
题目5
题目6
求二维数组中所有元素的最大值和最小值 。
将二维数组转置,即行列互换。
题目7
题目8
查找二维数组中指定的元素,并返回其位 置。
C语言200道练习题 及答案
汇报人:XX
目录
• 基础知识练习题 • 数组与字符串练习题 • 函数与模块化练习题 • 指针与内存管理练习题 • 数据结构与算法练习题 • 综合应用练习题
01
基础知识练习题
变量与数据类型
声明整型变量并赋值
int a = 10;
声明字符型变量并赋值
char c = 'A';
代码优化
通过减少不必要的计算、消 除冗余代码等方式对代码进 行优化。
并行计算与多线程
了解并行计算和多线程的基 本概念,探索在程序中应用 并行计算和多线程技术提高 性能的可能性。
THANKS
感谢观看
掌握如何使用malloc()、calloc() 等函数在堆区动态分配内存空间
。
动态内存释放函数
了解如何使用free()函数释放之前 分配的内存空间,以避免内存泄漏 。
内存分配失败处理
熟悉在动态内存分配过程中,如何 处理分配失败的情况,如检查返回 值是否为NULL等。
05
数据结构与算法练习题
结构体与联合体
01
掌握如何定义指向函数的指针变量,以及如何通过函数指针调
用函数。
C语言作业——精选推荐
C语⾔作业作业1 数制与编码1.将下列⼗进制实数分别转换为⼆进制、⼋进制和⼗六进制实数:45 195 10.3125 51.8 2.将下列⼋进制和⼗六进制实数转换为⼆进制实数:(42.14)8(10.01)8(3C.24)16(7F.0E)16 3.请写出下列整数的8位⼆进制原码、反码和补码。
0 102 -15 -127 4.请写出下列整数的16位⼆进制补码(以⼗六进制形式书写)。
0 6207 -7225 -32768 5.下列16位⼆进制补码分别表⽰什么整数?00000010 10011010 11101100 010001106.⽤16位⼆进制补码形式完成下列计算:14 + (-9) = 5 (-23) + 15 = -87.下列实数的单精度存储形式是怎样的(根据Intel格式计算)?0.3125 -34.28.请写出空格、数字0、⼤写字母A和⼩写字母a等字符的ASCII码。
9.仔细观察ASCII码表, 怎样将⼩写字母转换为⼤写字母? 怎样将⼤写字母转换为⼩写字母?10.汉字“软”的区位码是4077, “件”区位码是2894, 它们的内码分别是什么?11.字符串"Welcome!"的长度是多少? 需占⽤内存空间多少字节? 最后⼀个字节是什么?12.请将下列字符串按从⼩到⼤的顺序排列:"ABC" "123" "abc""Rate1""Rate2""pen""pencil""1+2"作业2 简单的C 程序1. 物体的位移:输⼊物体的初速度v 0, 加速度a 和时间t , 计算并输出其位移。
2021at t v s += 2. 公汽车票:若乘客⾝⾼低于1.2⽶则免费, 否则收取车费2元。
3. 购物优惠活动(⼀)若顾客购物不⾜100元, 则不优惠; 购物达100元, 按九折优惠。
C语言经典练习题50道(附答案)
1.**打印Hello World**练习:编写一个C程序,打印"Hello,World!"到屏幕上。
#include<stdio.h>int main(){printf("Hello,World!\n");return0;}2.**计算两个整数的和**练习:编写一个程序,接受两个整数,然后计算它们的和并打印结果。
#include<stdio.h>int main(){int a=5,b=7;int sum=a+b;printf("Sum:%d\n",sum);return0;}3.**判断奇数或偶数**练习:编写一个程序,接受一个整数,然后判断它是否为奇数或偶数。
#include<stdio.h>int main(){int num=10;if(num%2==0){printf("%d is even.\n",num);}else{printf("%d is odd.\n",num);}return0;}4.**计算阶乘**练习:编写一个程序,计算给定整数的阶乘。
#include<stdio.h>int main(){int n=5;int factorial=1;for(int i=1;i<=n;i++){factorial*=i;}printf("Factorial of%d is%d\n",n,factorial);return0;}5.**反转字符串**练习:编写一个程序,接受一个字符串,然后反转它并打印出来。
#include<stdio.h>#include<string.h>int main(){char str[]="Hello,World!";int len=strlen(str);for(int i=len-1;i>=0;i--){printf("%c",str[i]);}printf("\n");return0;}6.**检查素数**练习:编写一个程序,判断一个整数是否为素数。
C语言编程大作业
利用main函数的参数选择是对整数进行操作还是对字符串进行操作:Handle int ---→一、整数操作Handle string ---→二、字符串操作一、整数操作(含有50个正整数(<=3位)的文件:int_input,输入1,2,3,4分别选择不同的操作)1.排序(结果存到文件int_output1)2.求中间两个数的最大公因数和最小公倍数3.统计素数的个数4.统计同构数的个数(同构数是指:它出现在它的平方数的右边),如5是其平方数25的尾数,76是其平方数5776的尾部二、字符串操作(含有50个字符串的文件:string_input,输入1,2,3,4分别选择不同的操作)1.排序(结果存到文件string_output1)2.实现每个字符串的逆置,前25个用递归,后25个用非递归(结果存到文件string_output2)3.统计单词”hello”出现的次数。
如某一行:ghhello32he,该行次数为14.在最小串中出现,而未在最大串中出现的字符形成一个新的串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符。
例如: 当min = "", max = "2467"时, u中的字符串为"1135"。
源代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#define N 50int ReadFile_Num(int*);void WriteFile_Num(char* FileName,int*,int);void sort_Num(int*,int);int CommonDivisor(int,int);int CommonMultiple(int,int);int PrimeNumber(int*,int);int TongGouShu(int*,int);int ReadFile_Str(char*,char* str[]);void WriteFile_Str(char*,char* str[],int,char* mode);void sort_Str(char* str[],int);void reverse(char* str[],int);void reverse_recursion(char* str);int SearchHello(char* str[],int);void FindMaxMin(char* str[],int,char* r[]);void ProcessString(char* r[]);int main(int argc,char* argv[]){char choice;if(2==argc){if(strcmp(argv[1],"Handle int")==0){int Data_Num[N];int len;printf("**************************整数操作**************************\n\n");len=ReadFile_Num(Data_Num);printf("请选择要进行的操作:");printf("\n1、排序\n");printf("2、求中间两个数的最大公约数和最小公倍数\n");printf("3、统计素数\n");printf("4、统计同构数\n");fflush(NULL);scanf("%c",&choice);switch(choice){case '1':{sort_Num(Data_Num,len);WriteFile_Num("int_output1.txt",Data_Num,len);printf("排序完成!!\n排序结果已存至int_output1.txt文件中...\n");break;}case '2':{int m1,m2;m1=Data_Num[(len+1)/2];m2=Data_Num[(len+1)/2+1];printf( "中间两数为: %d,%d\n",m1,m2 );printf("最大公约数为: %d\n",CommonDivisor(m1,m2));printf("最小公倍数为: %d\n",CommonMultiple(m1,m2));break;}case '3':{printf("数据中共有%d个素数\n",PrimeNumber(Data_Num,len));break;}case '4':{printf("数据文件中共有%d个同构数\n",TongGouShu(Data_Num,len));break;}default:printf("输入错误\n");}}else if(strcmp(argv[1],"Handle string")==0){char* Data_String[N];int i;int n;char choice;for(i=0;i<N;i++)Data_String[i]=(char*)malloc(sizeof(char)*256);printf("**********************字符串操作**************************\n\n");printf("1、排序\n");printf("2、字符串逆置\n");printf("3、统计hello出现的次数\n");printf("4、去除最小串中在最大串里出现过的字符\n");n=ReadFile_Str("string_input.txt",Data_String);scanf("%c",&choice);switch(choice){case '1':{sort_Str(Data_String,n);WriteFile_Str("string_output1.txt",Data_String,n,"w");break;}case '2':{char*p;int i;reverse(Data_String,n/2);for(i=0;i<n/2;i++){p=Data_String[n/2+i];reverse_recursion(p);}break;}case '3':{printf("\"hello\ 出现%d次\n",SearchHello(Data_String,n));break;}case '4':{char* r[2];FindMaxMin(Data_String,n,r);printf("最小串: %s\n",r[0]);printf("最大串: %s",r[1]);ProcessString(r);puts(r[0]);}}}else{printf("指令格式错误\n");exit(0);}}else{printf("指令格式错误\n");exit(0);}return 0;}int ReadFile_Num(int* Data_Num){int i=0;FILE* fp=NULL;if( (fp=fopen("int_input.txt","r"))==NULL ){printf("数据文件不存在\n",N);exit(0);}while(!feof(fp)){fscanf(fp,"%d",&Data_Num[i++]);fclose(fp);printf("数据文件读取完成\n");return i-1;}void WriteFile_Num(char* FileName,int* Data_Num,int n) {FILE* fp;int i;fp=fopen(FileName,"w");for(i=0;i<n;i++){fprintf(fp,"%d\n",Data_Num[i]);}fclose(fp);}void sort_Num(int* Data_Num,int len){int i,j;int t;for(i=1;i<len;i++){j=i;t=Data_Num[j];while(j!=0 && Data_Num[j-1]>t){Data_Num[j]=Data_Num[j-1];j--;}Data_Num[j]=t;}}int CommonDivisor(int a,int b){int t;while(b!=0){t=a;a=b;b=t%b;}return a;}int CommonMultiple(int a,int b){int t;if(a<b){t=a;a=b;b=t;}t=a;while(a%b!=0)a+=t;return a;}int PrimeNumber(int* Data_Num,int len)int i,j;int flag=0;int count=0;int PrimeNum[N];for(i=0;i<len;i++){flag=1;for(j=2;j<Data_Num[i];j++)if(Data_Num[i]%j==0){flag=0;break;}if(flag)PrimeNum[count++]=Data_Num[i]; }return count;}int TongGouShu(int* Data_Num,int len) {int i;int t;int end;int wei;int s;int count=0;int r[N];for(i=0;i<len;i++){end=0;wei=0;s=1;t=Data_Num[i];while(t!=0){t/=10;wei++;}t=Data_Num[i]*Data_Num[i];while(wei--!=0){end+=(t%10)*s;t/=10;s*=10;}if(end==Data_Num[i])r[count++]=Data_Num[i];}return count;}int ReadFile_Str(char* name,char* str[]) {FILE* fp;int i=0;if( (fp=fopen(name,"r") )!=NULL){while(!feof(fp))fgets(str[i++],100,fp);}elseprintf("文件%s不存在",name);fclose(fp);return i-1;}void sort_Str(char* str[],int len){int i,j;char* t;for(i=1;i<len;i++){j=i;t=str[j];while(j!=0 && strcmp(str[j-1],t) >0 ){str[j]=str[j-1];j--;}str[j]=t;}}void WriteFile_Str(char* name,char* str[],int n,char* mode){FILE* fp;int i;fp=fopen(name,mode);for(i=0;i<n;i++)fprintf(fp,"%s",str[i]);fclose(fp);}void reverse(char* str[],int n){char* buf=(char*)malloc(sizeof(char)*256);char* end;int i;int j;int len;WriteFile_Str("string_output2.txt",&buf,0,"w");for(i=0;i<n;i++){len=strlen(str[i]);end=str[i]+len-1;for(j=0;j<len;j++)buf[j]=*end--;buf[j]='\0';WriteFile_Str("string_output2.txt",&buf,1,"a");}free(buf);printf("操作完成!!\n逆置后的数据已保存至string_output2.txt文件中\n"); }void reverse_recursion(char* str){FILE* fp=fopen("string_putput2.txt","a");if(*str!='\0'){reverse_recursion(str+1);fputc(*str,fp);}fclose(fp);}int SearchHello(char* str[],int n){int i,j,k;char buf[6];char* p;int len;int count=0;for(i=0;i<n;i++){len=strlen(str[i]);if(len>=5){for(j=0;j<=len-5;j++){p=str[i]+j;for(k=0;k<5;k++)buf[k]=*p++;buf[k]='\0';if( strcmp(buf,"hello")==0 )count++;}}}return count;}void FindMaxMin(char* str[],int n,char* r[]) {int i;char* max=str[0];char* min=str[0];for(i=1;i<n;i++){if( strcmp(max,str[i])<0 )max=str[i];else if( strcmp(min,str[i])>0 )min=str[i];}r[0]=(char*)malloc(sizeof(min));r[1]=(char*)malloc(sizeof(max));strcpy(r[0],min);strcpy(r[1],max);}void ProcessString(char* r[]){char*p=r[0];char*q=r[1];char*t;int flag=1;while(*q!='\0'){flag=1;p=r[0];while(*p!='\0'){if(*p==*q){flag=0;t=p;while(*(t+1)!='\0'){*t=*(t+1);t++;}*t='\0';}elsep++;}if(flag==1)q++;}}。
c语言大作业
C语言大作业实验任务:设计一个电话薄。
源程序:#include<stdio.h>#include<string.h>#include<stdlib.h>struct person{char name[8];chartel[15];charaddr[50];};char filename[20]="txl.txt";FILE *fp;void output();/*输出模块output( ):输出通讯录中联系人通讯信息的子函数*/ void search();/*添加模块append( ):向通讯录中添加某人通讯信息的子函数*/ void append();/*查找模块search( ):在通讯录中查找某人通讯信息的子函数*/ void modify();/*修改模块modify( ):在通讯录中修改某人通讯信息的子函数*/ void del();/*删除模块delete( ):在通讯录中删除某人通讯信息的子函数*/ void main( ){int m;fp=fopen(filename,"w");fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址");fclose(fp);while(1){printf("\n\t\t*********欢迎使用通讯录信息管理系统*********\n\n"); printf("请输入功能选择:(0--5):");printf("\n\t\t添加记录,请按1");printf("\n\t\t查找记录,请按2");printf("\n\t\t修改记录,请按3");printf("\n\t\t删除记录,请按4");printf("\n\t\t输出记录,请按5");printf("\n\t\t退出,请按0\n");printf("\n\t\t********************************************\n\n");scanf("%d",&m);if(m>=0&&m<=5){switch(m){case 1: append();break;case 2: search();break;case 3: modify();break;case 4: del();break;case 5: output();break;case 0: exit(0);}printf("\n\n操作完毕,请再次选择!");}elseprintf("\n\n选择错误,请再次选择!");}}/*输出模块output( ):输出通讯录中联系人通讯信息的子函数*/ void output(){struct person one;if((fp=fopen(filename,"r"))==NULL){printf("\n不能打开通讯录!");exit(0);}printf("\n\n%20s\n","通讯录");while(!feof(fp)){fscanf(fp,"%s%s%s\n",,one.tel,one.addr);printf("%-10s%-20s%-50s",,one.tel,one.addr);}fclose(fp);}/*添加模块append( ):向通讯录中添加某人通讯信息的子函数*/ void append(){struct person one;if((fp=fopen(filename,"a"))==NULL){printf("\n不能打开通讯录!");exit(0);}printf("\n请输入添加的姓名、电话号码及住址\n");scanf("%s%s%s",,one.tel,one.addr);fprintf(fp,"%-10s%-20s%-50s\n",,one.tel,one.addr); fclose(fp);}/*查找模块search( ):在通讯录中查找某人通讯信息的子函数*/ void search(){int k=0;charnamekey[8];struct person one;printf("\n请输入姓名:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL){printf("\n不能打开通讯录!");exit(0);}while(!feof(fp)){fscanf(fp,"%s%s%s\n",,one.tel,one.addr);if(!strcmp(namekey,)){printf("\n\n已查到,记录为:");printf("\n%-10s%-18s%-50s",,one.tel,one.addr);k=1;}}if(!k)printf("\n\n对不起,通讯簿中没有此人的记录。
c语言课程设计大作业
c语言课程设计大作业一、课程目标知识目标:1. 理解C语言中数组、函数、指针等基本概念,掌握其应用方法。
2. 学会运用结构体、文件操作等C语言高级特性进行程序设计。
3. 掌握程序调试与优化的基本方法,提高代码质量。
技能目标:1. 能够根据需求,设计并实现具有实用价值的C语言程序。
2. 培养良好的编程习惯,编写规范、可读性强的代码。
3. 提高问题分析能力,能够针对实际问题设计合适的算法和数据结构。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发自主学习动力。
2. 培养学生面对困难和挑战时,保持积极心态,勇于尝试,善于合作,克服困难。
3. 增强学生的创新意识,鼓励学生敢于发表自己的观点,尊重他人的意见。
课程性质:本课程为C语言课程设计大作业,旨在巩固和拓展学生所学知识,提高实际编程能力。
学生特点:学生已具备一定的C语言基础,对编程有一定兴趣,但在实际应用中可能存在编程思路不清晰、代码规范意识不足等问题。
教学要求:结合学生特点,注重实践,引导学生从实际问题出发,培养解决复杂问题的能力。
教学过程中,注重激发学生兴趣,培养良好的编程习惯,提高团队协作能力。
通过本课程的学习,使学生在知识、技能和情感态度价值观等方面取得具体的学习成果。
二、教学内容1. 复习C语言基础知识:数组、函数、指针、控制结构等。
教材章节:第二章、第三章、第四章内容:数组的应用、函数的定义与调用、指针的概念与用法、程序流程控制。
2. C语言高级特性学习:结构体、文件操作、动态内存分配等。
教材章节:第六章、第七章、第十章内容:结构体的定义与使用、文件读写操作、动态内存分配与释放。
3. 程序设计与实现:根据实际需求,设计并实现具有实用价值的C语言程序。
教材章节:全书内容:综合运用所学知识,进行程序设计、编写代码、调试与优化。
4. 编程规范与调试技巧:培养良好的编程习惯,提高代码质量。
教材章节:附录内容:代码规范、调试方法、性能优化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验综合练习一打印万年历(1)已知公元1年1月1日是星期一,计算输入的年月日是星期几?编程如下:#include <stdio.h>void main(){int i,year,month,day,day_of_year,day_of_month;long sumday=0;printf("请先输入年、月、日,中间以空格或换行符间隔:\n");scanf("%ld%ld%ld",&year,&month,&day);for(i=1;i<=year-1;i++){if(i%400==0||i%100!=0&&i%4==0)day_of_year=366;elseday_of_year=365;sumday=sumday+day_of_year;}for(i=1;i<=month-1;i++){if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)day_of_month=31;else if(i==4||i==6||i==9||i==11)day_of_month=30;else if(i==2){if(year%400==0||year%100!=0&&year%4==0)day_of_month=29;elseday_of_month=28;}sumday=sumday+day_of_month;}sumday=sumday+day;i=sumday%7;if(i==0)i=7;printf("%ld年%ld月%ld日是星期%d\n",year,month,day,i);}为了使输出的星期为大写且将星期7变成星期天,可作如下改动:#include <stdio.h>void main(){int i,year,month,day,day_of_year,day_of_month;long sumday=0;printf("请先输入年、月、日,中间以空格或换行符间隔:\n");scanf("%ld%ld%ld",&year,&month,&day);for(i=1;i<=year-1;i++){if(i%400==0||i%100!=0&&i%4==0)day_of_year=366;elseday_of_year=365;sumday=sumday+day_of_year;}for(i=1;i<=month-1;i++){if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)day_of_month=31;else if(i==4||i==6||i==9||i==11)day_of_month=30;else if(i==2){if(year%400==0||year%100!=0&&year%4==0)day_of_month=29;elseday_of_month=28;}sumday=sumday+day_of_month;}sumday=sumday+day;i=sumday%7;switch(i){case 0: printf("%ld年%ld月%ld日是星期日",year,month,day); break;case 1: printf("%ld年%ld月%ld日是星期一",year,month,day); break;case 2: printf("%ld年%ld月%ld日是星期二",year,month,day); break;case 3: printf("%ld年%ld月%ld日是星期三",year,month,day); break;case 4: printf("%ld年%ld月%ld日是星期四",year,month,day); break;case 5: printf("%ld年%ld月%ld日是星期五",year,month,day); break;case 6: printf("%ld年%ld月%ld日是星期六",year,month,day); break;}printf("\n");}当然也可以这样编程:#include <stdio.h>int leap_year(int year){if(year%400==0 || year%100!=0 && year%4==0)return 1;elsereturn 0;}void main(){long year, month, day;char *a[7]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};printf("请先输入年、月份、日,中间以空格或换行符间隔:\n");scanf("%ld%ld%ld",&year,&month,&day);int i, xq=0,sumday=0;for(i=1;i<=year-1;i++){sumday=sumday+365+leap_year(i);}for(i=1;i<=month-1;i++){if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)sumday=sumday+31;else if(i==4||i==6||i==9||i==11)sumday=sumday+30;else if(i==2)sumday=sumday+28+leap_year(year);}sumday=sumday+day;i=sumday%7;printf("%ld年%ld月%ld日是%s\n",year,month,day,a[i]);}(2)输入年份,在屏幕上输出该年的年历(已知1900年第一天也是星期一)。
#include<stdio.h>void main(){int year,i,j,k,sumday,yuandan,weekday,day,day_of_year,day_of_month;printf("Please input the year:\n");scanf("%d",&year);printf("\n");for(i=1,sumday=0;i<=year-1990;i++){if(i%400==0||i%100!=0&&i%4==0)day_of_year=366;elseday_of_year=365;sumday=sumday+day_of_year;}yuandan=(sumday+1)%7;weekday=yuandan;printf(" 公元%d年\n",year);for(i=1;i<=12;i++){printf(" %d月\n",i);printf(" Sun Mon Tue Wed Thu Fri Sat\n");for(j=0;j<weekday;j++)printf(" ");if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)day_of_month=31;else if(i==4||i==6||i==9||i==11)day_of_month=30;else if(i==2){if(year%400==0 || year%100!=0 && year%4==0)day_of_month=29;elseday_of_month=28;}day=day_of_month;for(k=1;k<=day;k++){printf("%4d",k);weekday=(weekday+1)%7;if(weekday==0)printf("\n");}printf("\n\n");}}#include<stdio.h>void main(){int year,i,j,k,sumday,yuandan,weekday,day,day_of_year,day_of_month;printf("Please input the year:\n");scanf("%d",&year);printf("\n");for(i=1,sumday=0;i<=year-1;i++){if(i%400==0||i%100!=0&&i%4==0)day_of_year=366;elseday_of_year=365;sumday=sumday+day_of_year;}yuandan=(sumday+1)%7;weekday=yuandan;printf(" 公元%d年\n",year);for(i=1;i<=12;i++){switch(i){case 1:printf(" January\n"); break;case 2:printf(" February\n"); break;case 3:printf(" March\n"); break;case 4:printf(" April\n"); break;case 5:printf(" May\n"); break;case 6:printf(" June\n"); break;case 7:printf(" July\n"); break;case 8:printf(" August\n"); break;case 9:printf(" September\n"); break;case 10:printf(" October\n"); break;case 11:printf(" November\n"); break;case 12:printf(" December\n");break;}printf(" Sun Mon Tue Wed Thu Fri Sat\n");for(j=0;j<weekday;j++)printf(" ");if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) day_of_month=31;else if(i==4||i==6||i==9||i==11)day_of_month=30;else if(i==2){if(year%400==0 || year%100!=0 && year%4==0) day_of_month=29;elseday_of_month=28;}day=day_of_month;for(k=1;k<=day;k++){printf("%4d",k);weekday=(weekday+1)%7;if(weekday==0)printf("\n");}printf("\n");}}或者:#include<stdio.h>void main(){int year,i,j,k,sumday,yuandan,weekday,day,day_of_year,day_of_month;cha*a[13]={"","January","February","March","April","May","June","July","Au gust","September","October","November","December"};printf("Please input the year:\n");scanf("%d",&year);printf("\n");for(i=1,sumday=0;i<=year-1990;i++){if(i%400==0||i%100!=0&&i%4==0)day_of_year=366;elseday_of_year=365;sumday=sumday+day_of_year;}yuandan=(sumday+1)%7;weekday=yuandan;printf(" 公元%d年\n",year);for(i=1;i<=12;i++){printf(" %s\n”,a[i]);printf(" Sun Mon Tue Wed Thu Fri Sat\n");for(j=0;j<weekday;j++)printf(" ");if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)day_of_month=31;else if(i==4||i==6||i==9||i==11)day_of_month=30;else if(i==2){if(year%400==0 || year%100!=0 && year%4==0)day_of_month=29;elseday_of_month=28;}day=day_of_month;for(k=1;k<=day;k++){printf("%4d",k);weekday=(weekday+1)%7;if(weekday==0)printf("\n");}printf("\n\n");}}当然也可以定义函数和调用定义的函数:#include<stdio.h>int leap_year(int year){if(year%400==0 || year%100!=0 && year%4==0)return 1;elsereturn 0;}int day_of_month(int i,int year){if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)return 31;else if(i==4||i==6||i==9||i==11)return 30;else if(i==2)return 28+leap_year(year);}void main(){int year,i,j,k,sumday,firstday,weekday,day;char*a[13]={"","January","February","March","April","May","June","July","A ugust","September","October","November","December"};printf("Please input the year:\n");scanf("%d",&year);printf("\n");for(i=1,sumday=0;i<=year-1990;i++)sumday=sumday+365+leap_year(i);firstday=(sumday+1)%7;weekday=firstday;printf(" %d年\n",year);for(i=1;i<=12;i++){printf(" %s\n",a[i]);printf(" Sun Mon Tue Wed Thu Fri Sat\n");for(j=0;j<weekday;j++)printf(" ");day=day_of_month(i,year);for(k=1;k<=day;k++){printf("%4d",k);weekday=(weekday+1)%7;if(weekday==0)printf("\n");}printf("\n");}}运行结果实例如下:2001JanuarySun Mon Tue Wed Thu Fri Sat1 2 3 4 5 67 8 9 10 11 12 13……February……实验综合练习二(1)输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。