C语言实验报告参考源代码

合集下载

C语言程序设计

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语言)实验报告2022-2022学年第二学期2022年级专业班级:学号:姓名:一、实验题目:循环结构程序设计二、实验目的:(略)三、实验内容1.程序验证(略)2。

程序设计1)找出100-900之间的无暇素数。

所谓无暇素数是指本身为素数,且其逆序数也是素数的数。

例如:113是一个素数,311也是一个素数,113就是无暇素数。

源代码:运行结果:intbsingle100_u900(inTV)/*这是一个用户定义的函数,用于判断它是否是介于100和900之间的素数*/{inti;如果(v%2);elsereturn0;for(i=3;i<=v/2;i+=2)if(v%i);elsereturn0;return1;}voidmain(){inta,b,c,d,e,w;对于(a=101;a<=900;a+=2){c=a/100;d=a/10;e=a;w=100*e+10*d+c;if(bsingle100_900(a)&&bsingle100_900(w))printf(\}}2)编程:用迭代法求一个数的平方根。

平方根的迭代公式如下:xn+1=(xn+A/xn)/2;设置x0=A/2;当迭代相邻两项差的绝对值小于10-5时,迭代结束。

源代码:运行结果:#include#includeintmain(){doublex1,x2,a;intf;Printf(\请输入a:\scanf(\X1=a/2;x2=0;F=0;while(1){x1=(x1+a/x1)/2;if(f)break;如果(abs(x1-x2)<1e-5)f=1;x2=x1;}printf(\}华北水利学院高级语言程序设计(C语言)实验报告2021--2021学年第二学期2021级专业班级:学号:姓名:3)写一个问答游戏。

计算机在10到100之间进行四次运算,每个问题得10分,用户给出答案。

实验数据处理C语言源代码

实验数据处理C语言源代码

实验数据处理C语言源代码#include#include#include#include#define MAX 20typedef struct wuli{float d[MAX];char name[10];int LEN;float ccha[MAX]; /*残差数组*/float avg; /*data的平均值*/double sx; /*标准偏差Sx*/double DU; /*总不确定度*/}wulidata;wulidata *InputData();void average(wulidata *wl);void YCZhi(wulidata *wl);void CanCha(wulidata *wl);void BZPianCha(wulidata *wl);/*标准偏差*/void BQDdu(wulidata *wl);/*总不确定度*/void rage(wulidata *wl);void output(wulidata *wl);/*----------------------------------------------------------*/void line(){int i;printf("\n");for(i=0;i<74;i++)printf("=");printf("\n");}/*-------------------------------------------------------*/wulidata *InputData(){int i=0,k;float da;char Z=0;wulidata *wl;wl=(wulidata *)malloc(sizeof(wulidata));printf("请为你要处理的数据起一个名字:");scanf("%s",wl->name);printf("\n下面请你输入数据%s具体数值,数据不能超过MAX个\n",wl->name);printf("当name='#'时输入结束\n");do{printf("%s%d=",wl->name,i+1);scanf("%f",&da);wl->d[i]=da;i++;if(getchar()=='#') break;}while(wl->d[i-1]!=0.0&&iwl->LEN=i-1;do{printf("你输入的数据如下:\n");for(i=0;iLEN;i++)printf("%s%d=%f\t",wl->name,i+1,wl->d[i]);printf("\n你是否要作出修改(Y/N)?");while( getchar()!='\n');Z=getchar();if( Z=='y'||Z=='Y'){printf("你须要修改哪一个元素,请输入其标号i=(1~%d)\n",wl->LEN);while( getchar()!='\n');scanf("%d",&k);printf("\n%s%d=",wl->name,k);scanf("%f",&(wl->d[k-1]));}else if(Z=='n'||Z=='N')printf("OK!下面开始计算。

C语言程序设计实验及代码

C语言程序设计实验及代码

C语言程序设计实验及代码随着计算机技术的快速发展,C语言作为一种高效且强大的编程语言,被广泛应用于软件开发、嵌入式系统以及科学计算等领域。

在学习C语言编程的过程中,进行实验并编写相应的代码是非常重要的一部分,可以帮助我们巩固所学的知识并提高编程能力。

本文将介绍几个常见的C语言程序设计实验,并给出相应的代码示例。

一、实验一:Hello, World!实验目的:熟悉C语言编程环境,掌握简单的编译和运行操作。

实验内容:编写一个简单的程序,在屏幕上输出"Hello, World!"。

代码示例:```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```二、实验二:求两个整数的和与差实验目的:学习C语言中的基本数据类型和算术运算符的使用。

实验内容:编写一个程序,输入两个整数并计算它们的和与差,然后输出结果。

代码示例:```c#include <stdio.h>int main() {int num1, num2, sum, diff;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;diff = num1 - num2;printf("两数之和:%d\n", sum);printf("两数之差:%d\n", diff);return 0;}```三、实验三:判断一个数是奇数还是偶数实验目的:学习C语言中的分支语句的使用。

实验内容:编写一个程序,输入一个整数,并判断它是奇数还是偶数,然后输出结果。

代码示例:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数。

c语言实验报告参考源代码

c语言实验报告参考源代码

实验5三种基本结构的综合应用4.一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。

例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。

试求[100,999]之内的所有逆向超级素数的个数。

#include "stdio.h"main(){int i,j,k,m,p,q,n=0;for(i=100;i<=999;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j>=i) /*三位数是素数时*/{k=i%100; /*去掉百位数字*/if(k>=10) /*十位数字不是0时*/{for(m=2;m<k;m++)if(k%m==0)break;if(m>=k) /*两位数是素数时*/{p=i%10; /*p为个位数字*/for(q=2;q<p;q++)if(p%q==0)break;if(q>=p)n++;}}}}printf("%d\n",n);}Key:575.求[2,400]中相差为10的相邻素数对的对数。

#include "stdio.h"main(){int i,j,k,m,p,q,n=0;for(i=2;i<=400;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j>=i) /*i是素数时*/{for(k=i+1;k<i+10;k++){for(m=2;m<k;m++)if(k%m==0)break;/*k不是素数时终止if语句的内层循环*/if(m>=k)break;} /*k是素数时终止if语句的外层循环*/if(k>=i+10) /*[i+1,i+9]不是素数时*/{for(q=2;q<k;q++)if(k%q==0)break;if(q>=k) /*i+10是素数时*/n++;}}}printf("%d\n",n);}Key:56.求[1,21]范围内的梅森尼数#include "math.h"main(){long n,k=2,m,p,q;for(n=2;n<=21;n++){ k=k*2; p=k-1;m=sqrt(p);for(q=2;q<=m;q++)if(p%q==0) break;if(q>m) printf("%5ld",n);}}Key: 2 3 5 7 13 17 197.求1000以内的亲密数对main(){int a,b,n,m,q,p;for(a=1;a<1000;a++){n=0;for(q=1;q<=a/2;q++)if(a%q==0) n+=q;for(b=a;b<=1000;b++){ m=0;for(p=1;p<=b/2;p++)if(b%p==0) m+=p;if(a==m&&b==n) printf("%5d%5d",a,b);}}}/*Key:6 6 28 28 220 284 496 496*/实验6 数组及其应用3.由N个有序整数组成的数列已放在一维数组中,下列给定程序中函数fun的功能是:利用折半查找法查找整数m在数组中的位置。

c语言课程设计+报告+源代码

c语言课程设计+报告+源代码

西安郵電大學C语言课程设计报告题目: 职工工资管理系统院系名称: 计算机学院专业名称: 软件工程班级:学生姓名:学号(8位):指导教师:设计起止时间: 2013年06月03日~2013年06月12日一.设计目的1.通过本课程设计, 强化上机动手能力, 使学生在理论和实践的基础上进一步巩固《c语言程序设计》课程学习的内容, 掌握工程软件设计的基本方法.2.学会将知识应用于实际的方法, 提高分析和解决问题的能力, 增加综合能力.3.为后续各门计算机课程的学习打下坚实基础; 为毕业设计和以后工作打下必要基础。

二.设计内容本设计主要包括了用户登录和主菜单,其中用户登录包括了一下几个功能1.新用户的注.2.用户登.3。

用户密码的修改。

