C语言实验报告第六章
- 格式:doc
- 大小:1.45 MB
- 文档页数:15
C语言实验报告《综合实验》
学号:__________ 姓名:__________ 班级:__________ 日期:__________
指导教师:__________ 成绩:__________
实验六综合实验
一、实验目的
1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。
2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。
3、掌握C程序的运行、调试方法等。
二、实验内容
编写一个学生信息排序程序。
要求:
1、程序运行时可输入n个学生的信息和成绩(n预先定义)。
2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。
3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。
1、使用函数方法定义各个模块。
三、实验步骤与过程
· · · ·
四、程序调试记录。
6.2基础实验一、程序分析分析以下程序段完成的功能,填写在序号后的空白处,并运行验证结果。
1. ⊙以下程序的运行结果是:_______s=12345↙____________________。
#include <stdio.h>int main( ){ inta[]={1,2,3,4,5},i,j=1,s=0;for(i=4;i>=0;i--){ s=s+a[i]*j;j=j*10;}printf(“ s= %d \n” , s );return 0;}2. 以下程序的运行结果是:_____7 5 3______________________。
#include<stdio.h>int main( ){ int k ;int a[3][3]={9,8,7,6,5,4,3,2,1};for(k=0;k<3;k++)printf(“%d ”,a[k][2-k]);return 0;}3. 以下程序的功能是:____查找最大值元素及下标_________________。
#include <stdio.h>int main( ){ int i, j ,x =0 ,y = 0 , m ;int a[3][3] = { 1, -2 , 0 , 4 , -5 , 6 , 2 , 4 };m = a [0][0] ;for (i=0 ;i < 3 ;i++)for (j = 0 ; j<3 ; j++ )if ( a[ i] [ j ] >m ){ m = a[ i ][ j ] ;x = i ;y = j ;}printf(“ ( % d , % d ) = % d \n”, x , y,m );return 0;} 运行结果:___(1 , 2 ) = 6↙_________________4. 以下程序的的运行结果是:__8,I am student!___________________。
实验报告课程名称_____ C语言程序设计_____实验项目___数组(2)___实验仪器______计算机___________系别_____信息与通信工程学院_______ 专业______通信工程________班级/学号_____学生姓名______ ________实验日期____2013年6月25日___成绩_______________________指导教师______李文杰_________一、实验目的1、掌握二维数组的定义。
2、掌握二维数组元素的应用。
3、掌握字符数组的定义和元素的引用。
4、掌握字符数组元素和字符串的应用。
二、实验内容1、描述输入一个字符串str和一个子串s,统计str中子串s的个数。
输入输入数据有2行,第一行为str,第二行为s,字符串长度不超过128。
输出输出子串的个数样例输入输入样例1:sdf$$$sdf$$sdf输入样例2:abcabcaaannnnbbbncabc样例输出样例输出1:2样例输出2:2提示所有的测试样例都不包含类似于下面的统计:输入:aaaabbbaaabbabaaaaaa程序代码:#include "stdio.h"char st[500],str[500];int ji;int shu1,shu2;int pd;int strl(char tt[1000]){int sum=0;while (tt[sum]!='\0')sum++;return sum;}int main(void){scanf("%s",&st);scanf("%s",&str);shu1=strl(st);shu2=strl(str);int i,j;int kk;for(i=0;i<=shu1-shu2;i++){pd=0;kk=0;for(j=i;j<i+shu2;j++){if(str[kk]!=st[j]){pd=1;break;}kk++;}if(pd==0)ji++;}printf("%d",ji);return 0;}2、描述找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。
C语言程序设计实验报告学校:内蒙古科技大学经济与管理学院班级:信息管理与信息系统2011级姓名:王*学号:**********目录实验一C语言开发环境建立 (3)实验二C语言程序初步 (3)实验三变量与赋值 (4)实验四运算符与表达式 (5)实验五数据类型 (7)实验六控制台输入/输出 (9)实验七关系运算与逻辑运算 (11)实验八分支程序的测试与调试 (12)实验九条件型循环结构及其测试 (16)实验十计数型循环结构及其测试 (20)实验十一函数及其测试 (24)实验十二变量的储存性质 (26)实验十三数组 (30)实验十四指针 (32)实验十五结构体和共用体 (37)实验十六文件 (40)实验11、实验目的与要求(1)掌握C语言开发环境的软/硬件配置和安装方法。
(2)为了自己的方便进行工作环境配置。
(3)测试所建立的C语言程序开发环境。
2、实验测试一个简单的程序,对所建立的程序开发环境进行测试例如,可以准备一个简单的程序如下。
#include <stdio.h>int main(void){printf("I am studying programming with C.");}编译结果运行结果3.分析与预期结果相同实验21.实验目的与要求(1)进一步熟悉c语言程序设计环境。
(2)明确c语言程序的结构。
2. 程序检测与调试程序一错误程序:main()(printf("This is c program.");)调试结果:程序缺少“#include<stdio.h>”,main函数下面应该是“{}”而不是“()”。
改正后的程序:#include<stdio.h>main(){printf("This is c program.\n");}程序二错误程序:#include<stdio.h>;main(){a=3,b=5;c=a*b;printf("The product is:",c)}调试结果:“#include<stdio.h>”后面没有“;”,对变量a,b,c没有定义,“}”前缺少“;”。
c语言大实验报告C 语言大实验报告一、实验目的本次 C 语言大实验的主要目的是通过实际的编程项目,深入巩固和应用 C 语言的基础知识,提高编程能力和解决实际问题的能力。
具体而言,包括熟练掌握数据类型、控制结构、函数、数组、指针等核心概念,并能够运用它们构建较为复杂的程序逻辑。
二、实验要求1、完成一个具有一定规模和功能的 C 语言程序,例如学生成绩管理系统、图书管理系统等。
2、程序应具备良好的代码结构和可读性,遵循编程规范。
3、实现数据的输入、处理和输出功能,能够进行数据的存储和查询。
4、对程序进行充分的测试,确保其稳定性和正确性。
三、实验环境1、操作系统:Windows 102、编程工具:Visual Studio 2019四、实验内容本次实验我选择开发一个学生成绩管理系统,该系统能够实现学生成绩的录入、查询、修改、删除以及成绩统计分析等功能。
(一)数据结构设计为了存储学生的信息,我定义了一个结构体`Student` ,包含学生的学号、姓名、各科成绩等字段:```ctypedef struct {int id;char name50;float score3; //假设存储三门课程的成绩} Student;```同时,使用一个动态数组来存储多个学生的信息:```cStudent students;int numStudents = 0; //记录学生数量```(二)功能模块实现1、成绩录入通过循环让用户输入学生的信息,包括学号、姓名和各科成绩,并将其添加到动态数组中:```cvoid inputStudent(){Student newStudent;printf("请输入学号:");scanf("%d",&newStudentid);printf("请输入姓名:");scanf("%s", newStudentname);printf("请输入三门课程的成绩:");for (int i = 0; i < 3; i++){scanf("%f",&newStudentscorei);}students =(Student )realloc(students, (numStudents + 1) sizeof(Student));studentsnumStudents++= newStudent;}```2、成绩查询根据用户输入的学号,在动态数组中查找对应的学生信息并输出:```cvoid queryStudent(){int id;printf("请输入要查询的学号:");scanf("%d",&id);for (int i = 0; i < numStudents; i++){if (studentsiid == id) {printf("学号:%d\n", studentsiid);printf("姓名:%s\n", studentsiname);printf("成绩:");for (int j = 0; j < 3; j++){printf("%2f ", studentsiscorej);}printf("\n");return;}printf("未找到该学号的学生信息!\n");}```3、成绩修改先查询要修改的学生信息,然后让用户输入修改后的成绩:```cvoid modifyStudent(){int id;printf("请输入要修改的学号:");scanf("%d",&id);for (int i = 0; i < numStudents; i++){if (studentsiid == id) {printf("请输入修改后的三门课程成绩:");for (int j = 0; j < 3; j++){scanf("%f",&studentsiscorej);printf("修改成功!\n");return;}}printf("未找到该学号的学生信息!\n");}```4、成绩删除根据学号删除指定的学生信息,并重新调整动态数组:```cvoid deleteStudent(){int id;printf("请输入要删除的学号:");scanf("%d",&id);int found = 0;for (int i = 0; i < numStudents; i++){if (studentsiid == id) {found = 1;for (int j = i; j < numStudents 1; j++){studentsj = studentsj + 1;}numStudents;students =(Student )realloc(students, numStudents sizeof(Student));printf("删除成功!\n");return;}}if (!found) {printf("未找到该学号的学生信息!\n");}}```5、成绩统计分析计算所有学生的平均成绩,并输出最高和最低成绩:```cvoid statistics(){float totalScore = 0;float maxScore = students0score0;float minScore = students0score0;for (int i = 0; i < numStudents; i++){float sum = 0;for (int j = 0; j < 3; j++){sum += studentsiscorej;}totalScore += sum / 3;if (sum / 3 > maxScore) {maxScore = sum / 3;}if (sum / 3 < minScore) {minScore = sum / 3;}}printf("平均成绩:%2f\n", totalScore / numStudents);printf("最高成绩:%2f\n", maxScore);printf("最低成绩:%2f\n", minScore);}```(三)主函数在主函数中,通过菜单的方式让用户选择要执行的操作:```cint main(){int choice;while (1) {printf("1、录入成绩\n");printf("2、查询成绩\n");printf("3、修改成绩\n");printf("4、删除成绩\n");printf("5、成绩统计分析\n");printf("6、退出\n");printf("请选择操作:");scanf("%d",&choice);switch (choice) {case 1:inputStudent();break;case 2:queryStudent();break;case 3:modifyStudent();break;case 4:deleteStudent();break;case 5:statistics();break;case 6:free(students);return 0;default:printf("无效的选择,请重新输入!\n");}}return 0;}```五、实验结果经过多次测试,本系统能够稳定运行,实现了预期的各项功能。
(完整版)c实验报告实验名称: C语言实验报告实验内容:本次实验主要针对C语言编程进行实验。
通过实验的设计和完成,检验和加深对C语言的理解和应用能力。
实验步骤:1. 实验准备在开始实验之前,需要准备好以下必要的工具和材料:- 计算机- C语言编译器(比如GCC、Clang等)- 文本编辑器(比如Notepad++、Sublime Text等)2. 实验环境搭建在计算机上安装C语言编译器,并配置好相应的环境变量。
这样可以在终端或命令提示符中执行相关的C程序。
3. 编写实验代码根据实验要求,使用文本编辑器编写C语言代码。
根据实验的要求和功能需求,合理设计和组织代码结构,包括头文件的引用、变量的定义、函数的声明和定义等。
4. 编译和运行代码在命令行或终端中使用编译器对编写好的C语言代码进行编译,并生成可执行文件。
编译命令的具体格式根据不同的编译器而有所差异,但一般形式如下:```gcc -o output_file input_file.c```其中,"output_file"表示生成的可执行文件名,"input_file.c"表示待编译的C源代码文件名。
编译成功后,通过命令行或终端执行生成的可执行文件,检查程序的运行结果是否符合预期。
5. 实验结果分析根据实际运行结果,对实验数据进行分析和归纳。
可以通过输出结果、打印特定信息或观察程序的行为来判断程序是否正确地实现了预期的功能。
6. 实验总结在实验报告中对本次实验的过程、方法、结果进行总结,并提出实验中遇到的问题和解决方法。
同时,对所学习的C语言相关知识点进行总结和归纳,以加深对相关知识的理解和记忆。
实验结果:通过本次实验的设计和实现,我成功完成了对C语言编程的实验,达到了预期的目标。
通过编写实际的代码,我巩固了对C语言语法和基本概念的理解。
在实验过程中,我遇到了一些问题,通过查阅资料和与同学的讨论,我成功解决了这些问题。
实验一(第1章实验)实验目的:1.掌握运行C语言程序的全过程。
2.熟悉编译环境。
3.初步熟悉C语言程序的语法规定。
4.了解简单函数的使用方法。
实验内容:1.编程且上机运行:求3个整数的和。
2.编程且上机运行:求2个数的和、差、积和商。
3.编程且上机运行:输入3个数,求最大值。
4.编程且上机运行:输入圆的半径,求圆的面积和周长。
5.在屏幕上输出:“hello world!”实验结果:实验二(第3章实验)1.实验目的:理解C语言的类型系统。
实验内容:写程序测试数据-2在类型char,int,unsigned int,long int,unsigned long int 中存储情况。
实验过程:实验结果:参见各种类型的存储实现描述。
2.实验目的:了解混合类型计算中类型的转换规则。
实验内容:写程序测试多种类型数据一起运算时类型的转换及表达式结果的类型。
注意unsigned int和int数据运算时类型转换的方向。
实验过程:/** 类型转换问题* 试问下面两个表达式等价吗?*/#include <stdio.h>#include <stdlib.h>int main() {unsigned int ui,uj;ui = 1;uj = 2;if (ui < uj)printf("\n%u < %u is true !\n", ui, uj);elseprintf("\n%u < %u is false !\n", ui, uj);if (ui - uj < 0)printf("\n%u - %u <0 is true !\n", ui, uj);elseprintf("\n%u - %u <0 is false !\n", ui, uj);system("pause");return 0;}实验结果:参见类型转换规则。
《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语言程序设计_____实验项目___数组(2)___实验仪器______计算机___________系别_____信息与通信工程学院_______ 专业______通信工程________班级/学号_____学生姓名______ ________实验日期____2013年6月25日___成绩_______________________指导教师______李文杰_________一、实验目的1、掌握二维数组的定义。
2、掌握二维数组元素的应用。
3、掌握字符数组的定义和元素的引用。
4、掌握字符数组元素和字符串的应用。
二、实验内容1、描述输入一个字符串str和一个子串s,统计str中子串s的个数。
输入输入数据有2行,第一行为str,第二行为s,字符串长度不超过128。
输出输出子串的个数样例输入输入样例1:sdf$$$sdf$$sdf输入样例2:abcabcaaannnnbbbncabc样例输出样例输出1:2样例输出2:2提示所有的测试样例都不包含类似于下面的统计:输入:aaaabbbaaabbabaaaaaa程序代码:#include "stdio.h"char st[500],str[500];int ji;int shu1,shu2;int pd;int strl(char tt[1000]){int sum=0;while (tt[sum]!='\0')sum++;return sum;}int main(void){scanf("%s",&st);scanf("%s",&str);shu1=strl(st);shu2=strl(str);int i,j;int kk;for(i=0;i<=shu1-shu2;i++){pd=0;kk=0;for(j=i;j<i+shu2;j++){if(str[kk]!=st[j]){pd=1;break;}kk++;}if(pd==0)ji++;}printf("%d",ji);return 0;}2、描述找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。
输入输入数据有多行,第一行有两个数m和n,下面有m行,每行有n个数。
输出按下列格式输出鞍点:Array[i][j]=x其中x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从0开始。
一个二维数组并不一定存在鞍点,此时请输出None 我们保证不会出现两个鞍点的情况,比如:3 31 2 31 2 33 6 8样例输入3 31 2 34 5 67 8 9样例输出Array[0][2]=3提示输出全为英文字符,记得输出完后的换行哟。
程序代码:#include "stdio.h"int main(){int i,j,a[10] [10],m,n,c,max;scanf("%d%d",&m,&n);for(i=0;i<m;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);for(i=0;i<m;i++){c=0;for(j=0;j<n;j++)if(a[i][c]<a[i][j])c=j;for(j=0;j<m;j++)if(a[j][c]<a[i][c])break;if(j==m){printf("Array[%d][%d]=%d\n",i,c,a[i][c]);break;}}if(i==m)printf("None\n");return 0;}3、描述求给定的方阵主对角线和副对角线元素之和。
输入有若干行,第一行为一个整数n(2<=n<=10),后跟n行,每行有n个整数。
输出n x n的方阵对角线元素之和。
样例输入31 2 34 5 67 8 9样例输出主对角线=15副对角线=15提示注意结果输出后要换行。
程序代码:#include "stdio.h"int main(){int i,j,a[10] [10],n,s1=0,s2=0;scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i] [j]);for(i=0;i<n;i++){s1+=a[i] [i];s2+=a[i] [n-1-i];}printf("Ö÷¶Ô½ÇÏß=%d\n¸±¶Ô½ÇÏß=%d\n",s1,s2);return 0;}4、描述根据要求输出若干行杨辉三角形。
输入一个整数n(3<=n<=10)。
输出杨辉三角形的前n行。
样例输入5样例输出11 11 2 11 3 3 11 4 6 4 1提示注意所有数据后有一个空格,包括每行最后一个数据。
程序代码:#include "stdio.h"int main(){int i,j,a[10] [10]={{1},{1,1}},n;scanf("%d",&n);for(i=2;i<n;i++){a[i] [0]=1;a[i] [i]=1;for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}for(i=0;i<n;i++){for(j=0;j<=i;j++)printf("%d ",a[i][j]);printf("\n");}return 0;}5、描述大家都是C语言的高手,一定对C语言的标识符规定非常熟悉,现给你一个任务,要求你对小明写的若干个C标识符检验是否合法(不考虑长度限制)。
你是在完成C的编译任务哟。
输入有若干行,第一行为一个整数N(VC++6.0 int范围),接着是N行,每行为长度不超过8个字符的一个字符串,表示小明写的一个标识符。
输出有N行,顺序对应于输入的N行标识符,若小明写的标识符合法,则输出“合法!”,否则,输出“不合法!”样例输入63you_678abcaa%bChina N1样例输出不合法!合法!合法!合法!不合法!不合法!提示输出的都为中文字符,第一行数字后的回车符应该舍弃。
程序代码:#include <stdio.h>#include <string.h>int main(){char c[100][9];int n,i,p,k=1;scanf("%d",&n);getchar();for(p=1;p<=n;p++){scanf("%s",c[p]);}for(p=1;p<=n;p++){k=1;if(c[p][0]!='_'&&!(c[p][0]>='a'&&c[p][0]<='z')&&!(c[p][0]>='A'&&c[p][ 0]<='Z'))k=0;else for(i=1;c[p][i]!='\0';i++){if(!(c[p][i]>='a'&&c[p][i]<='z')&&!(c[p][i]>='A'&&c[p][i]<='Z')&&!(c[ p][i]>='0'&&c[p][i]<='9')&&c[p][i]!='_'){k=0;break;}}if(k==1)printf("ºÏ·¨£¡\n");if(k==0)printf("²»ºÏ·¨£¡\n");}return 0;}6、描述为了促进本校学生在计算机软件基本算法、编码等相关理论知识与技术方法方面学习的主动性、创造性和自觉性,提高我校在高校排行榜中的排名,我们准备在北京信息科技大学C语言基本技能大赛的基础上,开始组建和选拔代表我校参加地区及全球ACM/ICPC的代表队,现在广泛征集队伍报名。
本次报名,要求以队伍为单位报名,每队人数1-3人。
队名第一个字符只能是大小写字母,长度不能小于3,也不能大于20。
同时规定一支队伍里全部队员都是女生的定义为女生队,每个队伍所有成员必须在C语言基本技能比赛中AC过3(含)道题以上。
现在,组委会手里已经有了全校所有报名队伍的学生的信息(姓名、性别、C基本技能大赛AC数量),报名队伍要经过身份确认才能注册通过。
然而,一支队伍一支队伍的手工进行确认实在太麻烦,因此,组委会希望你能帮助编写一个注册认证程序,告诉他们哪些队伍通过了注册认证。
输入由若干组构成,我们保证输入的队名和姓名都是英文字符。
每组首先是由一个字符串s和空格隔开的一个整数n开始,字符串代表队名(保证输入的队名不超过20个字符),整数代表人数n(0<n<=20)。
接下来是n行,每行分别由一个表示队伍中成员姓名的字符串和一个表示成员性别的大写字母(M表示男,F表示女)及一个表示在C语言基本技能大赛中AC数量的正整数组成,各项之间有一个空格。
最后一组队伍的队名为END,人数为0表示输入结束,且不用处理。
输出首先按照输入顺序输出所有对应输入队伍是否合格的信息,分以下情况:注册信息正确的队伍,输出格式为:实际队名合格!每队一行。
如果是女队,在实际队名后加上[F]注册信息不正确的队伍,输出格式为:实际队名队名不合要求!或者:实际队名队伍人数不合要求!或者:实际队名队有人成绩不合格!最后是两个用一个空格隔开的整数T和F,表示通过报名的队伍总数和通过报名的女队数目。