湖北理工学院C语言实验四
2012湖北理工学院计算机科学与技术c语言考试大纲

湖北理工学院计算机科学与技术专升本《C程序设计》考试相关说明1、考试科目:C程序设计2、考试教材:《C程序设计》,清华大学出版社、谭浩强主编3、专升本C程序设计考试大纲《C程序设计》是计算机专业学生的专业基础课程之一,该课程是后续课程如操作系统、数据结构等课程的先修课程,在整个教学体系中占据非常重要的地位。
结构化设计技术是建立高质量软件的技术,需要通过课程的学习和实践,不断加深对程序设计方法的理解和体会。
介绍用面向过程方法进行数据设计和程序设计的基本思想,在必要的课程实践中逐步熟练掌握。
教学考核的主要目的也在于此。
现将有关考核的几个问题说明如下:1)考核对象:专升本学生2)命题依据:本考核说明以计算机专科学生《C程序设计教学大纲》为依据编制。
本考核说明是考试命题的依据。
3)考核要求:本课程是以实用为最终目的,因此,考核的重点是考察学生对各种数据类型和三种基本结构的理解程度和基于这些知识点的掌握。
从而提高设计的能力。
具体考核要求分为几个层次:*理解:要求学生理解各种程序结构基本思想、基本概念。
*掌握:要求学生能较好地理解和运用所介绍的方法和解题思路解决问题和进行简单的算法设计,考察学生解决问题的基本能力。
*综合应用:要求学生能综合运用多个知识点的内容进行比较复杂的应用程序开发,考察学生综合解决问题的能力。
不同的综合层次将考察学生的综合能力的高低。
4)命题原则*在教学大纲和考核说明所规定的目的、要求和内容范围之内命题。
在教学内容范围之内,按照理论联系实际原则,考察学生对所学知识应用能力的试题,不属于超纲。
*试题的考察要求覆盖面广,并适当突出重点。
*试题兼顾各个能力层次,理解占40%,简单运用占40%,综合运用占20%。
*试题的难易程度和题量适当,按难易程度分为四个层次:容易占20%,较易占30%,较难占30%,难占20%。
题量安排以平时基本能够独立完成作业者,他们能在规定的考试时间内作完并有一定时间检查为原则。
湖北理工学院14本科C语言实验报告实验一 顺序结构程序设计