而主菜单包括: 1.职工信息的录.2.职工信息的修.3.选择性排.4.统计人数和工.5. 输出现有的信.6.自定义查询信息。

三. 概要设计1. 功能模块图;1.2. 各个模块详细的功能描述。

2.修改密码的时候, 需要输入原密码, 并且输入两次新的密码必须相同才能完成密码的修改。

3.用户登录: 需要输入用户名和密码, 如果用户名不存在或密码错误会给出相应的提醒, 当输入正确的时候会进入主菜单。

4.新用户注册:需要输入注册的用户和密码, 如果用户明已被注册过会给出相应的提醒。

5.职工信息的输入:是从无开始输入职工的信息, 同样也会给出输入内容的提醒, 当输入最后一次职工的信息为零时结束输入, 同是会将输入的信息写入到文件里。

6.修改职工信息其中包括a.添加职工信息和输入职工信息相同在添加完会提醒是否继续添加。

b.修改员工信息: 此时会出现选择性修改职工的哪项信息,先进行选择再进行修改。

C.删除员工信息: 需要输入所要删除员工的姓名或id进行删除!如果删除不成功或者删除者不存在会给出相应的提醒。

7.统计信息: 会自动的统计现有员工的总人数和现有员工的总工资。

8.输出现有职工的信息: 会显示现在记录的职工的各项信息。

c语言实验报告三答案(完整版)

c语言实验报告三答案(完整版)

实验三循环控制实验课程名:高级语言程序设计(C)专业班级:学号:姓名:实验时间:实验地点:指导教师:一、实验目的和要求1. 熟练掌握用while语句、do while语句和for语句实现循环的方法。

2. 掌握在程序设计中用循的方法实现一些常用算法。

并进一步学习调试程序的方法。

二、实验内容1、任务名称程序c40101.c求1+…+100,填空,实现该功能。

(1、)源代码:#include<stdio.h>int main(){int s,i;s=0;for(i=1;i<=100;i++)s=s+i;printf("1+2+...+100=%d\n",s);return 0;}运行结果:(需要截图)(2、)源代码:#include<stdio.h>int main(){int s=0,i=1;while(i<=100){s+=i;i++;}printf("1+2+...+100=%d\n",s);return 0;}运行结果:运行结果分析:2、任务名称:分别运行这两个程序,若输入7,这两个程序的结果分别是多少?若输入12,这两个程序的结果又分别是多少?比较为什么会有这样的区别?(1、)源代码:#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",n,sum);}运行结果:(需要截图)(2、)源代码:#include <stdio.h>int main(){ int i,n,sum=0;scanf("%d",&i);n=i;do{ sum+=i;i++;} while(i<=10);printf("%d+...+10=%d\n",n,sum);return 0;}运行结果:运行结果分析:3、任务名称:下面程序,若输入12345,分析输出结果是多少?源代码:#include <stdio.h>void main( ){ long data;scanf("%ld",&data);while(data){ printf("%ld,",data%10);data=data/10;}}运行结果:(需要截图)运行结果分析:4、任务名称:程序c40104.c 实现求Fibonacci 数列的前n 个数。

c语言课程设计报告及其源代码

c语言课程设计报告及其源代码

西安郵電學院C语言课程设计报告书系部名称通信工程系学生姓名王子源专业名称通信工程专业班级通工0901班学号03091001指导教师衡霞2010年06月07日至时间2010年06月18日实验题目学生宿舍管理系统一、实验目的通过进行计算机实践,更加系统地理解和掌握C语言的基本概念、语言特点和编程技巧。

利用系统提供的标准函数和自定义函数进行程序设计,培养利用C语言设计综合程序的能力。

二、实验内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。

进一步掌握各种函数的应用。

三、需求分析本学生信息管理系统包含输入记录,显示记录,按房间号排序并显示,按学号排序并显示,插入一条记录按学号排序并显示,按姓名查找,删除一条记录,查找并显示一个记录,查找并修改一个记录,从文件中读入数据,循环写入数据等功能.需求分析:输入记录(Input)显示记录(Display)按房间号排序并显示(Sort_by_roomnum)按学号排序并显示(Sort_by_num)插入一条记录按学号排序并显示(Insert_a_record)按姓名查找,删除一条记录(Delete_a_record)查找并显示一个记录(Query_a_record)查找并修改一个记录(Change_a_record)从文件中读入数据(AddfromText)循环写入数据(WritetoText)四.概要设计1.系统分析功能模块图:总目录以及下属的各个模块,这样可以使得程序的书写脉络清晰流畅。

程序结构图2、模块功能说明(1)输入记录模块(Input):用于输入学生的各项信息(2)显示记录模块(Display):按照输入的顺序显示出每个学生的各项信息(3)按房间号排序并显示模块(Sort_by_roomnum):按照房间号顺序显示每个学生信息(4)按学号排序并显示模块(Sort_by_num):按照学号顺序显示每个学生信息(5)插入一条记录按学号排序并显示模块(Insert_a_record):插入一条记录并按学号显示出所有记录。

c语言实验报告

c语言实验报告

c语⾔实验报告⼀、实验内容1. 调试教材例10.1 ⾄例10.6,仔细分析程序和运⾏结果,理解程序每⼀⾏代码。

2. 完成《C程序设计(第四版)学习辅导》实验12 ⽂件操作 (P267)。

⼆、实验⽬的学习对⽂件的输⼊输出三、实验过程与步骤(1)使⽤Visual C++建⽴⼀个控制台⼯程(2)在⼯程中建⽴源⽂件并编写程序(3)编程后编译,若出现编译错误则应该检查错误并改正(4)运⾏程序并观察结果并记录四、程序分析例10-1从键盘输⼊⼀些字符,逐个把它们送到磁盘上去,直到⽤户输⼊⼀个“#”为⽌#include#includeint main(){FILE*fp;char ch,filename[10];printf("请输⼊所⽤的⽂件名:");scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL) //打开输出⽂件并使fp指向此⽂件{printf("⽆法打开此⽂件\n"); //如果打开时出错,就输⼊“打不开”的信息exit(0); //终⽌程序}ch=getchar(); //⽤来接收最后输⼊的回车符printf("请输⼊⼀个准备存储到磁盘的字符串(以#结束):");ch=getchar(); //接收从键盘输⼊的第⼀个字符while(ch!='#') //当输⼊‘#’时结束循环{fputc(ch,fp); //向磁盘⽂件输出⼀个字符putchar(ch); //将输出的字符显⽰在屏幕上ch=getchar(); //再接收从键盘输⼊的⼀个字符}fclose(fp);putchar(10); //关闭⽂件return 0; //向屏幕输出⼀个换⾏符}实验结果:例10-2将⼀个磁盘⽂件中的信息复制到另⼀个磁盘⽂件中。

今要求将上例建⽴的file1.dat⽂件中的内容复制到另⼀个磁盘⽂件file2.dat 中。

c语言实验报告

c语言实验报告

华北水利水电大学C语言程序设计实验报告2014--2015学年第二学期 2014 级材料成型及控制工程专业班级:学号姓名:一、实验题目:顺序结构二、实验目的:(略)三、实验内容1. 程序验证(略)2.程序设计1)编写程序,已知圆半径radius=,求圆周长和面积。

源代码:运行结果:#include <>#define PIvoid main( ){float r,c,s;r=;c=2*PI*r;s=PI*r*r;printf("c=%f,s=%f\n",c,s);}2)编写程序完成单个字母的大小写转换。

源代码:运行结果#include<>void main( ){char c;c='a';c=c-32;printf("%c",c);}3)任意从键盘输入一个三位整数,要求正确分离出它的个位、十位和百位数,并分别在屏幕上显示。

源代码:#include <> 运行结果:void main(){int i,j,k,t;scanf("%d",&t);i=t%10;j=t/10%10;k=t/100;printf("i=%d,j=%d,k=%d",i,j,k);}(1)设变量a、b、c分别存放从键盘输入3个整数。

编写程序,按从大到小的顺序排列这3个整数,使a成为最大的,c成为最小的,并且按序输出这3个整数。

源代码:运行结果:#include <>int main (){int a,b,c,t;scanf("%d%d%d",&a,&b,&c);if(a<b){t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}if(c>b){t=c;c=b;b=t;}printf("%d%5d%5d\n",a,b,c);return 0;}(2)输入某学生的考试成绩等级A、B 、C、 D,要求按照等级输出对应的分数段。

