C语言实验报告
《C语言程序设计实训1》报告设计题目:基于数组的学生信息管理系统学院名称:信息科学技术学院专业:计算机科学与技术班级:姓名:学号指导教师:提交日期:2014年12月22日一、实验内容编写并调试程序,实现学校各专业班级学生信息的管理。
10个学生的信息存储在文件studentInit.dat 中。
在头文件student.h 中定义学生信息的结构体类型,包括:学号、姓名、专业、班级、3门成绩;和符号常量N (学生数)。
(同一班级的学生可以属于不同的专业,同一专业的学生可以属于不同的班级)二、实验要求(1) main 函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数。
STU student[N]; //保存输入的N 名学生信息(2) 定义函数void Input(STU *p, int n):从文件sutdentInit 中输入n 个学生的信息。
(3) 定义函数void Output(STU *p):将p 所指的某个学生信息表格化屏幕输出。
(4) 定义函数STU Fetch(int studentIndex):从文件中随机读取第studentIndex个(0<= studentIndex <=N-1)学生的信息。
(5)定义函数void Search(STU *p, int classNo, char s, int scoreSum);:实现班级和成绩的综合查找(如1班,总分>240的同学)。
(6)定义函数int Max(STU *p, int scoreIndex):求所有学生、下标为scoreIndex的课程分数最高的学生序号(在数组中的下标),学生序号作为返回值。
(7)定义函数void Sort_select(STU *p):对所有学生,按平均成绩由低到高进行简单选择排序。
(8)定义函数void Sort_buble(STU *p, int n); 对某个班级的学生,按平均成绩由高到低进行起泡排序。
并调用Output输出。
定义局部变量:STU stu_class_ave[N]; //按平均成绩排序后的某个班级的学生信息;int count; //实际元素个数(9)定义函数void Sort_insert(STU *p, int n, char *major):对某个专业的学生,按某门课程成绩由低到高进行直接插入排序。
并调用Output 输出。
定义局部变量:STU stu_class_ subject [N]; //按某门课程成绩排序后的某个专业的学生信息;int count; //实际元素个数(10)定义函数void Save(STU *p,int n):将学生信息存入文件。
四、程序清单(关键语句和变量加注释)1.头文件,类型定义,函数声明#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 10struct Student{char num[15];char name[15];char major[10];int classNo;int score[3];};typedef struct Student STU;void Input(STU * p,int n);//从文件sutdentInit中输入n个学生的信息void Output(STU * p);//将p所指的某个学生信息表格化屏幕输出STU Fetch(int studentIndex);//从文件中随机读取第studentIndex个(0<= studentIndex <=N-1)学生的信息void Search(STU * p,int classNo,char s,int scoresum);//实现班级和成绩的综合查找(如1班,总分>240的同学)int Max(STU * p,int scoreIndex);//求所有学生、下标为scoreIndex 的课程分数最高的学生序号(在数组中的下标),学生序号作为返回值void Sort_select(STU * p);//对所有学生,按平均成绩由低到高进行简单选择排序void Sort_buble(STU * p,int n);//对某个班级的学生,按平均成绩由高到低进行起泡排序void Sort_insert(STU * p,int n,char * major);//对某个专业的学生,按某门课程成绩由低到高进行直接插入排序void Save(STU * p,int n);//将学生信息存入文件2.主函数#include "student.h"void main(){int i,n,id,num,m,sub,corse;//n,第几个结构体;id,菜单序号;num,班级号;sub,学生下标;corse,课程下标char majorname;//专业名称STU students[N];STU tem;while(1){printf("\n请输入功能编号,运行相应功能\n");printf("\n1.您将从文件中读取10个人的信\n");printf("\n2.您将从文件中随机读取第n(0<=n<=9)个学生的信息\n")printf("\n3.您将根据某一班级某一专业总分超过多少进行查找\n");printf("\n4.您将求某一课程分数最高的学生序号的下标\n");printf("\n5.您将对平均成绩由低到高进行简单选择排序法\n ");printf("\n6.您将对某一个班的平均成绩由低到高进行起泡排序法\n");printf("\n7.您将对某门专业的学生的某门课程成绩由低到高进行直接插入排序法\n");printf("\n8.您将把学生信息存入文件\n");scanf("%d",&id);getchar();switch(id){case 1:{printf("\n从文件中读取信息\n");Input(students,sizeof(students)/sizeof(STU));//调用Input函数,sizeof(students)/sizeof(STU)表示要读取几个学生的信息printf("\n学号姓名专业班级课程1课程2 课程3\n");for(i=0;i<N;i++)Output(students+i);//调用Output函数break;}case 2:{printf("\n请输入您想从文件中读取第几个结构体信息(<%d)\n",N);scanf("%d",&n);tem=Fetch(n);//Fetchprintf("\n下面是第%d个结构体的信息\n",n);printf("\n学号姓名专业班级课程1课程2 课程3\n");Output(&tem);//调用Output函数break;}case 3:{printf("\n请输入班级号num(1或2)\n");printf("\n请输入专业名称majorname(computer=c,software=s,network=n)\n");printf("\n请输入一个分数m(0<m<300)\n");scanf("%d",&num);getchar();scanf("%c",&majorname);getchar();scanf("%d",&m);Search(students,num,majorname,m);//调用Search函数break;}case 4:{printf("\n请输入某一课程下标corse(0,1,2)\n");scanf("%d",&corse);sub=Max(students,corse);//调用Max函数,返回值给subprintf("\n下面是课程%d最高分学生的信息\n",corse);printf("\n学号姓名专业班级课程0课程1 课程2\n");Output(students+sub);//调用Output函数break;}case 5:{printf("\n下面是对所有学生的平均成绩简单选择排序后的顺序:\n");Sort_select(students);//调用Sort_select函数break;}case 6:{printf("\n请输入一个班级号num(1或2)\n");scanf("%d",&num);printf("\n下面是对某个班级起泡排序后顺序:\n");Sort_buble(students,num);//调用Sort_buble函数break;}case 7:{printf("\n请输入某一课程下标corse(0,1,2)\n");printf("\n请输入专业名称majorname(computer=c,software=s,network=n)\n");scanf("%d",&corse);getchar();scanf("%c",&majorname);printf("\n下面是对某一专业学生的某一课程直接插入排序后的顺序:\n");Sort_insert(students,corse,&majorname);//调用Sort_insert函数break;}case 8:{Save(students,sizeof(students)/sizeof(STU));//调用Save函数,sizeof(students)/sizeof(STU)表示要保存几个学生的信息break;}default:{break;}if((id<1)||(id>8))break;}}}3.Input函数#include "student.h"void Input(STU * p,int n){FILE * fp;char filename[15];printf("\n请输入打开文件名:\n");gets(filename);fp=fopen(filename,"r");fread(p,sizeof(STU),n,fp);fclose(fp);}4.Output函数#include "student.h"void Output(STU * p){printf("\n%-5s%-10s%-8s%6d%6d%7d%7d\n",p->num,p->name,p->ma jor,p->classNo,p->score[0],p->score[1],p->score[2]);}5.Fetch函数#include "student.h"STU Fetch(int studentIndex){STU tem;FILE * fp;char filename[15];if((studentIndex<0)||(studentIndex>N-1)){printf("studentIndex error\n");exit(0);}getchar();printf("\n请输入打开文件名:\n");gets(filename);fp=fopen(filename,"r");fseek(fp,(long)(studentIndex*sizeof(STU)),SEEK_SET);fread(&tem,sizeof(STU),1,fp);fclose(fp);return tem;}6.Search函数#include "student.h"void Search(STU * p,int classNo,char s,int scoreSum){int i;for(i=0;i<N;i++){if((p+i)->classNo==classNo)if((p+i)->major[0]==s)if(((p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2])>scoreSum){printf("\n下面是班级%d专业%c超过%d分的学生信息\n",classNo,s,scoreSum);printf("\n学号姓名专业班级课程1 课程2 课程3\n");Output(p+i);}}}7.Max函数#include "student.h"int Max(STU * p,int scoreIndex){int i=0,max,result;max=(p+i)->score[scoreIndex];result=i;for(i=1;i<N;i++){if((p+i)->score[scoreIndex]>max){max=(p+i)->score[scoreIndex];result=i;}}return result;}8. Sort_select函数#include "student.h"void Sort_select(STU * p){int i,j,k;float sum,ave[N],t;STU tem;for(i=0;i<N;i++){sum=0.0;sum=sum+(p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2];ave[i]=sum/3;}for(i=0;i<N-1;i++){k=i;for(j=k+1;j<N;j++){if(ave[j]<ave[k])k=j;}t=ave[k];ave[k]=ave[i];ave[i]=t;tem=*(p+k);*(p+k)=*(p+i);*(p+i)=tem;}printf("\n学号姓名专业班级课程1 课程2 课程3\n");for(i=0;i<N;i++)Output(p+i);}9. Sort_buble函数#include "student.h"void Sort_buble(STU * p,int n){STU stu_class_ave[N],tem;int i,j=0,count=0;float sum,ave[N],t;for(i=0;i<N;i++)if((p+i)->classNo==n){count++;stu_class_ave[j]=*(p+i);j++;sum=0.0;sum=sum+(p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2];ave[i]=sum/3;}for(i=0;i<count-1;i++)for(j=0;j<count-i-1;j++)if(ave[j]>ave[j+1]){t=ave[j];ave[j]=ave[j+1];ave[j+1]=t;tem=stu_class_ave[j];stu_class_ave[j]=stu_class_ave[j+1];stu_class_ave[j+1]=tem;}printf("\n学号姓名专业班级课程1 课程2 课程3\n");for(j=0;j<count;j++)Output(stu_class_ave+j);}10. Sort_insert函数#include "student.h"void Sort_insert(STU * p,int n,char * major){STU stu_class_subject[N];int i=0,j=1,count=0;for(i=0;i<N;i++)if(* major==(p+i)->major[0]){count++;stu_class_subject[j]=* (p+i);j++;}for(i=2;i<=count;i++){stu_class_subject[0]=stu_class_subject[i];for(j=i-1;stu_class_subject[0].score[n]<stu_class_subject [j].score[n];j--)stu_class_subject[j+1]=stu_class_subject[j];stu_class_subject[j+1]=stu_class_subject[0];}printf("\n学号姓名专业班级课程1 课程2 课程3\n");for(j=1;j<=count;j++)Output(stu_class_subject+j);}11. Save函数#include "student.h"void Save(STU * p,int n){FILE * fp;char filename[15];int i;printf("\n请输入保存的文件名:\n");gets(filename);if((fp=fopen(filename,"wb"))==NULL){printf("cannot open file\n");return;}for(i=0;i<n;i++){if(fwrite(p++,sizeof(STU),1,fp)!=1)printf("file write error\n");}五、程序测试(Input、Search、Max、Sort_buble、Sort_insert函数的调用及执行结果的截图)1.Input 函数2.Search函数3.Max函数4.Sort_buble函数5.Sort_insert函数。
C语言实验五实验报告——数组
C语言实验五实验报告——数组一、实验目的:1.了解数组的概念和基本使用方法;2.掌握一维数组和二维数组的定义、初始化、赋值及基本运算实现;二、实验内容与方法1.理论部分数组是一些具有相同类型的数据元素按一定顺序排列组合而成的集合,在程序设计中它是一个变量列表,由若干相同数据类型的元素组成。
通常用一个名字和一个下标来表示,下标可理解为数组元素在数组中的位置编号。
数组的特点:数组是根据顺序排列的元素的集合;所有的元素必须是相同类型。
数组的定义方法:1. 定义数组,数组元素类型 + 数组名[元素的个数];2. 元素的个数必须是整型常量或变量,定义时必须明确、指定元素的个数;3. 声明一个数组时,除了要指定数组的类型外,还要指定数组的名称;4. 数组定义完后,需要对其中的每个元素进行初始化。
可以在定义数组时赋初值,也可以通过赋值符号,对数组元素逐个进行赋值。
数组的初始化:1. 元素个数之间用逗号分开,最后1个元素后无逗号;2. 支持部分元素初始化;3. 定义和初始化可以一步完成。
二维数组数组可分为一维和多维数组。
一维数组可以看作是包含多个元素的向量,而二维数组可以看做是包含了多个一维数组的矩阵。
二维数组有行号和列号,因此,它同样需要两个下标。
数组元素类型数组名[行数][列数];数组元素类型数组名[ ][ ] = { {元素1, 元素2, ……}, {元素1, 元素2, ……}, ……{元素1, 元素2, ……}}2.实验代码**问题1:**定义一个一维数组a,包含有5个元素,分别为1,2,3,4,5;**问题2:**定义一个一维数组a,接收用户从键盘输入的5个数值,分别打印存储的各个元素。
三、实验结果与分析结果分析:定义了一个5个元素的一维数组a,并初始化了各个元素的值,其元素分别为1,2,3,4,5.循环遍历一遍数组a,并打印数组元素。
程序执行正常。
3.针对问题3:定义一个二维数组a,由4行3列组成,每个元素初始化为0,打印存储的各个元素;程序运行结果如下:四、实验总结:该实验主要是通过对C语言数组的理论知识和基本操作进行练习,加深了对数组的了解和掌握。
C语言程序设计实验实验报告7
C语言程序设计实验实验报告7实验名称:链表实现学生信息管理系统实验目的:通过设计链表实现学生信息管理系统,掌握链表的操作方法及其应用。
实验内容:设计一个学生信息结构体,包括学号、姓名、性别、年龄和成绩五个成员变量,并选择链式结构存储这些数据。
实现以下功能:1. 添加学生信息:从键盘输入学号、姓名、性别、年龄和成绩等信息,添加到链表中。
2. 删除学生信息:从链表中删除指定学号的学生信息。
5. 按成绩排序:按学生的成绩从高到低排序,并输出所有学生的信息。
7. 退出程序:退出学生信息管理系统。
实验方法:1. 设计学生信息结构体,定义链表节点结构体,并编写初始化链表和销毁链表的函数。
2. 编写添加学生信息函数,新建链表节点并插入链表末尾。
3. 编写删除学生信息函数,根据学号查找需要删除的节点,先将该节点从链表中删除,再释放节点空间。
4. 编写修改学生信息函数,根据学号查找需要修改的节点,并修改其成员变量。
6. 编写按成绩排序函数,使用冒泡排序法对链表进行排序,并输出所有学生的信息。
7. 编写输出所有学生信息函数,遍历链表并输出每个节点的信息。
8. 完成学生信息管理系统的主函数,实现菜单及相应功能的选择。
实验结果:依次选择菜单中的各个功能,添加、修改、删除、查找、排序和输出学生信息都能实现。
经测试,程序稳定运行,功能正常,符合需求。
本次实验主要让我们掌握了链式结构的概念、链表节点的定义、链表的初始化、插入、查找、删除和销毁链表的操作方法,以及在实际应用中如何使用链表来实现数据管理。
虽然链表操作相对于数组稍微有些繁琐,但其可以灵活处理数据结构的长度变化,具有更高的可扩展性和更好的操作效率,可以更好的适应各种实际需求。
在实验中,还需要注意节点指针的正确使用、各个函数之间的调用关系和输入输出数据格式的合理选择等问题,以保证程序能够正常运行。
同时,还需要保持认真细致的态度,严格按照实验需求和要求来完成每个步骤,以达到更好的实验效果和运行效率。
C语言程序设计
C语言程序设计上机实验报告实验一一、实验名称: C程序的运行环境和运行C程序的方法二、实验目的:了解在C编译系统上如何编辑、编译、连接和运行一个C程序三、实验内容:(1). 输入并运行一个简单的C程序。
(2). 设计程序,对给定的两个数求和。
(3). 设计程序,对给定的两个数进行比较,然后输出其中较大的数。
四、源程序代码:代码1:#include<stdio.h>int main(){printf("hello world!\n");return 0;}运行结果1:程序分析1:代码2:#include<stdio.h> int main(){int a=5,b=6,c;c=a+b;printf("c=%d\n",c);return 0;}运行结果2:程序分析2:代码3:#include<stdio.h>int main(){int a=5,b=6,c;if(a>b){c=a;}else{c=b;}printf("%d\n",c);return 0;}运行结果3:程序分析3:五.实验总结C语言程序设计上机实验报告实验二一、实验名称:顺序结构程序设计二、实验目的:正确使用常用运算符(算术运算符、赋值运算符)的用法,熟练掌握算术运算符及其表达式,逻辑运算符和逻辑表达式。
三、实验内容:(1). 编写程序,实现小写字母转大写。
(2). 编写程序,实现输入两个不同类型数据后,经过适当的运算(加、减、乘、除)后输出。
(3). 编写程序,计算三角形面积、立方体的体积和表面积、圆的面积和周长。
(4). 编写程序,实现单字符getchar和putchar输入输出。
(5). 编写程序,实现十进制、八进制、十六进制不同数制的输出。
四、源程序代码代码1:#include<stdio.h>int main(){char c1,c2;c1=getchar();printf("%c,%d\n",c1,c1);c2=c1-32;printf("%c,%d\n",c2,c2);return 0;}运行结果1:程序分析1:代码2:#include<stdio.h>int main(){int a=5,c1,c2;double b=3.141592653,c3,c4;c1=a/b;c3=a/b;c2=a+b;c4=a+b;printf("%d,%d,%lf,%lf\n",c1,c2,c3,c4);return 0;}运行结果2:程序分析2:代码3:#include<stdio.h>int main(){here: printf("计算三角形的面积请输入‘1’,立方体的体积和表面积请输入‘2’,圆的面积和周长请输入‘3’.\n");int a;scanf("%d",&a);if(a==1){double l,h,s;printf("请输入三角形的底边长和所在底边的高.");scanf("%lf%lf",&l,&h);s=l*h/2;printf("三角形的面积为%.16f\n",s);}else if(a==2){printf("请输入立方体的长宽高.");double b,c,d,v,s;scanf("%lf%lf%lf",&b,&c,&d);v=b*c*d;s=b*c+b*d+c*d;printf("立方体的体积为%.16f,表面积为%.16f\n",v,s);}else{double r,s,c,m;printf("请输入圆的半径");scanf("%lf",&r);m=3.141592653;s=m*r*r;c=2*m*r;printf("圆的面积为%.16f,圆的周长为%.16f\n",s,c);}goto here;}运行结果3:程序分析3:代码4:#include<stdio.h> int main(){getchar();putchar('b');return 0;}运行结果4:程序分析4:代码5:#include<stdio.h>int main(){int a;printf("请输入任意十进制整数:");scanf("%d",&a);printf("转换为八进制数为:%o\n转化为十六进制数为:%x\n",a,a); return 0;}运行结果5:程序分析5:五、实验总结C语言程序设计上机实验报告实验三一、实验名称:选择结构程序设计二、实验目的:正确使用逻辑运算符和逻辑表达式,熟练掌握if 语句和switch 语句,学习调试程序。
c语言实验报告实验
c语言实验报告实验C 语言实验报告实验一、实验目的本次 C 语言实验的主要目的是通过实际操作和编程实践,加深对 C 语言基本语法、数据类型、控制结构、数组、指针等重要概念的理解和掌握,提高编程能力和解决实际问题的能力。
二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。
三、实验内容1、基本数据类型和运算符的使用定义不同类型的变量,如整数型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和运算操作。
熟悉各种运算符的优先级和结合性,包括算术运算符(+、、、/、%)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。
2、控制结构的应用使用ifelse 语句实现条件判断,根据不同的条件执行相应的代码块。
运用 switch 语句进行多分支选择,处理不同的情况。
利用 for 循环、while 循环和 dowhile 循环实现重复执行的操作,例如计算数列的和、打印特定的图案等。
3、数组和字符串的操作定义和使用一维数组、二维数组,进行数组元素的访问、赋值和遍历。
掌握字符串的存储和处理方式,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)进行字符串的操作。
4、指针的应用理解指针的概念和指针变量的定义,通过指针访问变量和数组元素。
实现指针与数组、指针与函数的结合使用,体会指针在程序中的灵活运用。
5、函数的定义和调用编写自定义函数,实现特定的功能,如计算阶乘、判断素数等。
掌握函数的参数传递方式(值传递和地址传递),理解函数的返回值。
6、结构体和共用体的使用定义结构体类型,创建结构体变量,访问结构体成员。
了解共用体的概念和使用场景,比较结构体和共用体的区别。
四、实验步骤1、实验准备打开 Visual Studio 2019 开发环境,创建一个新的 C 语言项目。
C语言实训总结报告范文(通用5篇)
C语言实训总结报告范文(通用5篇)在经济飞速发展的今天,报告的适用范围越来越广泛,报告包含标题、正文、结尾等。
一听到写报告马上头昏脑涨?以下是小编整理的C语言实训总结报告范文,仅供参考,希望能够帮助到大家。
C语言实训总结报告篇1这个星期,我们迎来了C语言实训——一次至为重要的实训。
在这个星期里,同学们都很认真的做着那20多道实训题目,遇到不懂的互相请教,或请问老师。
非常感谢老师对我们的帮助,这次实训使我受益匪浅,收获了很多。
通过C语言实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。
不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。
这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。
如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。
C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。
比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到老师不在身边的时候也可以完成一些简单的程序编写与错误排除。
还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。
通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。
c语言程序设计_实验一实验报告
实验项目名称:实验一C 语言的运行环境的使用实验目的及要求:1. 了解 Windows 系统下 C 语言的运行环境,熟悉 C 程序编辑、调试、运行的基本操作方法。
2. 熟练掌握编辑、编译、连接和运行 C 程序的方法。
3. 通过运行简单的 C 程序,初步了解 C 源程序的特点。
4. 初步理解 C 语言的数据类型,了解变量定义、变量赋值以及简单运算方法,了解程序运行结果的基本输出方法。
实验内容(方法和步骤):1、编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for程序代码:#include <stdio.h>int main(){printf("Hello,World!\n");printf("Welcome to the C language world!\n");printf(Everyone has been waiting for.\n");return 0;}运行结果:2、编写程序,将两个整数相加,并输出结果。
程序代码:#include <stdio.h>int main(){int a,b,c;a=12;b=26;c=a+b;printf("c=%d\n",c);return 0";}运行结果:3. 编写程序,要求从键盘输入2 个整数,输出其中较大的数程序代码:#include <stdio.h>int main(){int max(int x,int y);int a,b,c;scanf("%d,%d",&a,&b);c=max(a,b);pintf("max=%d",c);return 0;}int max(int x,int y){ int z;if (x>y) z=x;else z=y;return(z);}运行结果:4.输入并运行下程序,观察运行结果。
c语言实验报告3
实验一C程序设计入门1.编程输出‚我的信息‛;#include <stdio.h>main(){printf("My Information:\n");printf("姓名:李坤\n性别:女\n专业名称:通信工程\n课程名称:高级语言程序设计实验\n");}2.编程:定义一个名为all的整型变量并为其赋值100。
分别计算all 的两倍及其平方,用文字什么的输出结果;#include <stdio.h>main(){int all=100;int x,y;x=2*all;y=all*all;printf("all的两倍是:%d\n all的平方是:%d\n",x,y);}3.编程求以下表达式的值;#include <stdio.h>#include <math.h>main(){float x;x=23+(pow(16,2)-15)/(9+14);printf("x=%.4f\n",x);}4.编程计算以下表达式的值(要求:分别定义一个int和float类型的变量,计算的结果存入该二变量并输出,分析结果)#include <stdio.h>main(){int x;float y;x=3/2+4/3+5/4+6/5;y=3.0/2+4.0/3+5.0/4+6.0/5;printf("x=%d\ny=%.4f\n",x,y);}实验二数据类型、常量变量及顺序结构程序设计1.输入两个人的身高,计算并输出他们的平均身高。
(结果保留两位小数)#include <stdio.h>main(){float x,a,b;printf("Input the height:");scanf("%f%f",&a,&b);x=(a+b)/2;printf("The average height is:%.2f\n",x);}2。
《C语言程序设计》实验报告实验六
《C语言程序设计》实验报告实验六使用指针的程序设计学号姓名一、实验目的1、掌握指针的概念,会定义和使用指针变量;2、能正确使用数组的指针和指向数组的指针变量;3、熟悉指针作为函数参数的定义和调用方法;4、能正确使用字符串的指针和指向字符串的指针变量。
二、实验内容1.分析下面的程序并上机运行程序,要求写出3组以上程序的运行结果。
#include <stdio.h>void main(){int *p1,*p2,*p;int a,b;printf("Input a b please");scanf("%d%d",&a,&b);p1=&a;p2=&b;if(a>b){ p=p1;p1=p2;p2=p;}printf("*p1=%d, *p2=%d\n",*p1,*p2);printf("a=%d, b=%d\n",a,b);}『运行结果:』输入1,2得:*p1=1,*p2=2a=1,b=2输入2,1得:*p1=1,*p2=2a=2,b=1输入56,123得:*p1=56,*p2=123a=56,b=1232.下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。
形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even 返回偶数之和。
请在下面空白处将实现这一功能的函数完善,并且调试运行出结果。
#include <stdio.h>#define N 10void fun(int *a,int n,int *odd,int *even){int m;*odd=0; *even=0;for(m=0;m<n;m++)if(*(a+m)%2==0)*even+=*(a+m);else*odd+=*(a+m);}void main(){int a[N]={1,10,2,3,19,6},i,n=6,odd,even;printf("The original data is:\n");for(i=0;i<n;i++)printf("%5d",*(a+i));printf("\n\n");fun(a,n,&odd,&even);printf("The sum of odd numbers:%d\n",odd);printf("The sum of even number:%d\n",even);}『运行结果:』3.编程实现从键盘输入一个字符ch和一个字符串str,利用字符指针实现删除字符串str中和字符ch相等所有字符,然后输出字符串str。
c语言实验报告
计算机软件技术基础实验报告实验一:线性表的排序与查找一.实验内容a)键盘输入一组无序数据,添加到线性表中;b)排序线性表并输出排序结果;c)键盘输入一个数,并插入到排好序的线性表中(要求插入后的表仍为有序表),输出结果;d)键盘输入一个数,并从线性表中删除相应的数据,输出结果。
二,源程序// Experiment1。
cpp :定义控制台应用程序的入口点。
//#include "stdafx.h”#include "iostream”#include 〈conio。
h〉// 程序实现有各种方法,这里给出一个实例。
// 定义一个线性表const int nMaxSize = 15;// 最大值int nLen = 0; // 表中元素个数int nLinearList[nMaxSize];// 定义操作void LSort();void LOut();void LInsert(int n);void LDelete(int n);int main(int argc,TCHAR*argv[]){// 输入数据并放入线性表中printf(”Pleas e input data\n"); // std::cout 〈< "Please input data\n”;int nIn = 0;for (int i = 1; i <= 10;i++){scanf(”%d”,&nIn);// std::cin >〉nIn;nLinearList[i] = nIn;nLen++;}LSort();// 排序线性表LOut();// 输出结果printf(”Please input a data to i nsert \n”);scanf(”%d”,&nIn);LInsert(nIn);// 输入一个数字,并插入到线性表中LOut();printf(”Please input a data to delete \n");scanf("%d”,&nIn);LDelete(nIn);// 输入一个数字,并从线性表中删除LOut();char chTmp;printf(”Please input a char to finish this program.");chTmp = getch();return 0;}void LSort()// 冒泡排序,由大到小{int j,F,k,M;F=nLen;while(F〉0){k=F-1;F=0;for(j=1;j<=k;j++){if(nLinearList[j]〈nLinearList[j+1]){M=nLinearList[j];nLinearList[j]=nLinearList[j+1];nLinearList[j+1]=M;F=j;}}}}void LOut(){printf("\n”);for (int i = 1;i 〈= nLen;i++){printf( "%d, ", nLinearList[i]);}printf(”\n”);}void LInsert(int n){int i,j;i=1;while (i<nLen){ if(nLinearList[i]〈=n){nLen++;for(j=nLen;j>=i;j—-)nLinearList[j+1]=nLinearList[j];nLinearList[i]=n;break;}i++;}}void LDelete(int n){int i,j;for(i=1;i<=nLen;i++){if(nLinearList[i]==n){for(j=i;j〈=(nLen—1);j++)nLinearList[j]=nLinearList[j+1];nLen—-;break;}}}三运行结果实验2:栈与队列的应用一.实验内容a)键盘输入算数表达式,并放入队列当中;b)应用栈的概念设计表达式求值算法;输出表达式求值结果二.源程序// Experiment2。
c语言实验报告结果及分析
c语言实验报告结果及分析#### 一、实验目的1. 学习如何使用函数;2. 了解函数的作用;3. 掌握C语言程序中函数的实现方法;4. 深入理解函数调用和参数传递。
#### 二、实验内容本次实验完成了一个函数factorial,它的作用是计算一个整数的阶乘。
实验代码:```c#include <stdio.h>int factorial(int n) //函数声明{int i; //定义变量int product = 1; //初始化变量for(i = 1; i<=n; i++) //循环语句{product *=i;}return product; //返回结果}int main(){int num;scanf("%d",&num); //输入变量printf("%d\n",factorial(num)); //调用函数return 0;}```#### 三、实验结果实验运行结果:实验结果验证了函数factorial的功能,它计算出了正确的结果:输入5,计算出120;输入4,计算出24。
#### 四、实验分析1. 在实验代码中,我们首先定义了一个函数factorial,并给出了它的参数n和返回值product。
然后,运用循环语句把参数n的各个数相乘,取得最终结果product,并用return语句把结果返回。
2. 然后,在进入main函数时,我们用scanf传入变量num,然后调用factorial函数计算num的阶乘,将结果用printf输出,这就完成了整个程序的工作。
3. 本实验验证了函数factorial的功能,完成了整数的阶乘计算任务,并且符合了性能要求,每次输入及计算结果都符合预期,可以满足实际使用需求。