问题4要使上面程序的键盘输入数据格式为1,2,34,而输出语句在屏幕上显示的结果为'1', '2',34,则应修改程序中的哪条语句?怎样修改?
将scanf("%c%c%d",&a,&b,&c);
#include <stdio.h>
void main()
{
float a,b,c,s,v;
printf("Input a,b,c:");
scanf("%f %f %f", &a,&b,&c);
s=a*b;
v=a*b*c;
printf("a=%f b=%f,c=%f\n",a,b,c);
printf("s=%f,v=%f\n",s,v);
第1种输入方式:1,2,34↙(以逗号作为分隔符)
第2种输入方式:1 2 34↙(以空格作为分隔符)
第3种输入方式:1 2 34↙(以Tab键作为分隔符)
第4种输入方式:1↙
2↙
34↙(以回车符作为分隔符)
将整个程序改成
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
}
当程序执行时,屏幕的显示和要求输入形式如下:
input a,b,c:1.0 2.0 3.0此处的1.0 2.0 3.0是用户输入的数据
湖北理工学院14本科C语言实验报告实验三 循环控制

}
}
解答: (1)源代码: #include<stdio.h> void main() {
long data; scanf("%ld",&data); while(data) { printf("%ld,",data%10);
data=data/10; } }
(2)运行结果:
(3)运行结果分析:data 的定义为长整型,当输入 12345 时,while(data),则进入一个 while 循 环,先输出 12345 除以 10 的余(加一个逗号),即输出 12345 的个位数。再令 data 等于 12345 除以 10 的模,从而 data 等于 1234,再次,输出 1234 除以 10 的余(加一个逗号), 即输出 12345 的十位数。接下来依次类推,最终实现输出 5,4,3,2,1。
{ scanf("%d", &mark); if ( mark > 100 ) { printf(" Mark > 100 , Please reinput \n "); break; } if ( mark=-1) break; n ++ ; sum=sum + mark ; if( mark > max ) max = mark ; if( mark < min ) min = mark ;
2. 比较下列两个程序。(验证) #include <stdio.h> void main() { int i,n,sum=0; scanf("%d",&i); n=i; while(i<=10) { sum+=i; i++; } printf("%d+...+10=%d",n,sum); } #include <stdio.h> void main() { int i,n,sum=0; scanf("%d",&i); n=i; do { sum+=i; i++; } while(i<=10); printf("%d+...+10=%d",n,sum); }
湖北理工学院c语言实验报告实验五[策划]
![湖北理工学院c语言实验报告实验五[策划]](https://img.taocdn.com/s3/m/f562119570fe910ef12d2af90242a8956becaa73.png)
实验五函数与编译预处理实验课程名:高级语言程序设计专业班级:软件工程学号:姓名:高敏实验时间:11.25-12.2 实验地点:K4-208 指导教师:刘天印(3)运行结果分析:用Workover和reset涵数转换i的值,并输出8.上机调试下面程序,观察静态局部变量在调用过程中的变化。
#include <stdio.h>void main( ){ int i ;int f(int);for ( i = 1; i <= 5; i ++)printf( "(%d):% d\n", i,f(i));printf(" \n");}int f ( int n){ static int j = 1;j = j * n;return( j );}解答:(1)源代码:#include <stdio.h>void main( ){ int i ;int f(int);for ( i = 1; i <= 5; i ++)printf( "(%d):% d\n", i,f(i));printf(" \n");}int f ( int n){ static int j = 1;j = j * n;return( j );}(2)运行结果:(3)运行结果分析: 输出1,2,3,4,5的阶层6. 编写程序,实现由主函数输入m 、n ,按下述公式计算并输出nm C 的值。
)!(!!n m n m C n m -=(1)源代码:#include<stdio.h> void main() {int i,m,n,N;int a=1,b=1,c=1;printf("please input m n:\n"); scanf("%d%d",&m,&n); for(i=1;i<m+1;i++) a*=i;for(i=1;i<n+1;i++) b*=i;for(i=1;i<m-n+1;i++){c*=i;} N=a/(b*c);printf("%d\n",N); }(2)运行结果:(3)运行结果分析)!(!!n m n m C n m -=说明:1.电子实验报告填写好后,以学生的学号+实验项目名作为该word文件名保存,例如某学生学号为20080001,姓名为某某,本次实验名称是:实验一顺序结构程序设计,则本次实验报告的保存文件名为:01某某实验一.doc。
湖北理工(黄石理工)数据结构实验 实验四 二叉树的基本操作

实验四二叉树的基本操作实验课程名:数据结构专业班级:09计科一班学号:** 姓名:*****实验时间:12.2—12.9 实验地点:k4--206 指导教师:祁文青一、实验目的1、进一步掌握指针变量、动态变量的含义。
2、掌握二叉树的结构特性,以及各种存储结构的特点和适用范围。
3、掌握用指针类型描述、访问和处理二叉树的运算。
二、实验内容1、以二叉链表作存储结构,试编程实现前序、中序、后序及层次顺序遍历二叉树的算法。
#include<malloc.h>#include<stdio.h>#include<stdlib.h>#include<math.h>#define ClearBiTree DestroyBiTreetypedef struct BiTNode{int data;BiTNode *lchild,*rchild;}BiTNode,*BiTree;void visit(int e){printf("%d ",e);}void InitBiTree(BiTree &T){T=NULL;}void CreateBiTree(BiTree &T){int number;scanf("%d",&number);if(number==0)T=NULL;else{T=(BiTree)malloc(sizeof(BiTNode));if(!T)exit(OVERFLOW);T->data=number;CreateBiTree(T->lchild);CreateBiTree(T->rchild);}}void DestroyBiTree(BiTree &T){if(T){DestroyBiTree(T->lchild);DestroyBiTree(T->rchild);T=NULL;}}void PreOrderTraverse(BiTree T,void(*Visit)(int)) {if(T){Visit(T->data);PreOrderTraverse(T->lchild,Visit);PreOrderTraverse(T->rchild,Visit);}}void InOrderTraverse(BiTree T,void(*Visit)(int)) {if(T){InOrderTraverse(T->lchild,Visit);Visit(T->data);InOrderTraverse(T->rchild,Visit);}}void PostOrderTraverse(BiTree T,void(*Visit)(int)) {if(T){PostOrderTraverse(T->lchild,Visit);PostOrderTraverse(T->rchild,Visit);Visit(T->data);}}void main(){BiTree T;InitBiTree(T);printf("按先序次序输入二叉树中结点的值,输入0表示节点为空,输入范例:1 2 0 0 3 0 0\n");CreateBiTree(T);printf("先序递归遍历二叉树:\n");PreOrderTraverse(T,visit);printf("\n中序递归遍历二叉树:\n");InOrderTraverse(T,visit);printf("\n后序递归遍历二叉树:\n");PostOrderTraverse(T,visit);}运行结果2、以二叉链表作存储结构,试编写计算二叉树深度、所有结点总数、叶子结点数、双孩子结点个数、单孩子结点个数的算法。
武汉理工大学 工程软件实训vc

目录目录1.绪论 (2)2.设计要求 (2)3.原理分析 (2)4.程序设计 (3)4.1程序功能 (3)4.2 程序流程图 (3)4.3 程序模块介绍 (5)4.3.1 设计输入数组 (5)4.3.2 冒泡排序 (5)4.3.3 输出结果 (6)5.源程序代码 (6)6.调试及运行结果 (8)7.程序时间复杂度 (9)8.总结 (9)参考文献 (10)冒泡排序算法设计及实现1 绪论本文介绍了一种冒泡排序算法。
首先详细的分析和阐述了冒泡排序的原理,再根据原理和设计要求设计出算法,最后用C语言实现冒泡排序算法并进行调试。
2 设计要求(1)设计一个数组,随机将数字保存在该数组;(2)采用冒泡排序方法,将该数组中的数字排序;(3)将排序结果输出。
3 原理分析冒泡排序的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。
冒泡排序的过程是,首先将第一个记录的和第二个记录的关键字进行比较,若为逆序,则将两记录交换,然后比较第二个记录和及三个记录的关键字。
以此类推,直到第n-1个记录的和第n个记录的关键字进行过比较为止。
尚需过程是第一趟冒泡排序,其结果是将关键字最大的记录安置在序列的最后。
然后再进行第2趟、第3趟···冒泡排序。
下图是冒泡排序的一个实例,从图中可以看出,在冒泡排序的过程过程中,关键字较小的记录像水中的气泡一样逐渐往上漂浮,而关键字较大的记录好像十块往下沉,每趟都有一块最大的石头沉底。
图1 冒泡排序示例4 程序设计4.1 程序功能产生一个数组,能随机地输入数据并保存到数组中,能依次输出数组中刚输入的数据,实现对数组中数据的排序,以及依次输出已排序的数组数据。
4.2 程序流程图开始输入数据输出数据i=1j=0a[j]>a[j+1]a[j]与a[j+1]交换是是j<N-ii<N否输出数据结束图2程序流程图4.3 程序模块介绍4.3.1 设计输入数组首先定义一个数组a[N+1],再输入10个数据到这个数组,然后把这是个数据显示出来。
湖北理工学院c语言实验报告七答案(完整版)

湖北理工学院c语言实验报告七答案(完整版)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March实验七结构体和共用体实验课程名:高级语言程序设计(C)专业班级:学号:姓名:实验时间:实验地点:指导教师:input(stu);print(stu);}运行结果:运行结果分析:首先定义的是结构体(其中要注意结构体中数组),在定义和引用结构体数组是要注意结构体数组的引用,定义函数和引用函数要注意括号内部的变量时结构体。
2、任务名称scanf("%d", &stu[i].score[j]);}}average=0;max=0;maxi=0;for(i=0;i<3;i++){sum=0;for(j=0;j<3;j++)sum+=stu[i].score[j];stu[i].avr=sum/3.0;average+=stu[i].avr;if(sum>max){max=sum;maxi=i;}}average/=N;printf("NO. name score1 score2 score3 average\n");for(i=0;i<N;i++){printf("%5s%10s",stu[i].num, stu[i].name);for(j=0;j<3;j++)printf("%9d",stu[i].score[j]);printf("%8.2f\n",stu[i].avr);}printf("average=%6.2f\n",average);printf("The highest score is:%s,score total:%d.",stu[maxi].name,max); }运行结果:运行结果分析:输入输出时要引用结构体数组中的各种变量,弄清输入输出时的格式,要把简单的排序、求和、求平均值运用于结构体时不能搞混乱了,思路要清晰。
湖北理工学院C语言实验四