数据结构c语言版实验及源代码

数据结构c语言版实验及源代码

实验1 求两个多项式的相加运算(线性表)编写一个程序用单链表存储多项式,并实现两个多项式相加的函数。

/*文件名:实验1.cpp*/#include <stdio.h>#include <malloc.h>#define MAX 20 /*多项式最多项数*/typedef struct /*定义存放多项式的数组类型*/{float coef; /*系数*/int exp; /*指数*/} PolyArray[MAX];typedef struct pnode /*定义单链表结点类型*/{float coef; /*系数*/int exp; /*指数*/struct pnode *next;} PolyNode;void DispPoly(PolyNode *L) /*输出多项式*/{PolyNode *p=L->next;while (p!=NULL){printf("%gX^%d ",p->coef,p->exp);p=p->next;}printf("\n");}void CreateListR(PolyNode *&L,PolyArray a,int n) /*尾插法建表*/{PolyNode *s,*r;int i;L=(PolyNode *)malloc(sizeof(PolyNode)); /*创建头结点*/L->next=NULL;r=L; /*r始终指向终端结点,开始时指向头结点*/ for (i=0;i<n;i++){s=(PolyNode *)malloc(sizeof(PolyNode));/*创建新结点*/s->coef=a[i].coef;s->exp=a[i].exp;r->next=s; /*将*s插入*r之后*/r=s;}r->next=NULL; /*终端结点next域置为NULL*/}void Sort(PolyNode *&head) /*按exp域递减排序*/{PolyNode *p=head->next,*q,*r;if (p!=NULL) /*若原单链表中有一个或以上的数据结点*/ {r=p->next; /*r保存*p结点后继结点的指针*/p->next=NULL; /*构造只含一个数据结点的有序表*/p=r;while (p!=NULL){r=p->next; /*r保存*p结点后继结点的指针*/q=head;while (q->next!=NULL && q->next->exp>p->exp)q=q->next; /*在有序表中找插入*p的前驱结点*q*/ p->next=q->next; /*将*p插入到*q之后*/q->next=p;p=r;}}}void Add(PolyNode *ha,PolyNode *hb,PolyNode *&hc) /*求两有序集合的并*/ {PolyNode *pa=ha->next,*pb=hb->next,*s,*tc;float c;hc=(PolyNode *)malloc(sizeof(PolyNode)); /*创建头结点*/tc=hc;while (pa!=NULL && pb!=NULL){if (pa->exp>pb->exp){s=(PolyNode *)malloc(sizeof(PolyNode)); /*复制结点*/s->exp=pa->exp;s->coef=pa->coef;tc->next=s;tc=s;pa=pa->next;}else if (pa->exp<pb->exp){s=(PolyNode *)malloc(sizeof(PolyNode)); /*复制结点*/s->exp=pb->exp;s->coef=pb->coef;tc->next=s;tc=s;pb=pb->next;}else /*pa->exp=pb->exp*/{c=pa->coef+pb->coef;if (c!=0) /*系数之和不为0时创建新结点*/{s=(PolyNode *)malloc(sizeof(PolyNode)); /*复制结点*/s->exp=pa->exp;s->coef=c;tc->next=s;tc=s;}pa=pa->next;pb=pb->next;}}if (pb!=NULL) pa=pb; /*复制余下的结点*/while (pa!=NULL){s=(PolyNode *)malloc(sizeof(PolyNode)); /*复制结点*/s->exp=pa->exp;s->coef=pa->coef;tc->next=s;tc=s;pa=pa->next;}tc->next=NULL;}void main(){PolyNode *ha,*hb,*hc;PolyArray a={{1.2,0},{2.5,1},{3.2,3},{-2.5,5}};PolyArray b={{-1.2,0},{2.5,1},{3.2,3},{2.5,5},{5.4,10}};CreateListR(ha,a,4);CreateListR(hb,b,5);printf("原多项式A: ");DispPoly(ha);printf("原多项式B: ");DispPoly(hb);Sort(ha);Sort(hb);printf("有序多项式A: ");DispPoly(ha);printf("有序多项式B: ");DispPoly(hb);Add(ha,hb,hc);printf("多项式相加: ");DispPoly(hc);}实验2 求解迷宫问题的所有路径 及最短路径程序(堆栈) 改进教材中3.2.4节中的求解迷宫问题程序,要求输出如图所示的迷宫的所有路径,并求出最短路径成都及最短路径。

C语言课内实验报告(含源代码)

C语言课内实验报告(含源代码)

一、实验内容。

1、求1000以内的所有互满数,并显示输出。

所谓互满数是指:有两个数,每一个数的所有约数(除它本身外)之和等于对方,则称这两个数为互满数。

要求:根据功能分解出独立的函数实现。

2、从键盘输入8个学生三门课的成绩,求每个学生各门课的平均成绩,并按平均分从高到低的顺序输出每个学生各门课和平均成绩。

要求:函数1完成成绩的输入;函数2完成平均分的求解;函数3完成成绩的排序;函数4完成成绩的输出;二、概要设计。

(流程图)三、详细设计。

1、//求1000以内的互满数,#include<stdio.h>human(int x){int i,sum=0;for(i=1;i<=x/2;i++)if(x%i==0)sum+=i;return(sum);}main(){int m,n;for(n=1;n<1000;n++)for(m=n+1;m<=1000;m++)if(human(n)==m&&human(m)==n)printf("1000以内的互满数有:%d ,%d\n",n,m);}2、#include<stdio.h>void input(int x[8][3]){int i;printf("请分别输入8个同学的三门成绩:\n");for(i=0;i<8;i++)// printf("请输入第%d个同学的三门成绩:");scanf("%d %d %d",&x[i][0],&x[i][1],&x[i][2]);}void ave( int x[8][3], float average[8] ){int i,j;float sum;for(i=0;i<8;i++){sum=0;for(j=0;j<3;j++)sum+=x[i][j];average[i]=sum/3;}}void sort( int x[8][3] ,float average[8] ){int i,j,k,t[3]={0};float y;for(i=0;i<7;i++)for(j=i+1;j<8;j++)if(average[i]<average[j]){for(k=0;k<3;k++){t[k]=x[i][k];x[i][k]=x[j][k];x[j][k]=t[k];}y=average[i];average[i]=average[j];average[j]=y;}}void output(int x[8][3], float average[8] ){int i;printf("\n排序后的成绩为:");printf("\n第一门第二门第三门平均分\n");for(i=0;i<8;i++){printf("%4d %6d %6d ",x[i][0],x[i][1],x[i][2]);printf("%6.1f\n",average[i]);}}main(){ int C[8][3]={0};float average[8]={0};input(C);ave(C,average);sort(C,average);output(C,average);}四、测试数据几运行结果。

C语言程序设计实验指导(源代码)

C语言程序设计实验指导(源代码)

