C语言程序设计实验电子稿
更新时间:2023-12-31 13:14:02 阅读量: 教育文库 文档下载
1.3 实验一 熟悉C语言的VC++6.0编程环境
一、实验目的与要求
1. 学会使用Visual C++集成开发环境。
2.掌握简单C程序的编写、编辑、编译、连接和运行。 3.初步学会Visual C++环境下简单调试C程序的方法。 二、实验内容
1.程序运行题
(1)打开VC++6.0环境。
(2)在VC++6.0环境的编辑窗口中,输入如下程序保存为myexp1_1.cpp。 (3)选择 【组建】?【编译 myexp1_1.cpp】(可按快捷键CTRL+F7)命令对程序进行编译。
(4) 选择【组建】?【组建】(按快捷键F7)命令对程序进行连接。 (5) 单击【!】按钮或选择【组建】?【执行】菜单项(按快捷键F5),运行程序。 (6) 判断结果正确与否。 #include
{ int a, b, sum; a=123; b=456; sum=a+b;
printf(“a+b= %d\\n”,sum); } 填写运行结果:
关闭上面的程序,按上面的步骤再次输入如下的程序,进行编译、连接和运行,写出运行结果。
#include
float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2; printf(“%f\\n”,x); }
填写运行结果:
思考: 把前面的语句x=m/2+n*a/b+1/2;改为x=m/2.0+n*a/b+1.0/2;
运行结果将会是什么?
2.程序改错题
程序改错1:
⑴ 输入如下错误的程序,然后进行编译和连接,仔细检查并修改错误,再进行编译连接,直到没有错误为止。
⑵ 运行程序, #include
{ printf(“We are studying C language!\\n) }
程序改错2
输入并运行下面一个需要在运行时输入数据的程序,程序要求从键盘输入三个实数,输出它们的和。
#include
{ float a,b,c,sum;
printf(\scanf(\sum=a+b+c;
printf(\}
⑴ 输入该程序,然后进行编译和连接,如果出错,仔细检查并修改错误,再进行编译连接,直到没有错误为止。
⑵ 运行程序,按照输入输出示例提示输入a、b、c三个变量的值,变量值之间用空格分隔,输入完毕按回车键【Enter】。 ⑶ 查看运行结果,判断结果正确与否。
输入输出示例: Input a,b,c:3 5 6?
sum=14.0 再次运行程序并按如下的格式输入数据,观察结果是否正确?为什么? Input a,b,c: 3,5,6?
sum=? 思考: 改正程序的错误后,把printf语句中的%f改成%d,再运行程序,有什么结果?
Input a,b,c: 3.5,5.5,6.5?
结果:
3.程序完整题
完整题1
二整数整除程序模板如下:
#include
Input a,b:5 3? div=1
思考: 把上述int a,b,div;改成float a,b,div;
scanf(\中的%d改成%f,同时把输出语句中的%d改成%f,运行程序后,再用前面的数据输入,结果会发生如何变化?为什么有这样的变化?
Input a,b:3,5? div=
Input a,b:5,3? div=
完整题2
仿照教材中例1-2程序,在横线地方填写语句,输入圆柱体的半径和高,计算并输出圆柱体的体积和表面积。 #include
printf(\请输入圆的半径和高:\\n\ /*在屏幕上显示提示信息*/ scanf(\
/* 从键盘输入半径和高给变量r*/
;
;
/* 计算体积*/
/* 计算表面积*/
printf(\ ; /* 输出体积和表面积*/ }
输入与输出: 请输入圆的半径和高:?
试一试: 5.0 8.0? 输出结果?
如果把上述程序中所有的%f改成%d,再次运行程序,仍然输入“5.0 8.0”,输出结果会是什么?分析结果。 把上述程序中的第一个\\n去掉,再编译运行程序,有什么变化?试说出\\n的作用。
{
…… }
void main() {
int m,sum; …… }
6.4 实验六 数组 一、 实验目的与要求
1. 掌握一维数组的定义、赋值和输入输出的方法。 2. 理解一维数组的存储方法及下标的表示方法。 3. 掌握与数组有关的算法(特别是排序算法)。
4. 掌握二维数组的定义、赋值和输入输出的方法。 5. 理解二维数组的存储方法及下标的表示方法。 6. 实验4学时。
二、实验内容 1.程序验证题与改错题
这里有改动 (1)程序验证题
① 给定一个整型数组a,要求求出其中小于0的元素的个数。请验证下面的程序是否符合题目要求。 #define N 10 void main() {
int a[N]={11,2,4,-1,5,-3,-66,0,10,-5};
int i; /*变量i用于for循环*/
int count=0; /*变量count用于技术,初始化为0*/ for (i=0;i if(a[i]<0) count++; /*如果元素a[i]<0,count计数+1*/ printf(\ } ② 给定一个整型二维数组a(3,3),要求求出对角线元素的和。请验证下面的程序是否符合题目要求。 #include int a[N][N]={{1,2,3},{4,5,6},{7,8,9}}; int i,j; /*变量i,j用于for循环*/ int sum=0; /*变量sum用于求和,初始化为0*/ for (i=0;i for(j=0;j if (i==j)sum+=a[i][j]; /*如果是对角线元素,sum+a[i][j]*/ printf(\ return 0; } 注1:在程序验证题①的基础上,修改程序,求出数组a中大于a[0]的元素之和。 注2:对上述程序②进行优化,消除内循环,实现同样的效果。在② 的基础上,修改程序,求出数组a中反对角线元素之和。提示:内循环用逆序;i+j==N-1。 (2)程序改错题 2.一般编程题 编程题1:从键盘输入10个整型数据,放入数组a 中,求其最大值、最小值及其所在元素的下标位置,并输出。 程序提示:定义10个元素的数组,用for循环语句逐一输入数据;定义最大值变量和最小值变量,用for循环语句遍历所有数组元素,逐一比较查找最大值和最小值。 编程题2:给定一个字符数组a,要求将数组的内容倒置。如: 执行前数组的内容为{'1','2','3','4','5','6','7','8'} 执行后数组的内容为{'8','7','6','5','4','3','2','1'} 提示:用i表示数组的第一个元素的下标;用j表示数组最后一个元素的下标。 交换a[i]和a[j],当i<=j时交换完毕。 交换一个元素后,i+1,j-1。 编程题3: 给定一个二维数组a,要求将数组的内容逆置。如: 执行前数组的内容为{{1,2,3},{4,5,6},{7,8,9}}, 执行后数组的内容为{{1,4,7},{2,5,8},{3,6,9}} 提示:用i表示数组的行下标;用j表示数组的列下标。以对角线元素为界,交换a[i][j]和a[j][i]。 编程题4: 一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。 Math C 5 张 80 7王 61 65 李 59 63 赵 85 87 周 76 77 English 92 71 70 90 85 提示:可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。 3.较难编程题 编程题1:给定一个整型数组a,要求将数组a中的元素进行从小到大的排序(用冒泡法排序) 【算法描述】 从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比较后,最大的数已放在最后;第二遍只需考虑(N-1)个数,即不用考虑最后一个数;以此类推每次少考虑一个数,直到第(N-1)遍比较后就可以完成排序。 编程题2:有15个整数(已排序)存放在一个数组中,输入一个数,要求用折半查找法找出该数在数组中的下标值,如果该数不在数组中,则输出“无此数”。这15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。 提示:折半查找法:在一个已从小到大排序的数组a中,用b(begin)表示数组首元素的下标,用e(end)表示数组末元素的下标,需查找的数x首先和处于数组最中间的下标为m=(b+e)/2的元素比较,若x和该数组元素相等,则找到位置,返回m;否则,若x大,则x可能落在下半区中,令b=m+1,若x小,则x可能落在上半区中,令e=m-1。重新计算m,再比较x和a[m];重复上述操作直到找到相等元素或b>e。若找到相等元素,则返回元素下标,否则返回-1表示无此数。 7.4 实验七 字符与字符串处理 一、实验目的与要求 1. 2. 3. 4. 5. 6. 掌握C语言字符型数据的概念,理解字符型与整型数据之间的关系。 掌握字符的输入与输出。 掌握转义字符常量、字符串常量的使用。 掌握字符、字符串与字符数组的输入与输出。 掌握字符串函数的使用\\字符串数组的使用。 实验课时2学时 二、实验内容 1.程序改错题 ① 调试下列程序,使之具有如下功能:任意输入两个字符串(如:\和\, 并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的字符串放在b数组。并输出。程序中的strlen是库函数,功能是求字符串的长度,它的原型保存在头文件\中。调试时注意库函数的调用方法,不同的字符串输入方法,通过错误提示发现程序中的错误。 #include char a[10],b[10],ch; int c,d,k; scanf(\ scanf(\ /* error */ printf(\c=strlen(a);d=strlen(b); if(c>d) { for(k=0;k ch=a[k];a[k]=b[k];b[k]=ch; } a[k]='\\0'; /* error */ } printf(\printf(\ } ② 下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新 的字符串,并取代原字符串。请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include int i,j; for(i=0;j=0;s[j]!='\\0';i++) /* error */ if(s[i]>='0' && s[i]<='9') s[j++]=s[i]; s[j]=”\\0”; /* error */ } void main() { char item[80]; printf(\ gets(item); printf(\ fun(item); printf(\} 2.一般编程题 编程题1 请编一个函数fun(char*s),该函数的功能是把字符串中的内容逆置。 例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。 注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include /*请填写完整*/ } void main() { char a[N]; printf ( \ a string : \ gets ( a ); printf ( \ puts( a ); fun( a ); printf(\ printf ( \ puts (a); } 编程题2 请编写输入以下图案(1)、(2)的程序,图案的行数由输入的值确定。 (1) (2) { int year; int month; int day; } date; main() { } daysum(int year, int month, int day) { } 3. 一般编程题 (1) 宁波大学阳明学院分流,信息科学与工程学院有4个专业,分别是通信工程、电子信息 科学与工程、自动化、光电信息工程,编写程序统计每个专业的报名人数,描述候选专业的信息用专业名和报名数表示。 (2) 从键盘输入n个学生的3门课程(语文、数学和英语)考试成绩,计算每个学生的平均 成绩,并按平均成绩从高到低排序输出每个学生的信息。要求使用结构体数据类型 (3) 利用下面的节点结构: struct Node {char data; struct Node *link; } 实现:从键盘输入一行字符,然后按输入顺序建立链表,最后输出整个链表。其中建立链表和输出链表的过程分别用不同的函数实现。 (4) 假设有a、b两个链表,每个链表中的节点包括学号、一门课程的成绩。要求把两个链 表合并,按学号升序排列。(两个链表中不存在重复的学号) 4. 较难编程题 (1) 用结构体数组修改教材上的例9-2,输入n个职工的姓名,工资,奖金和扣款,对每个 职工在原来工资的基础上增加5%,计算职工的实发工资并输出每个职工的工资条。 (2) 编写一个程序实现对学生数据的操作,每个学生结点包括学号和三门课程的成绩以及平 均分,要求:①输入若干学生的学号和成绩建立链表; ②能对链表进行输出; ③能根据学号删除指定的学生结点;④能插入给定的学生结点。围绕以上4个功能建立一个简单的菜单,使用户能方便地选择不同功能进行操作。 第10章 文件 10.1 知识要点 1. 文件的功能 文件的引入,使得c处理大量数据时非常方便,可以从存储介质上直接导入导出,而不必从键盘上一个一个数据输入。 使用文件时,首先要定义一个文件指针 FILE *fp; C语言把文件看成是一个字符(字节)的序列,即由一个一个字符的数据顺序组成。根据数据的组织形式,可分成ASCII文件和二进制文件。区别如下所示。 十进制整数10000 内存中存放形式: 00100111 00010000 二进制文件中的存放形式: 00100111 00010000 ASCII码文件中的存放形式:00110001 00110000 00110000 00110000 00110000 ASCII优点:容易移植,缺点:占用存储空间大,耗时; 二进制优点:占用存储空间少,存储时间快;缺点:不易移植。 2. 文件的打开、关闭 文件打开: if ((fp=fopen(“file1.c”, ” r ”))= =NULL) {printf(“cannot open this file\\n”); exit(0);} 文件关闭:fclose(fp); 3. 文件读写及定位操作 常用的读写函数:fputc,fgetc,fputs,fgets,fscanf,fprintf,fread,fwrite 定位函数:rewind,fseek,ftell 10.2 常见错误和难点分析 文件打开和关闭时,一定要指明打开或关闭的方式,如“r”, “w”, “a”分别表示只读形式,写入形式,附加形式。 1. 文件指针的定义 对文件进行操作,首先,必须要建立文件指针。文件类型指针的定义方式: FILE *文件指针变量名; 注意:编程的时候,所有的标点符号必须在英文输入状态下输入! 2. 打开与关闭文件, 文件要使用时,必需先对文件打开,使用后,在程序结束之前,必须要关闭文件,也就是说fopen和fclose是成对出现! 3. 掌握输入输出函数fscanf,fprintf,fread,fwrite等中每个参数的意义,以及相对位置。 参数书写位置一定不能搞错,如fscanf(fp,“%d,%f”,&i,&t); 绝对不可以写成fscanf( “%d,%f”,&i,&t ,fp); 10.3 测试与练习题 1. 程序阅读题 有如下程序 #include int i=20,j=30,k,n; fp=fopen(\ fprintf(fp,\fclose(fp); fp=fopen(\fscanf(fp,\printf(\ %d\\n\fclose(fp); } 程序运行后的输出结果是 。 A) 20 30 B) 10 30 C) 10 20 2.程序填空题 阅读下面题目,请补充完整。 #include \#include \void main() { FILE *fp; char ch; if((fp=fopen(\{ printf(\ exit(0);} ch=getchar(); while(ch!='#') { fputc( 【1】); ch=getchar(); } D) 20 10 【2】 ; } 【1】 A. fp,ch B. ch,file_s C. ch,fp D. file_s,ch 【2】 A. exit(0) B. fclose(fp) C. exit(fp) D. fclose(0) 3. 编程题 (1) 函数 ff(str,ch)的功能是统计并返回字符ch在字符串str中出现的次数。例如:调用ff(\后返回2,因为在字符串\中字符'e'出现了2次。 从键盘输入一个字符ch,输出该字符在文本文件 input.txt 的每一行中出现的次数。 ( 必须调用函数 ff(str,ch) )。例如:如果文件input.txt中存放了下列数据: every 121 I am a student. 运行程序,并输入'e'后,输出 2 0 1 (2)编写程序,从键盘输入3个学生的数据(学号,姓名,年龄,通信地址),将它们存入文件student;然后再从文件中读出数据,显示在屏幕上。 #include char address[10]; } stu[SIZE], out; /*请填写完整*/ 10.4 实验十 文件操作 一、实验目的与要求 1.掌握文件、文件指针的概念。 2.学会使用文件打开、关闭、读、写等文件操作函数。 3.实验2学时。 二、实验内容 1.程序完整题 填空横线处并调试程序:从键盘输入一行字符(以#字符结束),写到文件file1.txt中。注意文件打开方式的定义。 #include \#include \main() {FILE *fpout; char ch; if( ==NULL) {printf(\ exit(0);} while(( )!='#') {fputc(ch,fpout); } } 2.程序调试题 设文件NUMBER.DAT中放了一组整数。请修改以下程序并调试程序:统计并输出文件中正整数,零和负整数的个数。假设NUMBER.DAT文件内容为“1 2 3 0 -2 0”,输出结果应为positive:3,negtive:1,zero:2。 #include\FILE *fp; main() { int p=0,n=0,z=0,temp; fp=fopen(?number.dat?,?r?); /* error */ if(fp==NULL) printf(\else { while(feof(fp)) /* error */ { fscanf(fp,\ /* error */ if(temp>0) p++; else if (temp<0) n++; else z++; } fclose(fp); printf(\} } 3.一般编程题 (1)以下程序的功能是将文件file1.c的内容输出到屏幕上并复制到文件file2.c中。请将横线处添入适当的内容。 #include FILE *fp1,*fp2; fp1=fopen(\ /* 打开file2.c */ while (!feof(fp1)) putchar(fgetc(fp1)); /* 把文件file1.c的内容输出到屏幕 */ rewind(fp1); /* 把文件内部的位置指针移动文件首 */ /* 把文件file1.c的内容写入文件file2.c */ fclose(fp1); fclose(fp2); } (2) 请编写程序:从键盘输入一行字符串,将其中的小写字母全部转换成大写字母,然后输出到磁盘文件“upper.txt”中保存。 4.较难编程题 (1)请编写函数 sum_fact(number),返回number 的因子之和(能整除number的数就是它的因子,number定义为int)。例如sum_fact(6) = 12 (因为1, 2, 3, 6是6的因子)。 文本文件 input.txt 中存放了一批整数,将其中每个数的因子之和顺序写入文件 output.txt。 (必须调用函数 sum_fact(number)),例:若文件 input.txt 中存放了1, 2, 6 ,则每个数的因子之和分别是 1 3 12 ,它们被写入文件output.txt。 # include int sum_fact(int number) { /*请填写完整*/ } void main() { FILE *fpin, *fpout; int x; if (( fpin = fopen(\ printf( \ exit(0); } /*请填写完整*/ }
正在阅读:
C语言程序设计实验电子稿12-31
档案管理员岗位工作绩效考核细则06-30
历史教研组活动记录07-11
浅谈烟台山景区讲解员的讲解技巧05-22
鄂教版小学六年级上册语文期末总复习02-03
2022秋《时代广场的蟋蟀》阅读题库04-14
智慧背囊02-19
水土保持方案编写大纲(修改版)01-24
六上语文周末练习六上周末练习 第15周- jiaoshi07-08
低温实验讲义_霍尔效应测量05-24
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 程序设计
- 语言
- 实验
- 电子
- 关于保持党员先进性教育活动的调研报告
- 工程地震实习报告
- 瑞安市五校联考2017届九年级上期中数学试卷含答案解析
- 江苏政府留学奖学金人员手续办理流程示意图
- 中考数学专题复习讲座 第二十三讲 圆的有关概念及性质
- 会计从业资格(会计电算化)历年真题试卷汇编1
- 最新 长城汽车南非市场外部环境分析-精品
- 期中考试试卷
- 重塑与再造
- 方波和三角波发生器电路
- 郴州市普通中小学实验室常规管理细则(试行)
- 课堂上如何运用小组合作学习方式
- 组织病理切片制作流程(完整版)
- 走近陆游
- 高校基层团建的意义
- 房屋建筑有关质量检测和功能性试验资料清单表一
- 教师招聘考试教育法律法规知识简答题 - --教师网会员资料
- 浅谈我对我国小学数学教育的看法
- 苏教版小学语文三年级上册(第一单元)教材分析1
- 张岱年《中国文化概论》课件及课后习题答案