av+=a[i];
printf("av=%f\n",av);
}
解答:
(1)源代码:
#include <stdio.h>
void main( )
{
int i,n,a[10];
float avg;
n = 10;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
}
printf("\n");
return;
}
}
}
(2)运行结果:
(3)运行结果分析:
6.输入十个互不相同的整数并存在数组中,找出最大元素,并删除。
解答:
#include <stdio.h>
int main()
{
int a[10];
int i,k;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
#include <stdio.h>
void main( )
{int i, a[5], sum = 0;
scanf("%d,%d,%d,%d,%d", a );
for (i = 0; i <= 4; i ++)
sum += a[i];
printf("sum = %d \n", sum);
}
该程序中有哪些错误?如何修改?写出正确运行后的结果。
for(i=0;i<n;i++)
湖北理工单片机实验报告

湖北理工单片机实验报告实验报告实验项目名称:P1口实验同组人:实验时间:实验室:指导教师:一、实验目的:(l)学习P1口的使用方法; 熟悉Proteus软件电路设计和Keil软件程序调试方法。
(2)学习软件延时程序的编写。
重点:延时程序,P1口结构二、实验顶备知识:(l)Pl口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。
(2)Proteus软件应用,Keil软件程序调试应用。
三、实验内容:㈠模拟开关灯的Proteus仿真及C语言程序设计1、设计要求:监视开关K1(接在P3.0端口上),用发光二级管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。
2、仿真电路原理图元器件选取:①AT89C52:单片机;②RES:电阻;③CRYSTAL:晶振;④CAP、CAP-ELEC:电容、电解电容;⑤LED-GREEN:绿色发光二级管;⑥SW ITCH:开关。
模拟开关灯的电路原理图3、程序设计内容①开关状态的检测过程单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨动开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。
单片机可以采用if(K1= =1)或者if(K1= =0)指令来完成对开关状态的检测。
②输出控制当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二级管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二级管L1亮。
开始K1开关闭合了吗?L1灭L1亮模拟开关灯的程序流程图4、程序清单㈡广告灯(利用查表方式)的Protues仿真及程序设计1、设计要求:利用查表的方法,使端口P1作单一灯的变化;左移2次,右移2次,闪烁2次(延时的时间0.2 s)。
2、仿真电路原理图元器件选取:①AT89C52:单片机;②RES:电阻;③CRYSTAL:晶振;④CAP、CAP-ELEC:电容、电解电容;⑤LED-GREEN:绿色发光二级管。
c语言课程实训报告

C语言课程实训报告题目:简单计算器学院名称:湖北文理学院理工学院专业班级:计算机科学与技术学生姓名:张璟东,卢焓,王叶子,陈聪聪学号:15353118,15353111,15353120,15353122指导老师:朱艳艳一、实训目的1、进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程设计开发文档的能力(书写课程设计报告);二、内容与设计思想(请完整填写)1、系统功能与分析(填写你所设计的菜单及流程图)。
2、模块设计根据功能需要:源文件函数名:简单的计算器功能:进行简单的加减乘除平方开方立方运算3、总体设计思想:定义各种算法,再让各种字母对应各种算法,输出不同运算结果。
4、源程序清单(主要代码)# include <stdio.h># include <ctype.h># include <math.h>char get_choice(void); //获取用户输入的选项,并建立目char get_first(void); //获取用户输入的选项,并剔除错误输入float get_int(void); //获取用户输入的计算值float add(void); //定义加法函数float subtraction(void); //定义减法函数float multiplication(void); //定义乘法函数float division(void); //定义除法函数float extract(void); //定义开方函数float square(void); //定义平方函数float cube(void); //定义立方函数int count = 0;int main(void){char choice;printf("***欢迎使用计算器***\n");choice = get_choice();while(choice != 'q'){switch(choice){case 'a':add(); break;case 'b':subtraction(); break;case 'c':multiplication(); break;case 'd':division(); break;case 'e':extract(); break;case 'f':square(); break;case 'g':cube(); break;default :printf("您输入有误,请重新输入:"); break; }fflush(stdin);choice = get_choice();}printf("bye");return 0;}//获取用户输入的选项,并建立目录char get_choice(void){char ch;int a = 0;//建立目录printf("\n--------------------------------\n");printf("a. 加法\t\t\tb. 减法\nc. 乘法\t\t\td. 除法\n"); printf("e. 开方\t\t\tf. 平方\ng. 立方\t\t\tq. 退出\n"); printf("--------------------------------\n");printf("请输入你的选项:");ch = get_first();while(ch == ' ' || ch == '\n' || ch == '\t')ch = get_first();//判断用户输入的选项是否有误while((ch<'a' || ch>'g') && ch !='q'){putchar(ch);printf(" 你输入的选项有误,请重新输入:");ch = get_first();}return ch;}//获取用户输入的选项,并剔除错误输入char get_first(void){char ch;ch = getchar();//剔除由用户输入选项时产生的换行符while(ch == '\n'){ch = getchar();}return ch;}//获取用户输入的计算值float get_int(void){float input;char ch;int a;if(count == 0)printf("亲!请输入数值:");if(count == 1)printf("亲!请输入第一个数值:");if(count == 2)printf("亲!请输入第二个数值:");a = scanf("%f", &input);//判断用户的输入是否为一个数值while(a != 1){//剔除用户输入错误的字符while((ch = getchar()) != '\n'){putchar(ch);printf(" 不是一个数值,请输入例如3、111.2、或者-1");a = scanf("%f", &input);}}return input;}//定义加法函数float add(void){float i, j, sum;count = 0;count = count+1;i = get_int();count = count+1;j = get_int();sum = i + j;printf("%.2f + %.2f = %.2f\n", i, j, sum); return sum;}//定义减法函数float subtraction(void){float i, j, sum;count = 0;count = count+1;i = get_int();count = count+1;j = get_int();sum = i - j;printf("%.2f - %.2f = %.2f\n", i, j, sum); return sum;}//定义乘法函数float multiplication(void){float i, j, sum;count = 0;count = count+1;i = get_int();count = count+1;j = get_int();sum = i * j;printf("%.2f * %.2f = %.2f\n", i, j, sum); return sum;}//定义除法函数float division(void){float i, j, sum;count = 0;count = count+1;i = get_int();count = count+1;j = get_int();//判断除数是否为0while(j == 0){printf("除数不能为0\n请重新输入!!!\n"); j = get_int();}sum = i / j;printf("%.2f / %.2f = %.2f\n", i, j, sum);return sum;}//定义开方函数float extract(void){float i, sum;count = 0;i = get_int();//判断开方数是否小于0,如果小于0,则让用户重新输入 while(i < 0){printf("请输入大于0的数值\n");i = get_int();}sum = sqrt(i);printf("%.2f的开方等于%.2f\n", i, sum);return sum;}//定义平方函数float square(void){float i, sum;count = 0;i = get_int();sum = i * i;printf("%.2f的平方等于%.2f\n", i, sum);return sum;}//定义立方函数float cube(void){float i, sum;count = 0;i = get_int();sum = i * i * i;printf("%f的立方等于%.3f\n", i, sum); return sum;}2、程序有待改进的地方及本次实训的收获和建议有待改进的地方:该程序还可以再添加一些其他的功能,比如能够实现ln 、sin 、x^y 、log 、cos 等这些函数的运算,但作为一个计算器,它还不够人性化,功能也不够丰富,所以整个程序的功能有待进一步完善,让更多功能得以实现。
《C语言》实验指导书-上机编程--湖北理工学院

《C语言程序设计》实验指导书实验一顺序结构程序设计一、实验目的及要求1. 了解如何编辑、编译、连接和运行一个C程序;2. 熟悉基本类型的变量的定义;3. 掌握C语言中使用最多的一种语句——赋值语句的使用;4. 掌握数据的输入输出的方法,能正确使用各种格式转换符。
二、实验任务1.熟悉使用VC++6.0编辑、编译、连接和运行一个C程序的过程。
1)启动Visual C++,选择“文件”菜单中的“新建”命令,选择“文件”标签中的“C++ Source File”选项。
2)选择源程序存放的目录和输入源程序名,单击“确定”。
3)在编辑器中编写源程序。
4)单击F7或“编译”中的“重建全部”编译源程序,若编译通过,单击“执行”,在DOS屏上看结果,任按一键返回编辑器。
2. 输入并运行一个简单的程序。
输入下面的程序#include <stdio.h>void main(){printf(“This is a C program.\n”);}编译和连接该程序,观察屏幕上显示的编译信息。
如果出现“出错信息”,则应找出原因并改正之,再进行编译。
如果编译无错误,运行该程序,观察分析运行结果。
3. 输入并编辑一个C程序。
输入以下程序#include <stdio.h>void main(){ int a,b,sum;a=123;b=456;sum=a+b;print (“sum is %d、n”,sim);}编译改程序,仔细分析编译信息窗口,可能显示有多个错误,逐个修改,直到不出现错误。
运行程序,分析运行结果。
4. 掌握各种格式转换符的正确使用方法。
a. 输入程序#include <stdio.h>void main( ){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61; b=62;f=3157.8901121; g=0.123456789;m=50000;n=-60000;p=32768;q=40000;printf(“a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n”,a,b,c1,c2,d,e);printf(“f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u,q=%u\n”,f,q,m,n,p,q);}b. 运行此程序并分析结果。
湖北理工学院c语言实验报告实验六