《C语言程序设计》实验源程序代码目录实验二顺序结构程序设计(上) (2)实验三顺序结构程序设计(下) (2)实验四选择结构程序设计(上) (4)实验五选择结构程序设计(下) (4)实验六循环结构程序设计(上) (5)实验七循环结构程序设计(下) (6)实验八函数 (8)实验九数组(上) (9)实验十数组(下) (11)实验十一指针的应用 (12)实验十二结构体 (14)实验十三文件操作 (17)实验二顺序结构程序设计(上)//1-1void main(){ int a=1;printf("1:%d\n", sizeof(a));printf("2:%d\n", sizeof(float));printf("3:%d\n", sizeof(2.0*10));printf("4: %d\n", sizeof("Liu Dehua"));}//1-2-------------------------------------------------------- #include <stdio.h>void main(){ int a1=65,a2,a3;char ch='A'+1;printf("1:\101 \x42 C\n");printf("2:I say:\"How are you?\"\n");printf("3:\t\\\\Display Hello! I am Tom\b!\n");printf("4:65/10=%d,65%%10=%d\n",65/10, 65%10);printf("5:a1=%d,a1=\'%c\'\n",a1,a1);printf("6:ch=%c,ch=%d\n",ch,ch);a2=2,a3=(a1=3,a2+=a1,a1*a2);printf("7:a1=%d,a2=%d,a3=%d\n",a1,a2,a3);a3=a2=a1=2;printf("8:%d,%d,%d\n",(a1,a2+1),a3+2,a1+a2+a3);}//2------------------------------------------------------------#include <stdio.h>void main(){ float c,f;printf("请输入一个华氏温度:\n");scanf("%f",f);c==(5/9)*(f-32);printf("摄氏温度为:%5.2f\n"c);}实验三顺序结构程序设计(下)//1-1#include "stdio.h"void main(){ char ch=65;int a=1234;long g=12345678;float f=123.456789f;double d=9.876543E2;printf("1:%d,%c,%5d,%3c\n",ch,ch,ch,ch);printf("2:%8d,%-8d,%o,%x\n",a,a,a,a);printf("3:%10.3f,%f,%e\n",f,f,f);printf("4:%-10.2lf,%lf,%le\n",d,d,d);printf("5:%10s,%10.3s\n","Hello,world!","Hello,world!");}//1-2#include <stdio.h>main(){ int a,b,c;a=getchar();b=getchar();c=getchar();printf("a=%d b=%d c=%d\n",a,b,c);printf("a=%c b=%c c=%c\n",a,b,c);}//1-3---------------------------------------------------------------------------------------#include "stdio.h"void main(){int a=10,b;int *p; // p为指向整型变量的指针变量 printf("1:a的值=%d, a的内存地址值=%d\n",a, &a); //&a:获取变量a的内存地址值p=&a; //将变量a的内存地址值赋给指针变量p printf("2:p的值=%d, p的内存地址值=%d,p所指向的内存单元的值=%d\n",p,&p,*p);scanf("%d,%d" ,p,&b); //运行时输入100,200【enter】printf("3:a的值=%d,b的值=%d,p所指向的内存单元的值=%d\n",a,b,*p);}//3-3-----------------------------------------------------------#include <stdio.h>#include <math.h> //包含数学函数库void main(){ double a,b,c,p,s;printf("输入三角形三边a,b,c: ");scanf("%lf,%lf,%lf",&a,&b,&c);if(a+b>c && b+c>a && a+c>b) //判断该三边的值是否能构成一个三角形{ p= ;s=sqrt( ); //sqrt():求平方根函数printf("三角形面积=%lf\n",s);}elseprintf("三边(a=%lf,b=%lf,c=%lf)不能构成三角形! ",a,b,c);}实验四选择结构程序设计(上)//2#include <stdio.h>void main(){ char ch,c1,c2;printf("Enter a character:");ch=getchar();if((ch>='A')||(ch<='Z')&& (ch>='a')||(ch<='z'))c1=ch-1;c2=ch+1;if(ch='A'&&ch=’a’) c1=ch+25;else if(ch='Z'&&ch=’z’) c2=ch-25;putchar(c1);putchar(ch);putchar(c2);putchar('\n');}实验五选择结构程序设计(下)//1#include "stdio.h"void main(){ char m;printf(“input the month number:\n”);scanf (“%c”,&m);switch (m){case 1 : printf ("Jan");case 2 : printf ("Feb");case 3 : printf ("Mar");case 4 : printf ("Apr");else : printf ("error");}}//2----------------------------------------------------------------------- #include <stdio.h>void main(){ int a,b,d;char ch;printf("Please input a expression:");scanf("%d%c%d", );switch(ch){ case '+': printf("%d+%d=%d\n",a,b,a+b);break;case '-': printf("%d-%d=%d\n",a,b,a-b);break;case '*': printf("%d*%d=%d\n",a,b,a*b);break;case '/': if( )printf("Divisor is zero\n");elseprintf("%d/%d=%lf\n",a,b, a/b); /*强制类型转换*/;default: printf("Input Operator error!\n");}}实验六循环结构程序设计(上)//1-1#include <stdio.h>void main(){ int i=1,sum=0;while(i<100)sum=sum+i;i++;printf("Sum = %d\n",sum);}//1-2--------------------------------------------------------------------------------#include <stdio.h>void main(){ char x;x='Z';while(x!='A'){ printf("%3d",x);if(('Z'-x)%5= =0) printf("\n");x++;}}//2-1-----------------------------------------------------------------#include<stdio.h>void main(){ int n = 21,i;while ( ){ printf( "You take ... ");scanf("%d",&i);if ( )printf( "Don't try to cheat me, take 1, 2, 3, or 4, please! \n");else{ printf( "I take %d\n", 5-i);n = ; //剩下的火柴棍根数}}printf( " Now take the last one, please! \n Haha^-^, you loss!) \n "); }//2-2-------------------------------------------------------------------- #include <stdio.h>void main(){ int day,x1,x2;day=0;x1=1020;while( ){ x2= ;x1=x2;day++;}printf("day=%d\n",day);}//2-3---------------------------------------------------------------------- #include<stdio.h>void main(){ long x,m,y=0;int gw,count=0;printf("input x=");scanf("%ld",&x);;do{ gw=m%10;y= ;;count++;}while( );printf("x=%ld, count=%d, recycle=%ld\n",x,count,y);}}实验七循环结构程序设计(下)//1-1#include<stdio.h>void main(){ long sum(int);long s=0;int k;for(k=1;k<20;k+=2)s=s+sum(k);printf("s=%ld\n",s);}long sum(int x) //求1+2+...+x{ long result=0;int i;for(i=1;i<=x;i++)result+=i;return result;}//1-2------------------------------------------------------------------------#include<stdio.h>void main(){long s=0,result=0;int k,i;for(k=1;k<20;k+=2){for(i=1;i<=k;i++)result+=i;s=s+result;}printf("s=%ld\n",s);}//2-1--------------------------------------------------------------------------#include<stdio.h>void main(){ float score,sum=0,average;int persons=0;while(1){ scanf("%f",&score);if(score<0)continue;else if(score>100)break;else{ sum+=score;persons++;}}average=(float)(sum/persons);printf("人数=%d,平均分=%f\n",persons,average);}//2-2------------------------------------------------------#include <stdio.h>void main(){ int i,j;for (i=0;i<4;i++){ for (j=0;j<=20;j++)printf("\n");for (j=0;j<2*i+1;j++)printf("*");}}//2-3-----------------------------------------------------------#include "stdio.h"void main(){ int a,k,s=0;for (k=2; k<1000; k++){for (a=1; a<=k/2; a++)if(k%a==0) s+=a;if (s==k) //k是完数printf("%d is OK!\n",k);}}实验八函数//1-1#include "math.h"#include "stdio.h"void main(){ float a,b,c;printf("请输入三角形的边长值:\n");scanf("%f%f%f",a,b,c);if(a+b>c&&a+c>b&&b+c>a)printf("Area=%f\n",area(a,b,c));}area(float a,float b,float c){ float s,area_s;s=(a+b+c)/2.0;area_s=sqrt(s*(s-a)*(s-b)*(s-c));return(area_s);}//1-2--------------------------------------------------------------------------#include<stdio.h>int fun(int n){ int jc=1,i;for(i=2;i<=n;i++) jc*=n;return jc;}void main(){ int n;long sum=0;for(n=1;n<11;n++);if(n%3==0||n%5==0)sum+=fun(int n);printf("sum=%ld\n",sum);}//1-3---------------------------------------------------#include<stdio.h>swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p;}void main(){ int a,b;scanf("%d%d",&a,&b);printf("a=%d\tb=%d\n",a,b);swap(&a,&b);printf("a=%d\tb=%d\n",a,b);}//2-1-----------------------------------------------------------------#include<stdio.h>void printline(int n) //{ int i,k;for(i=1;i<=30-n;i++) printf("%c",' ');for(i=1;i<= ;i++) printf( );printf("\n");}void main(){ int i;for(i=1;i<=5;i++) ;for(i=4;i>=1;i--) ;}//2-2-------------------------------------------------------------------------------------------------------#include " stdio.h "int isprime(int m) //判别m是否为质数{ int i ;for(i=2;m%i!=0;i++); //注意:循环体是空语句return ( );}void main(){ int n,x,a,b;scanf("%d",&x);for(n=6;n<=x ;n+=2)for(a=3;a<=n/2;a+=2)if( ) //若a是素数{ b=n-a;if( ) //若b是素数{ printf(“%d=%d+%d”,n,a,b);; //退出a循环,判别下一个n的组合}}}实验九数组(上)//1-1#include<stdio.h>#define N 9;void main(){ int i,sum=0,a[N],max,min;for(i=0;i<N;i++)scanf("%d",a[i]);sum=max=min=a[0];for(i=0;i<N;i++){ sum+=a[i];if(a[i]>max)max=a[i];else if(a[i]<min)min=a[i];}for(i=0;i<N;i++){ printf("%8d",a[i]);if(i%3==2) printf("\n");}printf("max=%d min=%d average=%lf\n",max,min,sum*1.0/N);}//1-2--------------------------------------------------------------------------------------#include <stdio.h>void main(void){ const int n=3;int i,j,sum;int a[][n]={1,2,3,4,5,6,7,8,9};for(i=0;i<=n;i++)for(j=0;j<=n;j++)if(i==j||i+j==n)sum+=a[i][j];printf("sum=%d\n",sum);}//2-1--------------------------------------------------------------#include <stdio.h>#include <math.h>int Is_sushu(int x){ int i,re;re=x>1?1:0;for(i=2;i<=sqrt(x);i++)if( ){ re=0; break;}return(re);}void main(void){ const int n=10;int ss[n],hs[n],k,m,p1,p2;p1=p2=-1;for(k=1;k<=n;k++){ printf("NO %d:",k);scanf("%d",&m);if( ) //若m为素数{ p1++;ss[p1]=m;}else{ ;hs[p2]=m;}}for(k=0;k<=p1;k++) //输出素数数列printf("%4d ",ss[k]);printf(" count=%d\n",p1);for(k=0;k<=p2;k++) //输出合数数列printf("%4d ",hs[k]);printf("count=%d\n", );}//2-2-------------------------------------------------------#include<stdio.h>#include<stdlib.h>void main( ){ int a[10],i,j,t;for(i=0;i<10;i++){ a[i]= ; //生成随机整数printf("%d ",a[i]);}for(i=0;i<9;i++)for(j=0;j< ; j++)if(a[j]>a[j+1]){ t=a[j];a[j]=a[j+1]; ;}printf("\nthe sorted numbers: \n");for(i=0;i<10;i++)printf("%5d ",a[i]);}实验十数组(下)//1-1#include<stdio.h>void main( ){char a[]="wel",b[]="come";int i,n=0;while(!a[n]) n++;for(i=0;b[i]!='\0';i++)a[n+i]=b[i];printf("%s\n",a);}//1-2---------------------------------------------------------------#include<stdio.h>#define N 6int sum(int x,int n){ int i=0,s=0;while(i<=n)if(x[i]>0){s=s+x[i]; i++;}return s;}void main(){ int i=0,s,a[N];do{ printf("NO%d: ",i+1);scanf("%d",&a[i]);if((-100<=a[i])&&(a[i]<=100))i++;elseprintf("wrong! input again...\n");}while(i<N);s=sum(a[N],N);printf(" sum=%d\n",s);}//2-1------------------------------------------------------------#include "stdio.h"main(){ c har str[40];int alphabet=0,digit=0,space=0,other=0,i=0;printf("请输入一串字符:\n");gets(str);while( ){ if(('A'<=str[i])&&(str[i]<='Z')||('a'<=str[i])&&(str[i]<='z')) ++alphabet;else if(str[i]==' ') ++space;else if((str[i]<='9')&&(str[i]>='0')) ++digit;else ++other;i++;}printf("其中有%d个字母,%d个空格,%d个数字,%d个其他字符!\n",alphabet,space, digit,other);}//2-2-------------------------------------------------------------------------------------------------------#define N 50#define M 20#include <stdio.h>void main(){ char a[N][10]; //学号float score[N][M],max_score; //成绩int n,m,i,j,studid;/*输入学生的学号和各门课程的成绩*/printf("学生数n,课程数m:");scanf("%d,%d",&n,&m);for(i=1;i<=n;i++){ printf("输入第%d位学生的学号:",i);scanf("%s", );printf("按课程顺序输入成绩:");for(j=1;j<=m;j++)scanf("%f", );}/*找出每门课程最高的学生学号、课程代号和成绩并输出*/for(j=1;j<=m;j++){ studid=1;max_score=score[1][j];for(i=1;i<=n;i++)if(score[i][j]> max_score){ max_score=score[i][j];studid=i;}printf("第%d门课程最高分的学生学号是:%s,成绩为:%6.2f\n",j,a[studid],max_score);}}实验十一指针的应用//1-1#include <stdio.h>void main(){ int *p,i,a[5];p=a[1];printf("please enter 5 numbers:");for(i=0;i<5;i++)scanf("%d",p++);for(i=0;i<5;i++,p++)printf("%d ",*p);printf("\n");}//1-2-----------------------------------------------------------------------------------------#include<stdio.h>int digits(char *s){ int c=0;while(s){ if(*s >=0&&*s <=9)c++;s++;}return c;}void main(){ char s[80];printf("请输入一行字符\n");gets(s);printf("个数=%d\n",digits(s));}//2-1-------------------------------------------------------------#include<stdio.h>int findmax(int *s,int t ){ int i,k=0;for(i=0; ;i++)if( ) k=i;return ;}void main(){ int j,a[10]={12,23,34,45,56,67,78,89,11,22},k=0,*add;for(j=0;j<10;j++)printf("%4d%10xh\n",a[j],&a[j]);k=findmax(a,10);add=&a[k];printf("\n数组下标=%d,数组元素值=%d,元素地址=%xh\n",k,a[k], add);}//2-2------------------------------------------------------------------ #include <string.h>#include <stdio.h>#define N 81void fun(char *s){ int i=0,t,n= ;for(;s+i<s+n-1-i;i++){ t=*(s+i);*(s+i)= ;*(s+n-1-i)=t; }}void main(){ char a[N];gets(a);printf("The original string is:");puts(a);fun(a);printf("\nThe string after modified:"); puts(a);}//2-3-----------------------------------------------------------#include<stdio.h>#include "string.h"#define N 5void sort(char (*p)[20]) //利用行指针对N个字符串进行排序{ int i,j; char k[20];for (i=0; i<N-1; i++)for (j=i+1; j<N; j++)if (strcmp( ,*(p+j))>0) //*(p+i)表示第i个串{ strcpy(k,*(p+i));strcpy(*(p+i), );strcpy(*(p+j),k);}}void main(){ char ch[N][20]; int i,j;for (i=0; i<N; i++) gets(ch[i]); //输入N个串sort(ch); //利用行指针排序for(i=0; i<N; i++) puts(ch[i]); //输出}实验十二结构体//1-1#include<stdio.h>struct stud{ char name[20];int age;} ;fun(struct stud person[],int n){ int min,i;min=0;for(i=0;i<n;i++)if(person[i] <person[min] ) min=i;return (person );}void main(){ struct stud a[]={{"Zhao",21},{"Qian",20},{"Sun",19},{"LI",22}};int n=4;struct stud minpers;minpers=fun(a,n);printf("%s 是年龄小者,年龄是:%d\n",,minpers.age);}//2-1-----------------------------------------------------------#include<stdio.h>#include<string.h>struct bdata{ int id;char bname[20];float price;} ;int findbook(struct bdata st[],int n,char s[]){ int i;for(i=0;i<n;i++)if(________) return i;__________________;}void main(){ struct bdata book[100];char st[20];int index;printf("请输入要查找书名:";gets(st);index=findbook(_______________);if (index = = -1) printf("%s的书未找到\n",st);else printf("%s的书在%d位置\n",st,index);}//2-2------------------------------------------------------------------------------------------#include<stdio.h>#define M 3#define N 4struct stud{ int no;char name[16];float mark[M];float aver;};void input(struct stud st[]) //输入学生记录{ int i,j;float sum;for(i=0;i<N;i++){ printf("\n输入第%d个学生的学号,姓名:");scanf("%d,%s", );printf("\n输入第%d个学生的3门课程成绩:");for(j=0;j<M;j++)scanf("%f", );}}void output(struct stud st[]) //输出学生记录{ int i,j;printf("\n学号姓名课程1 课程2 课程3 平均分\n");for(i=0;i<N;i++){ printf("%5d %8s",st[i].no,st[i].name);for(j=0;j<M;j++)printf("%5.1f",st[i].mark[j]);printf("%5.2f",st[i].aver);}}void average(struct stud st[]) //求每个学生的平均成绩{ int i,j;float sum;for(i=0;i<N;i++){ sum= ;for(j=0;j<M;j++)sum= ;=sum/M;}}void main(){ struct stud preson[N];input( );average(preson);output(person);}//2-3---------------------------------------------------------------------------------------------------struct oneday{ int day,month,year; };void main(){ struct oneday day1;int alldays(struct oneday);printf("Enter year,month,day:");scanf("%d-%d-%d", );printf("%d\n",alldays(day1));}int runnian(int year){ if (year%400==0) return(1);if (year%4==0 && year%100!=0) return(1);return(0);}int alldays(struct oneday one){ int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int i,t=0;if (runnian(one.year)) day[2]=29;for (i=1; i< ;i++)t+=day[i];t=t+one.day;return(t);}实验十三文件操作//1-1#include <stdio.h>#include<string.h>void main(){ FILE *fp1;char ch[80];int i,j;fp1=fopen("C:\\data1.dat","b");for(i=1;i<=4;i++){ gets(ch);j=0;while(ch[j]!='\0'){ fputc(fp1, ch[j]); j++; }fputc(fp1,'\n');}fclose(fp1);}//1-2----------------------------------------------------------------------------------------#include <stdlib.h>#include <stdio.h>#include <time.h>void main ( ){ int x[10],i,k;FILE *fp2;srand( (unsigned)time( NULL ) );for (i=0;i<10;i++)x[i]=rand();fp2=fopen ("C:\\data2.dat","wb");if(fp2==NULL){ printf("Open error \n");exit(0);}for (int k=0 ; k<10 ; k++ )fwrite(x[k],sizeof(int), fp2);fclose (fp2) ;}//2-1----------------------------------------------------------------#include<stdio.h>#include<stdlib.h>void main(){ FILE *fp;int i=0;char *str[]={"visual C++","visual Basic","visual java","visual foxpro"};if((fp=fopen("C:\\data3.txt", ))==NULL){ printf("%s不能打开!\n","data3.txt");exit(1);}while(i<4){fprintf( );;}fclose(fp);//2-2-------------------------------------------------------------------------------------------------------------------#include<stdio.h>#include<stdlib.h>void main(){ char c;FILE *fp3; long num=0;if((fp3=fopen("c:\\ data3.txt", ))==NULL){ printf("Open error \n");exit(0); }c=fgetc(fp3);while ( ){;c=fgetc(fp3);}printf("\nnum=%ld\n", num);;}(注:可编辑下载,若有不当之处,请指正,谢谢!)。