实验六指针实验课程名:高级语言程序设计专业班级:学号:姓名:实验时间:12.3-12.9 实验地点:K4-202 指导教师:冯珊(3)运行结果分析:用十进制输出i j 的值或地址2.上机验证以下程序的运行结果#include <stdio.h>void main(){ int i,a[]={1,2,3},*p;p=a;/*将数组a首地址赋给指针p*/for (i=0;i<3;i++)printf("%d,%d,%d,%d\n",a[i],p[i],*(p+i),*(a+i));}解答:(1)源代码:#include <stdio.h>void main(){ int i,a[]={1,2,3},*p;p=a;/*将数组a首地址赋给指针p*/for (i=0;i<3;i++)printf("%d,%d,%d,%d\n",a[i],p[i],*(p+i),*(a+i));}(2)运行结果(3)运行结果分析:用指针和下标不同形式表示输出3.调试下列程序,使之具有如下功能:用指针法输入12个数,然后按每行4个数输出。
写出调试过程。
#include <stdio.h>void main(){ int j,a[12],*p=a;for(j=0;j<12;j++)scanf("%d",p++);p=a;for(j=1;j<=12;j++){ printf("%4d",*p++);if(j%4 == 0)printf("\n");}}解答:(1)源代码:#include <stdio.h>void main(){ int j,a[12],*p=a;for(j=0;j<12;j++)scanf("%d",p++);p=a;for(j=1;j<=12;j++){ printf("%4d",*p++);if(j%4 == 0)printf("\n");}}(2)运行结果:(3)运行结果分析:指针法输入12个数,然后按每行4个数输出4. 调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:⑴2个数的和,⑵2个数交换值。
湖北理工学院c语言实验报告实验五

实验五函数与编译预处理实验课程名:高级语言程序设计专业班级:软件工程学号:姓名:高敏实验时间:11.25-12.2 实验地点:K4-208 指导教师:刘天印{ int t;t=(i+j+k)*2;printf("t=%d\n",t);}(2)运行结果:(3)运行结果分析:f7是持行调试f8是选择调试的语句2.阅读下面程序,注意在调试时F11和F10的区别,还要注意函数调用过程中形参、实参的关系。
#include <stdio.h>void main(){ int x=10,y=20;void swap (int ,int);printf("(1)in main :x=%d,y=%d\n",x,y);swap(x,y);printf("(4)in main :x=%d,y=%d\n",x,y);}void swap (int m,int n){ int temp;printf("(2)in main :m=%d,n=%d\n",m,n);temp=m;m=n;n=temp;printf("(3)in main :m=%d,n=%d\n",m,n);}解答:(1)源代码:#include <stdio.h>void main(){ int x=10,y=20;void swap (int ,int);printf("(1)in main :x=%d,y=%d\n",x,y);swap(x,y);printf("(4)in main :x=%d,y=%d\n",x,y);}void swap (int m,int n){ int temp;printf("(2)in main :m=%d,n=%d\n",m,n);temp=m;m=n;n=temp;printf("(3)in main :m=%d,n=%d\n",m,n);}(2)运行结果:(3)运行结果分析:3.下面程序是实现求素数的,请填空完成该程序,并上机运行测试。
湖北理工单片机实验报告