C语言实验报告源代码

C语言实验报告源代码

C语言实验报告源代码1.问题描述:计算三个整数12*34*56的积,得出正确的结果,并能通过此实验熟悉vc6.0的操作环境;源程序及注释:# include <stdio.h>void main() /*求三个数的积*/{ int a,b,c,sum; /*这是声明部分,定义a,b,c,sum为整型*/ / a=12; /*以下5行为C语句*/b=34;c=56;sum=a*b*c;printf("%d\n",sum);}2.。

问题描述:熟悉并理解基本数据类型,了解整数变量的数据范围,主要是基本整型变量,短整型以及长整型。

源程序及注释:#include <stdio.h>void main(){ int a; long b; short c;a=2147483647; a=a+1;printf("a=%d\n",a);b=2147483647; b=b+1;printf("b=%d\n",b);c=32767; c=c+1;printf("c=%d\n",c);}3.问题描述:了解并学会C语言的基本输入输出用法,熟悉运用printf函数和scanf函数,能用C语言语句解决简单的实际问题;源程序及注释:#include <stdio.h>void main(){float c,F ;printf("please input a Fahrenheit");scanf ("%f",&f);c=(5.0/9)*(F-32);printf("the Centigrade is %.2f\n",c);}4.问题描述:熟悉并理解C语言的选择结构,了解选择结构的程序设计方法,掌握选择结构中条件表达式和逻辑表达式的用法,掌握if语句的规则。

C语言综合实验报告模板(附调试代码)

C语言综合实验报告模板(附调试代码)

C语言综合实验报告模板(附调试代码)学生姓名:学号:专业班级:实验类型:□验证□ 综合□ 设计□ 创新实验日期:实验项目:学生成绩管理系统一、实验目的和要求目的:1.掌握三种程序基本结构;2.熟练使用数组、用户自定义函数等相关知识进行程序设计;3.熟悉结构化程序设计语言思想编写程序代码;4.理解和掌握C语言的语法以及三种基本程序结构的综合应用;5.熟悉排序、查找、统计分析等常用算法6.熟悉C语言的编程和调试环境,培养学生用计算机解决实际问题的能力要求:根据实验内容,认真编写源程序代码、上机调试程序,书写实验报告。

二、实验内容综合利用所学C语言三种程序基本结构以及数组(或指针)、用户自定义函数等相关知识进行一个小型学生成绩管理系统的设计与实现,具体内容如下:某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,实现如下的学生成绩管理系统:(1)录入每个学生的学号和考试成绩(2)计算课程的总分和平均分(3)按成绩由高到低排出名次表(4)按学号由小到大排出成绩表(5)按学号查询学生考试成绩(6)按优秀(90-100分)、良好(80-89分)、中等(70-79分)、及格(60-69分)、不及格(0-59分)5个类别,统计每个类别的人数及其所占百分比(7)输出每个学生的学号、考试成绩三、实验步骤1.仔细阅读实验要求和书上的相关内容,在磁盘上新建以学号姓名命名的文件夹。

2.编写程序代码、编译、连接及运行程序、查找程序中的错误 3.函数及功能说明四、完整源程序代码五、结果分析及总结分析运行结果,并进行总结(可以从以下几个方面来总结:你在编程过程中对问题是如何分析的?遇到了哪些难题?你是怎么克服的?你的收获有哪些?)调试代码:#include #include #include#define STU_NUM 30 /*最多的学生人数*/ int Menu(void);void Readscore (long num[],float score[],int n); void Aversumofscore(float score[],int n);void Desortbyscore(long num[],float score[],int n); void Assortbynum(long num[],float score[],int n); void searchbynum(long num[],float score[],int n); void statisticanalysis(float score[],int n); void printscore(long num[],float score[],int n); int main(){ char itemselected; int n;float score[STU_NUM]; long num[STU_NUM];printf(\输入学生人数(n{ itemselected=Menu(); /*显示菜单,并读取用户输入*/ switch (itemselected){case 1: Readscore (num,score, n); break;case 2: Aversumofscore( score, n);break;case 3: Desortbyscore( num,score,n);printf(\printscore( num,score,n);break;case 4: Assortbynum(num,score,n);printf(\printscore( num,score,n);break;case 5: searchbynum(num,score, n);break;case 6: statisticanalysis( score, n);break;case 7: printscore( num,score,n);break;case 0: exit(0);/*printf(\break;*/default :printf(\ }break;}return 0; }/*函数功能:显示菜单项并获得用户键盘输入的选项*/ int Menu(void) { int itemselected;printf(\学生成绩管理系统:管理学生成绩\\n\printf(\录入每个学生学号和考试成绩\\n\printf(\计算班级总分和平均分\\n\printf(\按成绩由高到低排出名次表\\n\printf(\按学号由小到大排出成绩表\\n\printf(\按学号查询学生排名和考试成绩\\n\printf(\6. 按优秀(90-100分)、良好(80-89分)、中等(70-79分)、及格(60-69分)、不及格(0-59分)5个类别\\n统计每个类别的人数及其所占百分比\\n\printf(\输出每个学生的学号、考试成绩\\n\printf(\程序结束\\n\printf(\输入你的选择\\n\scanf (\return itemselected;}/*函数功能:输入n个学生的某门课成绩*/void Readscore (long num[],float score[],int n) { }/*函数功能:计算全班总分和平均分*/ void Aversumofscore(float score[],int n) { }/*函数功能:将数组score的元素值按从高到低排序,即按成绩从大到小排序*/void Desortbyscore(long num[],float score[],int n)float d,c; int j; c=0;感谢您的阅读,祝您生活愉快。