湖北理工单片机实验报告一、实验目的本次单片机实验的主要目的是让我们深入了解单片机的工作原理和应用,通过实际操作和编程,掌握单片机的基本开发流程和技能,提高我们的实践动手能力和解决问题的能力。
二、实验设备本次实验所使用的设备包括:1、单片机开发板:_____型号,具备丰富的接口和资源,方便进行实验和开发。
2、计算机:安装有相应的编程软件和调试工具。
3、下载器:用于将编写好的程序下载到单片机中。
4、示波器:用于观察电信号的波形和参数。
5、万用表:用于测量电路中的电压、电流等参数。
三、实验原理单片机是一种集成了中央处理器(CPU)、存储器、输入输出接口等功能的微型计算机系统。
它通过执行预先编写好的程序,对外部输入的信号进行处理,并控制输出设备的工作状态。
在本次实验中,我们主要涉及到单片机的输入输出控制、定时器/计数器的使用、中断系统等原理。
四、实验内容与步骤(一)点亮 LED 灯1、硬件连接:将一个 LED 灯连接到单片机的某个输出引脚,通过限流电阻与电源相连。
2、软件编程:使用相应的编程语言(如C 语言),编写控制程序,使指定的输出引脚输出高电平或低电平,从而点亮或熄灭 LED 灯。
3、下载程序:将编写好的程序通过下载器下载到单片机中。
4、观察现象:观察 LED 灯的亮灭情况,验证程序的正确性。
(二)按键控制 LED 灯1、硬件连接:将按键连接到单片机的输入引脚,LED 灯连接到输出引脚。
2、软件编程:编写程序,实现当按键按下时,LED 灯状态改变(如点亮或熄灭)。
3、下载程序并测试:重复上述下载和观察步骤,验证按键控制的效果。
(三)定时器/计数器实验1、配置定时器/计数器:设置定时器/计数器的工作模式、初值等参数。
2、编写中断服务程序:当定时器/计数器溢出时,触发中断,在中断服务程序中执行相应的操作(如控制 LED 闪烁)。
3、下载和调试:将程序下载到单片机中,观察定时器/计数器的工作效果。
(四)综合实验1、设计一个综合的应用场景,如电子时钟、温度控制系统等。
武汉理工大学《C语言程序设计》实验报告答案

注:在Visual C++ 6.0编译环境中亲自调试通过,但不保证在Turbo C 中通过。
实验二 选择结构的程序设计(题目当初没抄下来,这是根据程序整理的)1.编程实现分段函数⎪⎩⎪⎨⎧<≤-+-<≤-+<≤--=2112381011030184242x x x x x x x x x y#include<stdio.h> main() { float x,y; printf("Please input x:"); scanf("%f",&x); if (x<-1||x>=2) printf("Data Error\n"); else { if (x>=-1&&x<0) y=4*x-8; if (x>=0&&x<1) y=3*x*x+10*x-1; if (x>=1&&x<2) y=8*x*x*x*x-3*x*x+2*x-1; printf("\ny=%f\n",y); } } 2. 苹果有三个等级,一级5.50元/斤,二级3.00元/斤,三级2.50元/斤。
编写程序,输入苹果的等级,购买的数量和所付的钱数,输出等级,购买的数量、应付钱数和找零。
#include<stdio.h> main() { int level; double weight,pay,money,charge; printf("Please input the level:"); scanf("%d",&level); printf("Please input the weight you want:"); scanf("%lf",&weight); printf("Please input the money you pay:"); scanf("%lf",&pay); if (level<1||level>4||weight<0) printf("Data Error\n"); else{ if (level==1) money=weight*5.50; else if (level==2) money=weight*4.20; else if (level==3) money=weight*3.00; else if (level==4) money=weight*2.50; charge=pay-money; printf("\nLevel:%d\nweight:%g\n",level,weight); printf("money:%g\ncharge:%g\n\n",money,charge); } }实验三循环结构1.编程计算1!+2!+3!+4!+5!●分别用单层循环和双层循环实现●考虑∑∑==201101iiii!和!#include<stdio.h>main(){int i,x;double j,k,sum;printf("Please input a number:");scanf("%d",&x);//用单层循环for(sum=0,j=1,i=1;i<=x;i++){j*=i;sum+=j;}printf("The result is %lf\n",sum);//用双层循环for(sum=0,i=1;i<=x;i++){for(k=1,j=1;j<=i;j++) k*=j;sum+=k;}printf("The result is %lf\n",sum);}2.共20个评委给选手评分,去掉1个最高分,去掉1个最低分,其余18名评委的平均分即选手最终得分#include <stdio.h>main(){double score,min,max,avg=0;int i;//下面是为了输入第一个数printf("Please input 20 scores...\n");printf("Score 1: ");scanf("%lf",&score);min=score;max=score;avg+=score;// 下面为了输入剩余19个数for(i=2;i<=20;i++){do{printf("Score %d: ",i);scanf("%lf",&score);}while(score<0);if(score>max) max=score;avg+=score;}avg=avg-min-max;avg/=18;printf("\nThe average score is %lf:\n",avg);}实验四数组和指针的应用1.定义一个有10元素的一位数组count,从键盘上输入8个整数,将其按从大到小的顺序排列,并将排序后的数组输出(1)数组方法#include<stdio.h>main(){int count[10],t,i,j;printf("Please input 8 numbers:\n");for(i=0;i<8;i++)scanf("%d",&count[i]);for(i=0;i<8;i++)for(j=i+1;j<8;j++)if (count[i]<count[j]){t=count[i];count[i]=count[j];count[j]=t;}printf("The sorted array is as follows:\n");for (i=0;i<8;i++)printf("%d ",count[i]);}(2)指针方法#include<stdio.h>main(){int count[10],t,i,j,*p=count;printf("Please input 8 numbers:\n");for(i=0;i<8;i++)scanf("%d",&p[i]);for(i=0;i<8;i++)for(j=i+1;j<8;j++)if (*(p+i)<*(p+j)){t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;}printf("The sorted array is as follows:\n");for (i=0;i<8;i++)printf("%d ",count[i]);}2.输入2个字符串,将二者连接并输出,再将连接后的字符串反向排列并输出,并求连接后字符串的长度#include<stdio.h>#include<string.h>main(){int i,len;char a1[51],a2[26],t[51];printf("Please input 2 strings:\n");gets(a1);gets(a2);strcat(a1,a2);printf("The joint string is: %s",a1);len=strlen(a1);printf("\nThe length of the linked string is: %d\n",len);for(i=0;i<len;i++)t[i]=a1[len-i-1];t[len]=0;strcpy(a1,t);printf("The reversed string is: %s\n",a1);}实验五函数应用的程序设计1.要求是:编写一函数,统计字符串中字母、数字、空格和其他字符的个数在主函数中输入字符串并输出统计结果值传送:#include<stdio.h>void fun(char a,int *b){if(a>='A'&&a<='Z'||a>='a'&&a<='z')b[0]++;else if(a>='0'&&a<='9')b[1]++;else if(a==32)b[2]++;else b[3]++;}main(){char a[50];int b[4],i,j,k;for(i=0;i<3;i++){for(j=0;j<4;j++)b[j]=0;printf("\nPlease input a string:\n");gets(a);k=0;while(a[k]!=0){fun(a[k],b);k++;}printf("The string have %d letters, %d numbers, %d spaces, %d other chars\n",b[0],b[1],b[2],b[3]);}}地址传递:#include<stdio.h>void fun(char *a,int *b){int i=0;while(a[i] != 0){if(a[i]>='A'&&a[i]<='Z'||a[i]>='a'&&a[i]<='z')b[0]++;else if((a[i]>='0')&&(a[i]<='9'))b[1]++;elseif(a[i]==32)b[2]++;else b[3]++;i++;}}main(){char a[50];int b[4],i,j;for(i=0;i<3;i++){for(j=0;j<4;j++)b[j]=0;printf("\nPlease input a string:\n");gets(a);fun(a,b);printf("\nThe string have %d letters, %d numbers, %d spaces, %d other chars",b[0],b[1],b[2],b[3]);}}。
2024C语言实验报告参考答案