C语言实验报告(一)

C语言实验报告(一)

C语言程序设计实验报告2013--2014学年第二学期 2013 级专业:班级:学号:姓名:一、实验题目:顺序结构二、实验目的:(略)三、实验内容1. 程序验证(略)2.程序设计1)编写程序,已知圆半径radius=1.25,求圆周长和面积。

源代码: #include <stdio.h>#include <math.h>#define PI 3.14159void main( ){double r,l,s;r=1.25;l=2.0*PI*r;s=PI*r*r;printf("l=%f,s=%f\n",l,s);}运行结果:2)编写程序完成单个字母的大小写转换。

源代码:#include <stdio.h>void main(){char c;c='a';c=c-32;printf("%c\n",c);}运行结果:3)任意从键盘输入一个三位整数,要求正确分离出它的个位、十位和百位数,并分别在屏幕上显示。

源代码:#include<stdio.h>void main(){int x,l,m,n;printf("请输入一个三位数\n");scanf("%d",&x);l=x/100;m=(x/10)%10;n=x%10;printf("l=%d\n,m=%d\n,n=%d\n",l,m,n);}运行结果:(学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)。

C语言实验源代码

C语言实验源代码

大一下c语言实验源代码021112122--白娟娟实验一1.输入三个整数,使用指针按由小到大的顺序排序并输出。

编程思路:先定义三个整型变量和三个指向整型数据的指针变量pi(i=1,2,3),然后用这三个指针分别指向三个整型变量,输入三个整型变量的值,采用*pi去比较大小和输出。

#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int a,b,c,*p1,*p2,*p3,max,min;scanf("%d,%d,%d",&a,&b,&c);p1=&a;p2=&b;p3=&c;if(*p1>*p2){min=*p2;*p2=*p1;*p1=min; }if(*p1<*p3){if(*p2<*p3)printf("%3d,%3d,%3d",*p1,*p2,*p3);else{ max=*p3;*p3=*p2;*p2=max;printf("%3d,%3d,%3d",*p1,*p2,*p3);}}else{min=*p1;*p1=*p2;*p2=min; printf("%3d,%3d,%3d",*p1,*p2,*p3);}return 0;}2.编写一个函数,采用指针变量作为形式参数,接收2个整数并按照从小到大进行排序,要求在主函数中完成数据的输入、输出。

编程思路:定义函数void sort(int *p1,int *p2);主函数输入数据,输出原始数据和排序后的数据。

#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){ void sort(int *p1,int *p2);int a,b,*p1,*p2;scanf("%d,%d",&a,&b);p1=&a;p2=&b;printf("%3d",a,b);}void sort(int *p1,int *p2){int temp;if(*p1>*p2){temp=*p2;*p2=*p1;*p1=temp;}}实验二1.输入十个整数,放在数组list中,然后用指针法从后向前输出该数组中的整数。

c语言源代码

c语言源代码

c语言源代码在计算机科学领域,C语言是一种被广泛应用的程序设计语言,它以其简洁、高效和可移植性而闻名。

本文将提供一些C语言的源代码示例,帮助读者更好地理解和应用这门编程语言。

1. Hello World程序#include <stdio.h>int main() {printf("Hello, World!");return 0;}上述代码是C语言中经典的Hello World程序。

它使用了stdio.h头文件,其中包含了用于输入输出的函数。

main()函数是程序的入口点,它执行printf函数并打印出"Hello, World!"的字符串。

最后,return语句表示程序正常结束。

2. 计算两个数的和#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个数的和为:%d", sum);return 0;}以上代码展示了如何用C语言编写一个简单的计算两个数的和的程序。

通过使用scanf函数,用户可以在程序运行时输入两个整数。

程序将这两个数相加,并使用printf函数打印出结果。

3. 判断一个数是否为质数#include <stdio.h>int main() {int num, i, isPrime = 1;printf("请输入一个正整数:");scanf("%d", &num);for (i = 2; i <= num / 2; ++i) {if (num % i == 0) {isPrime = 0;break;}}if (isPrime)printf("%d是质数", num);elseprintf("%d不是质数", num);return 0;}上述代码展示了如何用C语言编写一个判断一个数是否为质数的程序。

C语言程序设计实验及代码

C语言程序设计实验及代码

C语言程序设计实验及代码一、实验介绍本实验旨在通过C语言编程实践,培养学生的程序设计能力。

通过完成以下实验内容,学生将会加深对C语言的理解,掌握基本的编程技巧和方法,并能够编写简单的C语言程序。

二、实验内容1.实验一:实现一个简单的计算器程序编写一个简单的计算器程序,能够进行简单的加减乘除运算。

要求用户输入两个数字和操作符(+、-、*、/),然后输出计算结果。

实验提示:可以使用switch语句来实现根据操作符执行相应的运算。

2.实验二:实现一个学生成绩管理系统编写一个学生成绩管理系统程序,能够添加学生信息、显示学生信息、计算学生平均成绩等功能。

要求使用结构体来保存学生信息,并使用数组来存储多个学生的信息。

实验提示:可以使用循环来实现多次添加学生信息的功能。

可以使用指针来操作结构体数组。

3.实验三:实现一个简单的图书管理系统编写一个图书管理系统程序,能够添加图书信息、显示图书信息、查询图书信息等功能。

要求使用结构体来保存图书信息,并使用链表来存储多本图书的信息。

实验提示:可以使用链表的插入和删除操作来实现添加和删除图书的功能。

通过遍历链表来显示和查询图书的信息。

三、实验代码示例1.实验一代码示例:```c#include<stdio.h>int mainfloat num1, num2; //用于存储用户输入的两个数字char op; //用于存储用户输入的操作符float result; //用于存储计算结果printf("请输入两个数字和一个操作符(+、-、*、/):");scanf("%f %f %c", &num1, &num2, &op);switch(op)case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':if(num2 != 0)result = num1 / num2;elseprintf("除数不能为0!\n");return 0;}break;default:printf("操作符输入错误!\n");return 0;}printf("计算结果:%f\n", result);return 0;```2.实验二代码示例:```c#include<stdio.h>#define MAX_STUDENT 100 //定义最大学生数量struct Studentint id; //学号char name[20]; //姓名float score; //成绩};void addStudent(struct Student *students, int *count) if(*count >= MAX_STUDENT)printf("已达到学生数量上限!\n");return;}printf("请输入学生的学号、姓名和成绩:");scanf("%d %s %f", &(students[*count].id),students[*count].name, &(students[*count].score));(*count)++;void showStudent(struct Student *students, int count) int i;if(count == 0)printf("暂无学生信息!\n");return;}printf("学号\t姓名\t成绩\n");for(i = 0; i < count; i++)printf("%d\t%s\t%f\n", students[i].id, students[i].name, students[i].score);}float calculateAverage(struct Student *students, int count) int i;float sum = 0;if(count == 0)return 0;for(i = 0; i < count; i++)sum += students[i].score;}return sum / count;int mainstruct Student students[MAX_STUDENT]; //保存学生信息的数组int count = 0; //学生数量int choice;while(1)printf("\n学生成绩管理系统\n");printf("1.添加学生信息\n");printf("2.显示学生信息\n");printf("3.计算平均成绩\n");printf("0.退出\n");printf("请输入对应操作的序号:");scanf("%d", &choice);switch(choice)case 1:addStudent(students, &count);break;case 2:showStudent(students, count);break;case 3:printf("平均成绩:%f\n", calculateAverage(students, count));break;case 0:return 0;default:printf("输入无效的序号!\n");break;}}return 0;```3.实验三代码示例:```c#include<stdio.h>#include<stdlib.h>#include<string.h>struct Bookchar name[50]; //书名float price; //价格struct Book *next; //指向下一本书的指针};struct Book *head = NULL; //链表的头指针void addBookstruct Book *newBook;char name[50], author[20];float price;newBook = (struct Book *)malloc(sizeof(struct Book)); scanf("%s %s %f", name, author, &price);strcpy(newBook->name, name);strcpy(newBook->author, author);newBook->price = price;newBook->next = head;head = newBook;void showBooksstruct Book *p;if(head == NULL)printf("暂无图书信息!\n");return;}p = head;while(p != NULL)printf("%s\t%s\t%f\n", p->name, p->author, p->price); p = p->next;}void searchByNamestruct Book *p;char name[50];if(head == NULL)printf("暂无图书信息!\n");return;}printf("请输入要查询的图书的书名:");scanf("%s", name);p = head;while(p != NULL)if(strcmp(p->name, name) == 0)printf("%s\t%s\t%f\n", p->name, p->author, p->price); return;}p = p->next;}printf("未找到该图书!\n");int mainint choice;while(1)printf("\n图书管理系统\n");printf("1.添加图书信息\n");printf("2.显示图书信息\n");printf("3.查询图书信息\n");printf("0.退出\n");printf("请输入对应操作的序号:");scanf("%d", &choice);switch(choice)case 1:addBook(;break;case 2:showBooks(;break;case 3:searchByName(;break;case 0:return 0;default:printf("输入无效的序号!\n");break;}}return 0;```以上是三个C语言程序设计实验的相关介绍和代码示例。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验5三种基本结构的综合应用4.一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。