2024C语言实验报告参考答案2024C语言实验报告参考答案实验名称:C语言实现学生信息管理系统实验目的:1、掌握C语言的基本语法和编程规范2、熟悉控制台界面的设计和输出3、理解并实现简单的用户交互和数据操作实验内容:本次实验要求用C语言实现一个简单的学生信息管理系统。
系统需要实现以下功能:1、添加学生信息2、查询学生信息3、修改学生信息4、删除学生信息5、显示所有学生信息实验步骤:步骤1:打开Visual Studio,创建一个新的控制台应用程序项目。
步骤2:在项目中添加一个名为“student_management_system.c”的源文件,并在这个文件中编写程序代码。
步骤3:在代码中定义一个结构体来表示学生信息,包括学号、姓名、年龄等信息。
步骤4:在主函数中创建一个学生信息管理系统,并实现以下功能:1、添加学生信息:提供一个用户界面,让用户输入学生信息,并将信息保存到一个数组中。
2、查询学生信息:提供一个用户界面,让用户输入要查询的学号,并在数组中查找对应的学生的信息并输出。
3、修改学生信息:提供一个用户界面,让用户输入要修改的学号和新的学生信息,并在数组中修改对应学生的信息。
4、删除学生信息:提供一个用户界面,让用户输入要删除的学号,并将该学生信息从数组中删除。
5、显示所有学生信息:提供一个用户界面,将所有学生的信息输出到控制台。
步骤5:在代码中添加必要的输入输出和错误处理代码,确保程序的正确性和健壮性。
步骤6:编译并运行程序,测试每个功能的正确性。
实验结果:本次实验成功实现了一个简单的学生信息管理系统。
通过控制台界面,用户可以添加、查询、修改、删除和显示学生信息。
程序运行稳定,错误处理效果良好。
实验总结:本次实验让我更加熟悉了C语言的基本语法和编程规范,同时也让我了解了如何实现简单的用户交互和数据操作。
通过这次实验,我不仅提高了自己的编程技能,还对控制台界面的设计和输出有了更深入的理解。
湖北理工学院c语言程序设计实验3答案

实验三循环结构程序设计实验课程名:C语言程序设计专业班级:____________学号:_______________ 姓名:___________________ 实验时间:___________ 实验地点:_______ 指导教师:_______________、实验目的和要求1.熟悉掌握用for语句,while语句和do_while语句实现循环的方法。
2.掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)printf (” 其中有 %d ( 0\n",z);printf (” 其中有%d 个负数\n",y);return 0;}2 ) 运 行 结 果(3)2、有一分数序列:2/1 , 3/2, 5/3, 8/5, 13/8 , 21/13,…。
求出这个数列的前 20项之和。
解答:(1) 源代码:#i nclude<stdio.h> int mai n(){float a=1,b=2,c,sum=0;int i;printf("2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13,…前二十项的和为");for(i=1;i<21;i++){sum=sum+b/a;c=a+b;a=b;b=c;prin tf("%.2f\n",sum);return 0;}| "C : \LSEES'-USE^&' DESKTOP ;ZHA>G HAO 7I.A5\Debj£ 1-1. txe*zF 上 231 6 1 A 莖13为冯却 干的驚15T 卞犁员有Mr 有有-S-S-B- 堂苴其片4 8 G 79 &4 34 34 岛 87 97 646 4 64 b4 b8 to 数ey 负k ■个ny uGa(2 ) 运行结果(3)运行结果分析:运行成功3、编写程序,求1! + 2 ! + 3! +…+N!的值,N的值由键盘输入。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
scanf("%f", &a);
}
ave=;
printf ("Output : \n");
printf ("ave = %f\n", ave);
for (i=0; i<n; i++)
if () printf("%f\n", x[i]);
}
解答:
(1)源代码:
#include <stdio.h>
解答:
(1)源代码:
#include <stdio.h>
#define SIZE 20
void main()
{
printf("请输入10个整数:\n");
int a[SIZE];
int n=10,i,j,k,b;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
int c;
scanf("%d",&c);
n=n+1;
for(i=0;i<n-1;i++)
{
if(c>=a[i])
{
for(j=n-1;j>i;j--)
{
a[j]=a[j-1];
}
a[i]=c;
printf("插入后的数组为:\n");
for(k=0;k<n;k++)
{
printf(" %d ",a[k]);
#include <stdio.h>
#define N 10
voidmain( )
{ int i,a[N],av;
for(i=0;i<N;i++)
scanf("%d",a[i]);
for(i=0;i<N;i++)
{ printf("%d",a[i]);
if(i%3==0)
printf("\n");
}
char str1[100],str2[100];
scanf("%s%s",str1,str2);
strcpy(a,strlen(str1)<strlen(str2)?str1:str2);
strcpy(b,strlen(str1)>strlen(str2)?str1:str2);
printf("a = %s\n",a);
while((str1[i]==str2[i])&&(str1[i]!=(2)))
i++;
s=(3);
printf("%d\n",s);
}
解答:
(1)源代码:
#include <stdio.h>
void main ( )
{ char str1[100],str2[100];
printf("b = %s\n",b);
}
(2)运行结果:
(3)运行结果分析:
10.阅读下面的程序,然后回答后面的问题:
#include <stdio.h>
#include <string.h>
void main( )
{char s1[80], s2[40];
int i = 0, j = 0;
printf(" \n Please input string1:");
if(c>d)
for(k=0;k<d;k++)
{ ch=a[k];a[k]=b[k];b[k]=ch;}
printf("a=%s\n",a);
printf("b=%s\n",b);
}
解答:
(1)源代码:
#include<stdio.h>
#include<string.h>
void main()
{
char a[100],b[100];
{
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
b=a[i];
a[i]=a[j];
a[j]=b;
}
}
}
printf("排序后的数为:\n");
for(i=0;i<n;i++)
{
printf(" %d ",a[i]);
}
printf("\n");
printf("请输入要插入的一个数:\n");
scanf("%s", s1);
printf(" \n Please input string2:");
scanf("%s", s2);
while (s1[i]!= '\0' )
i++;
while (s2[j]!= '\0' )
s1[i++]=s2[j ++];
s1[i]= '\0';
printf("\n New string: %s", s1);
for(i=0;i!=N;i++)
av+=a[i];
printf("av=%f\n",av);
}
解答:
(1)源代码:
#include <stdio.h>
void main( )
{
int i,n,a[10];
float avg;
n = 10;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
}
ave= sum/n ;
printf ("Output : \n");
printf ("ave = %f\n", ave);
for (i=0; i<n; i++)
if (x[i]<ave )
printf("%f\n", x[i]);
}
(2)运行结果:
(3)运行结果分析:
8.综合编程题:打印如下杨辉三角形
void main( )
{
float x[1000], sum=0.0, ave, a;
int n=0, i;
printf ("Enter mark : \n");
scanf("%f", &a);
while (a>=0.0 && n<1000)
{
sum+=a ;
x[n]=a ;
n++;
scanf("%f", &a);
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max){max源自a[i][j];row=i;
colum=j;
}
printf("max=%d,row=%d,colum=%d\n",max,row,colum);
}
(2)运行结果:
(3)运行结果分析:
实验四数 组
实验课程名:C语言程序设计
专业班级:学号:姓名:
实验时间:实验地点:K4-102指导教师:杨慧
一、实验目的和要求
1.掌握一维数组和二维数组的定义、赋值和输入输出的方法;
2.掌握字符数组和字符串函数的使用;
3.掌握与数组有关的算法(特别是排序算法)。
二、实验内容
1.调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。写出调试过程。
#include <stdio.h>
void main( )
{int i, a[5], sum = 0;
scanf("%d,%d,%d,%d,%d", a );
for (i = 0; i <= 4; i ++)
sum += a[i];
printf("sum = %d \n", sum);
}
该程序中有哪些错误?如何修改?写出正确运行后的结果。
if(x==a[i])
{
printf("%d",i); break;
}
if(i==10)
printf("not found\n");
}
(2)运行结果:
(3)运行结果分析:
5.编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。
#include <stdio.h>
voidmain( )
{ float x[1000], sum=0.0, ave, a;
int n=0, i;
printf ("Enter mark : \n") ;
scanf("%f", &a);