例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。

试求[100,999]之内的所有逆向超级素数的个数。

#include "stdio.h"main(){int i,j,k,m,p,q,n=0;for(i=100;i<=999;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j>=i) /*三位数是素数时*/{k=i%100; /*去掉百位数字*/if(k>=10) /*十位数字不是0时*/{for(m=2;m<k;m++)if(k%m==0)break;if(m>=k) /*两位数是素数时*/{p=i%10; /*p为个位数字*/for(q=2;q<p;q++)if(p%q==0)break;if(q>=p)n++;}}}}printf("%d\n",n);}Key:575.求[2,400]中相差为10的相邻素数对的对数。

#include "stdio.h"main(){int i,j,k,m,p,q,n=0;for(i=2;i<=400;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j>=i) /*i是素数时*/{for(k=i+1;k<i+10;k++){for(m=2;m<k;m++)if(k%m==0)break;/*k不是素数时终止if语句的内层循环*/if(m>=k)break;} /*k是素数时终止if语句的外层循环*/if(k>=i+10) /*[i+1,i+9]不是素数时*/{for(q=2;q<k;q++)if(k%q==0)break;if(q>=k) /*i+10是素数时*/n++;}}}printf("%d\n",n);}Key:56.求[1,21]范围内的梅森尼数#include "math.h"main(){long n,k=2,m,p,q;for(n=2;n<=21;n++){ k=k*2; p=k-1;m=sqrt(p);for(q=2;q<=m;q++)if(p%q==0) break;if(q>m) printf("%5ld",n);}}Key: 2 3 5 7 13 17 197.求1000以内的亲密数对main(){int a,b,n,m,q,p;for(a=1;a<1000;a++){n=0;for(q=1;q<=a/2;q++)if(a%q==0) n+=q;for(b=a;b<=1000;b++){ m=0;for(p=1;p<=b/2;p++)if(b%p==0) m+=p;if(a==m&&b==n) printf("%5d%5d",a,b);}}}/*Key:6 6 28 28 220 284 496 496*/实验6 数组及其应用3.由N个有序整数组成的数列已放在一维数组中,下列给定程序中函数fun的功能是:利用折半查找法查找整数m在数组中的位置。

若找到,返回其下标值;否则,返回-1。

折半查找的基本算法是:每次查找前先确定数组中待查的范围low和high(low<high),然后用m与中间位置(mid)上元素的值进行比较。

如果m的值大于中间位置元素的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。

直到low>high,查找结束。

请改正程序中的错误,使它能得出正确的结果。

#include <stdio.h>#define N 10main(){ int i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k=-1,m;int low=0,high=N-1,mid;printf("a数组中的数据如下:");for(i=0;i<N;i++) printf("%d ", a[i]);printf("Enter m: "); scanf("%d",&m);while(low<=high){ mid=(low+high)/2;if(m<a[mid])high=mid-1;/************found************/else If(m > a[mid])low=mid+1;/************found************/else {k=mid;continue;} }if(k>=0) printf("m=%d,index=%d\n",m,k);else printf("Not be found!\n");}Key:第一个错误:else If(m > a[mid]) 应改为:else if(m > a[mid]) 因C语言关键字必须小写。

第二个错误:else {k=mid;continue;} 应改为:else {k=mid;break;} 因找到就可终止循环。

4.有一个3*4矩阵,找出每行中最大的元素并与第1列元素交换。

具体要求如下:(1)使用二维数组存放该3*4矩阵。

(2)定义并初始化该二维数组。

(3)输出原矩阵和处理后的矩阵进行比较。

【程序源代码】#include "stdio.h"main(){ int i,j,k,temp;int data[3][4]={{12,15,7,11},{14,6,10,21},{25,7,16,45}};printf("the original matrix:\n");for(i=0;i<=2;i++){ for(j=0;j<=3;j++)printf("%d\t",data[i][j]);printf("\n"); /*打印原矩阵*/}for(i=0;i<=2;i++){k=0;for(j=1;j<=3;j++)if(data[i][j]>data[i][k])k=j;temp=data[i][0];data[i][0]=data[i][k];data[i][k]=temp;} /*求每行最大数并与第1列上的元素交换*/printf("\nthe handled matrix:\n");for(i=0;i<=2;i++){for(j=0;j<=3;j++)printf("%d\t",data[i][j]);printf("\n");} /*打印处理后矩阵,此时第1列上的元素为每行的最大数*/ }5.猴子选大王问题:n个人围坐一圈,并顺序编号1~n,从1号开始数,每数到m个就让其出局,重复...。

求最后出局者的编号。

当n=50,m=3时,答案为11 具体要求如下:(1)使用一维数组存放每个人的编号,每数到m个数就让其出局,出局者编号为0。

(2)使用for循环嵌套实现。

【程序源代码】#include "stdio.h"main(){int a[51],i,j,m=0,n;for(i=1;i<=50;i++)a[i]=i;/*为了符合习惯,数组下标从1开始,下标就是编号*/for(j=1;j<=50/3;j++) /*外层循环最多循环50/3次*/for(i=1;i<=50;i++){if(a[i]!=0)m++; /*对未出局者计数*/if(m==3)a[i]=0,n=i,m=0;/*对出局者编号为0,并保存原编号,计数从0开始*/}printf("last: %d\n",n);} /*最后出局者的编号*/实验7函数及其应用3.排错题:下列给定程序中函数fun 的功能是:用递归算法求形参a 的平方根。

请改正程序中的错误,使它能计算出正确的结果。

注意:源程序不得增行或删行,也不得更改程序的结构!例如,a 为2 时,平方根值为:1.414214。

#include <stdio.h>#include <math.h>/**********found**********/void fun(double a, double x0){ double x1, y;x1=(x0+a/x0)/2.0;/**********found**********/if( fabs(x1-x0)<=0.00001 )y=fun(a,x1);else y=x1;return y;}main( ){ double x;printf("Enter x: "); scanf("%lf",&x);printf("The square root of %lf is %lf\n",x,fun(x,1.0));}Key:第一个错误:void fun(double a, double x0) 应改为:double fun(double a, double x0) 因根据题意,需通过调用fun()函数返回a的平方根,故必须将void改为double,否则不能用带值的return语句。

自增。

第二个错误:if( fabs(x1-x0)<=0.00001 ) 应改为:if( fabs(x1-x0)>=0.00001 ) 因只有fabs(x1-x0)>=0.00001才须递归。

4.设计一个程序,判断一个整数n 是否是素数。

具体要求如下:(1)编制一个函数int prime(number),判断整数number 是否是素数。

(2)编制主函数,由键盘输入整数number,调用(1)中的函数,若返回值为真则是素数,否则不是素数。

(3)分别用以下数据运行该程序:103,117。

【程序源代码】#include "stdio.h"main(){ int number;printf("请输入一个正整数:\n");scanf(" %d",&number);if (prime(number))printf("\n %d是素数. ",number);elseprintf("\n %d不是素数. ",number);}int prime(number)int number;{int flag=1,n;for(n=2;n<number/2&&flag==1;n++)if (number%n==0)flag=0;return(flag);}5.编写程序,通过两个自定义函数分别求两个正数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。

相关文档
最新文档