C语言程序设计习题答案与上机指导(上机指导)课件_第1页
C语言程序设计习题答案与上机指导(上机指导)课件_第2页
C语言程序设计习题答案与上机指导(上机指导)课件_第3页
C语言程序设计习题答案与上机指导(上机指导)课件_第4页
C语言程序设计习题答案与上机指导(上机指导)课件_第5页
已阅读5页,还剩119页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一C程序集成开发环境实验一C程序集成开发环境一、实验目的1.熟练掌握Windows操作系统下VisualC++6.0集成开发环境,了解DOS操作系统下TurboC2.0的基本操作方法。2.熟悉C程序编辑、编译、连接和运行程序的基本过程。3.了解C程序常见的两类语法错误(Error/Warning)及修改方法。实验一C程序集成开发环境二、实验内容【题目1-1】熟悉VisualC++6.0集成开发环境的使用及调试方法,并设计简单的求和程序,以计算两个整数的和值。1.测试数据输入:1234,5678↙输出:69122.题目分析(1)利用scanf函数,从键盘输入两个整数,并存放于指定变量a,b中。(2)用户自定义Sum函数,将a,b变量的内容传入该函数的形参x,y中。(3)调用Sum函数,并用printf函数将和值输出。实验一C程序集成开发环境二、实验内容3.参考代码#include<stdio.h>intSum(intx,inty){intz;z=x+y;returnz; } main() { inta,b; scanf(“%d,%d”,&a,&b);printf(“Sumis%d\n”,Sum(a,b));}实验一C程序集成开发环境4操作过程(1)VisualC++6.0集成开发环境①启动VisualC++6.0VisualC++6.0的启动,可以使用菜单操作,选择开始菜单->所有程序->MicrosoftVisualStudio6.0->MicrosoftVisualC++6.0。启动后的界面见图1-1所示实验一C程序集成开发环境②编辑操作编辑操作选择“File->new”菜单,如图1-2所示。在出现的“New”对话框中选择“Files”选项卡,再在列表中选择“C++sourceFile”,注意在右边“File”中填写文件名,比如Test.c,在“Location”中填写源程序文件存放的位置,比如将Test.c存放在E盘。参见图1-3。实验一C程序集成开发环境②编辑操作编辑操作选择“File->new”菜单,如图1-2所示。在出现的“New”对话框中选择“Files”选项卡,再在列表中选择“C++sourceFile”,注意在右边“File”中填写文件名,比如Test.c,在“Location”中填写源程序文件存放的位置,比如将Test.c存放在E盘。参见图1-3。实验一C程序集成开发环境②编辑操作在文件编辑窗口输入源程序,如图1-4。实验一C程序集成开发环境③

编译操作

选择Build->Compile命令,编译源程序Hello.c,出现提示窗口,单击是(Y)按钮,如图1-5所示。实验一C程序集成开发环境④连接操作选择Build->BuildHello.exe命令,进行连接操作,如果没有错误,则显示Hello.exe-0error(s),0warning(s),生成了可执行文件Hello.exe。⑤运行程序选择Build->ExecuteHello.exe命令,可以运行Hello.exe程序,键盘输入1234,5678,则输出程序运行结果,如图1-6。⑥退出实验一C程序集成开发环境(2)调试与跟踪①打开文件打开已经保存的源程序文件,可以选择File->Open命令。如果在上一小节第(3)步中已经创建了工作区,则在文件类型中选择Workspaces类型,文件名选择Hello,如图1-7所示。实验一C程序集成开发环境如果没有创建工作区,则在文件类型中选择C++Files类型,文件名选择Hello,如图1-8所示。实验一C程序集成开发环境②错误提示及修改如果是普通的语法错误,例如在程序inta,b语句中,缺失了“;”,则在执行Build->Compile命令后,会给出错误原因errorC2146:syntaxerror:missing';'beforeidentifier'scanf',用户可以在该错误上按鼠标右键,在弹出菜单中选择GoToError/Tag,转到错误语句上进行修改,如图1-9。实验一C程序集成开发环境对于函数定义错误,例如在定义函数名时,将函数定义为intSumm(intx,inty),在执行Build->Compile命令,只会给出警告提示,但是在执行Build->BuildHello.exe命令命令后,则会给出错误提示Hello.obj:errorLNK2001:unresolvedexternalsymbol_Sum,如图1-10所示。实验一C程序集成开发环境③单步跟踪如果用户希望单步执行程序,以考察执行效果,可以单击键盘F10按键,每次单击F10均可执行一条语句,例如在图1-11中为2次单击F10后,用户输入1234,5678后,箭头代表将要执行的下一条语句(即printf),并可以在Auto窗口中看到变量a,b的内存地址(以&a,&b表示)和内容。实验一C程序集成开发环境④转入函数内部如果希望进入函数体内部,可以单击F11键,此时程序将转入到sum函数中,注意在图1-12中箭头指向sum函数的起始行,以及形参x,y的内容。实验一C程序集成开发环境⑤运行到光标处用户也可以将光标定位到returnz;行,按Ctrl+F10组合键,一步执行到光标所在行,并得到z的返回值,如图1-13所示。实验一C程序集成开发环境⑤运行到光标处用户也可以将光标定位到returnz;行,按Ctrl+F10组合键,一步执行到光标所在行,并得到z的返回值,如图1-13所示。实验二数据类型、运算符和表达式实验二数据类型、运算符和表达式一、实验目的1.熟练掌握C语言各种数据类型的含义。2.理解常量和变量的区别。3.熟练掌握变量定义和使用。4.熟悉常用的运算符包括算术、赋值、强制类型转换、自增(减)、逗号和位运算等。实验二数据类型、运算符和表达式二、实验内容【题目2-1】编写整型、实型和字符类型的简单测试程序,并输出以验证是否正确。1.测试数据输入:无。输出:略。2.题目分析(1)整型数据采用十进制、八进制和十六进制表示。(2)字符型数据采用单引号限界字符和转义字符来表示。(3)大小写字母的ASCII值相差32。实验二数据类型、运算符和表达式3.参考代码#include"stdio.h"#definePI3.14159/*符号常量*/main(){ intn1=10,n2=017,n3=0xFF;/*整型数据3种表示方法*/

floatf1=3.14E5,f2=12.34f;/*实型数据的表示方法*/ charc,c1='A',c2='\101',c3='\0x61',c4='\\';/*字符型数据的几种表示方法*/

/*整型数据以原进制输出*/ printf("n1=%d,n2=%o,n3=%x\n",n1,n2,n3); /*整型数据以十进制输出*/ printf("n1=%d,n2=%d,n3=%d\n",n1,n2,n3); /*实型数据输出*/实验二数据类型、运算符和表达式3.参考代码 /*符号常量的输出*/printf("PI=%f\n",PI); /*字符型数据的输出*/ printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4); c=c1+32;/*字母转换为小写*/ printf("c1=%c,c=%c\n",c1,c); }实验二数据类型、运算符和表达式4.参考结果实验二数据类型、运算符和表达式【题目0205】取整数1234的各个数位上的数字,并编程上机验证。1.测试数据输入:无。输出:12342.题目分析(1)取千位上的数字i/1000。(2)取百位上的数字i%1000/100。(3)取十位上的数字i%100/10。(4)取个位上的数字i%10。实验二数据类型、运算符和表达式3.参考代码#include"stdio.h"main(){inti=1234;intn1,n2,n3,n4;n4=i/1000;n3=i%1000/100;n2=i%100/10;n1=i%10;printf("%d%d%d%d\n",n4,n3,n2,n1);}实验二数据类型、运算符和表达式4.参考结果实验三顺序结构程序设计实验三顺序结构程序设计一、实验目的1.熟练掌握scanf和printf函数格式控制字符的含义以及输出方法的设计。2.培养编制程序框图和顺序结构程序的编写能力。实验三顺序结构程序设计二、实验内容【题目3-1】输入学生平时成绩(占10%)、实验成绩(占20%)和考试成绩(占70%),程序计算出该学生的总成绩,保留2位小数。1.测试数据输入:85↙76↙92↙输出:平时成绩(占%10):85实验成绩(占%20):76考试成绩(占%70):92总成绩为88.10实验三顺序结构程序设计2.题目分析(1)三科成绩定义为整型类型。(2)总成绩应定义为实型类型。(3)保留2位小数采用”%.2f”格式。(4)程序流程图如下:实验三顺序结构程序设计3.参考代码#include"stdio.h"main(){

intattendance,laboratory,quiz;

floatfinal;printf("\n请输入平时成绩:");scanf("%d",&attendance);printf("\n请输入实验成绩:");scanf("%d",&laboratory);printf("\n请输入考试成绩:");scanf("%d",&quiz);final=0.1*attendance+0.2*laboratory+0.7*quiz;printf("\n平时成绩(占%%10):%d实验成绩(占%%20):%d考试成绩(占%%70):%d\n",attendance,laboratory,quiz);printf("\n总成绩为:%.2f\n\n",final);}实验三顺序结构程序设计4.参考结果实验三顺序结构程序设计【题目0302】利用海伦公式计算三角形面积,保留3位小数。1.测试数据输入:3,4,5↙输出:三角形的面积为:6.0000002.题目分析(1)定义三边长分别为a、b、c,三角形的面积area,类型为实型。(2)p为半周长,定义类型为实型,公式为p=(a+b+c)/2(3)面积公式为area=。开方可采用sqrt函数(需要包含头文件”math.h”)。(4)程序流程图。由读者自行设计。实验三顺序结构程序设计3.参考代码#include"math.h"#include"stdio.h"main(){floata,b,c,p,area;printf("请输入三边边长:\n");scanf("%f,%f,%f",&a,&b,&c);p=(a+b+c)/2;area=sqrt(p*(p-a)*(p-b)*(p-c));printf("三角形的面积为:%f\n",area);}实验三顺序结构程序设计4.参考结果实验四选择结构程序设计实验四选择结构程序设计一、实验目的1.熟练掌握关系、逻辑运算符及其表达式。2.掌握if语句及嵌套if的使用。3.掌握switch语句的使用实验四选择结构程序设计二、实验内容【题目4-1】有如下分段函数,要求输入x的值,求y的值。

1.测试数据输入:2↙输出:y=-6.000000输入:-5↙输出:y=5.000000实验四选择结构程序设计二、实验内容2.题目分析(1)x,y定义为实型类型。(2)三条支路,可采用if-elseif-else结构实现。(3)绝对值可采用数学库abs(x)函数。(4)部分流程图如下:实验四选择结构程序设计3.参考代码#include"math.h"#include"stdio.h"main(){floatx,y; printf("请输入变量x的值\n"); scanf("%f",&x); if(x>=3) y=x+1; elseif(x>=0) y=abs(-x)-8; else y=sqrt(x*x); printf("y=%f\n",y);}实验四选择结构程序设计4.参考结果实验四选择结构程序设计【题目4-2】设计程序,将给出的百分制成绩,转换等级输出。例如90分及以上为优秀,80~89分为良好,70~79分为中等,60~69分为及格,60分以下为不及格。1.测试数据输入:67↙输出:及格实验四选择结构程序设计2.题目分析(1)成绩变量score定义为整型类型。(2)五条支路,最好采用switch结构实现。(3)利用score/10将分数区间转换为与若干常量相对应。(4)部分流程图如下:实验四选择结构程序设计#include"stdio.h"main(){intscore; printf("请输入学生的成绩\n"); scanf("%d",&score); if(score<0) printf("输入成绩有误!\n"); else switch(score/10) {

case6:printf("及格\n");break; case7:printf("中等\n");break; case8:printf("良好\n");break; case9: case10:printf("优秀\n");break; default:printf("不及格\n"); }}实验四选择结构程序设计4.参考结果实验五循环结构程序设计实验五循环结构程序设计一、实验目的1.熟练掌握while,do-while,for循环的语法结构和使用方式。2.了解多重循环的循环执行过程。3.掌握continue和break语句的特点和使用方式。实验五循环结构程序设计二、实验内容【题目5-1】根据例5-8,编写求解100~500之间所有素数的程序。1.测试数据输入:无。输出:略。2.题目分析(1)采用两层循环,内层循环用于判断某个数是否为素数,外层循环用于在100~500循环选数。(2)count%10==0每行显示10个素数。(3)程序流程图参见例5-8。实验五循环结构程序设计3.参考代码#include"stdio.h"#include"math.h"voidmain(){intn,k,j,count=0; for(n=101;n<500;n+=2){ k=sqrt(n); for(j=2;j<=k;j++) if(n%j==0)break; if(j>=k+1) { printf("%d",n); count++; if(count%10==0) printf("\n"); } }}实验五循环结构程序设计4.参考结果实验五循环结构程序设计【题目0503】输入两个整数,用辗转相除法求它们的最大公约数和最小公倍数。1.测试数据输入:32,48↙输出:32和48的最大公约数为1632和48的最小公倍数为962.题目分析(1)最大公约数算法:输入两个数m,n(默认m>n)。k为m除以n的余数(k=m%n),如果m能被n整除,则k值为0,n为这两个数的最大公约数,否则,将k的值存入n中(n=k),n的值存入m中(m=n),重复以上过程,直到k值为0。(2)最小公倍数为m0*n0/m,其中m0*n0为原始两个数m,n的乘积,m为最大公约数。实验五循环结构程序设计(3)部分程序框图如下:实验五循环结构程序设计3.参考代码#include"stdio.h"main(){ intm,n,k=1,temp; intm0,n0; scanf("%d,%d",&m,&n); m0=m; n0=n; if(m<n) {

temp=m; m=n;

实验五循环结构程序设计3.参考代码

n=temp; } while(k!=0) { k=m%n; m=n; n=k; }printf("%d和%d的最大公约数为%d\n",m0,n0,m);printf("%d和%d的最小公倍数为%d\n",m0,n0,m0*n0/m);}实验五循环结构程序设计4.参考结果

实验六数组实验六数组一、实验目的1.了解数组的特点,掌握一维数组及二维数组的定义、初始化及其使用方法;2.熟练使用一维及二维数组解决实际问题;3.掌握字符数组的使用;4.掌握与数组有关的算法。实验六数组二、实验内容【题目6-1】在一个有序的数组中插入一个元素,并保持数组有序。1.测试数据输入:1122334455667788↙30输出:1122303344556677882.题目分析(1)原始数组要有足够的存储空间,以便能继续存放后插入的元素;(2)插入操作需要先确定待插入的位置,然后将此位置及后面的数组元素后移,空出这个位置,最后将待插入元素放在这个位置上。实验六数组3.参考代码#include<stdio.h>voidmain(){inta[10];intx,i;printf("请输入数组:");for(i=0;i<=7;i++)scanf("%d",&a[i]);printf("请输入待插入元素:");scanf("%d",&x);/*输入待插入元素x*/i=7;while((x<a[i])&&(i>=0))/*从后向前查找x的位置,同时将大于x的数组元素后移*/实验六数组3.参考代码

{a[i+1]=a[i];i--;}a[i+1]=x;printf("操作后结果:");for(i=0;i<=8;i++)printf("%3d",a[i]);printf("\n\n");}实验六数组4.参考结果实验六数组【题目0604】由键盘输入两个字符串,编写程序实现这两个字符串的比较功能。1.测试数据输入:China↙Chinese↙输出:China<Chinese2.题目分析(1)需要使用两个字符数组存放被比较的两个字符串,注意数组长度要足够容纳字符串。另外,需要设定一变量i,用于在字符串中逐个标识字符的下标。(2)字符串比较是基于字母序原理,因此需要做循环逐个比较对应位置上字符ASCII码的大小。实验六数组3.参考代码

#include<stdio.h>voidmain(){charstr1[30],str2[30];inti=0;printf("请输入两个字符串:\n");gets(str1);gets(str2);while((str1[i]!='\0')&&(str2[i]!='\0'))/*当两字符串都不空时,逐个字符比较*/{if(str1[i]!=str2[i])break;i++;

}实验六数组3.参考代码

if(str1[i]>str2[i])printf("判断结果:%s>%s\n",str1,str2);elseif(str1[i]<str2[i])printf("判断结果:%s<%s\n",str1,str2);elseprintf("判断结果:%s=%s\n",str1,str2);}实验六数组4.参考结果实验七函数实验七函数一、实验目的1.掌握函数定义(返回、函数名、参数、函数体)、调用;2.掌握函数实参与形参的对应关系;3.掌握函数的嵌套调用和递归调用的方法;4.掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法;实验七函数二、实验内容【题目7-1】键盘输入三角形三个边长的值,求该三角形面积,用函数调用的形式实现。1.测试数据输入:3.04.05.0↙输出:6.002.题目分析(1)设三角形边长为a、b、c,面积area的算法是:area_s=sqrt(s*(s-a)*(s-b)*(s-c)),其中s=(a+b+c)/2.0;(2)要计算三角形面积,需要用到三个参数,即形参和实参的个数为3,求面积子函数的返回值类型应为浮点型。实验七函数3.参考代码#include"math.h"#include"stdio.h"floatarea(float,float,float);voidmain(){floata,b,c;printf("输入三角形的三个边长:");scanf("%f%f%f",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a&&a>0.0&&b>0.0&&c>0.0)printf("此三角形面积为:%-7.2f\n\n",area(a,b,c));}实验七函数3.参考代码/*以下是计算任意三角形面积的函数*/floatarea(floata,floatb,floatc){floats,area_s;s=(a+b+c)/2.0;area_s=sqrt(s*(s-a)*(s-b)*(s-c));return(area_s);}实验七函数4.参考结果实验七函数【题目0703】利用函数递归调用的思想编写程序,将一个整数的低位变成高位,高位变成低位组成另一个整数。1.测试数据输入:1234↙输出:43212.题目分析定义一个递归函数实现整数变换,变换思路为func(1234,0)=func(123,4)=func(12,43)=func(1,432)=func(0,4321)=4321。实验七函数3.参考代码

#include"stdio.h"intfunc(intn,intm){if(n==0)returnm;elsereturnfunc(n/10,m*10+n%10);/*递归调用*/}voidmain(){intn; printf("输入一个整数:");scanf("%d",&n); printf("变换后的整数:%d\n\n",func(n,0));}实验七函数4.参考结果实验八预处理命令实验八预处理命令一、实验目的1.掌握宏定义的方法2.掌握文件包含处理的方法3.掌握条件编译的方法实验八预处理命令二、实验内容【题目0801】定义一个带参数的宏,使两个参数的值互换。要求由键盘输入的两个数作为使用宏时的实参。1.测试数据测试数据输入:5533↙输出:33552.题目分析注意宏参数和函数参数的不同。实验八预处理命令3.参考代码#include<stdio.h>#defineswap(a,b)t=b;b=a;a=t;voidmain(){inta,b,t;printf("输入两个整数:");scanf("%d%d",&a,&b);swap(a,b);printf("两个整数互换:%d%d\n\n",a,b);}实验八预处理命令4.参考结果实验八预处理命令【题目0802】用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出:一为原文输出;一为将字母变成其下一个字母(如‘a’变成‘b’,……,‘z’变成‘a’),其它非字母字符不变。用#define命令来控制是否要译成密码。例如:

#defineCHANGE1则按密码形式输出。若

#defineCHANGE0则按原码形式输出。实验八预处理命令1.测试数据测试数据输入:abcxyzABCXYZ↙输出:bcdyzaBCDYZA

2.题目分析如果想按原文形式输出,将下面程序中第3行改为:#defineCHANGE0即可。实验八预处理命令3.参考代码#include"stdio.h"#defineMAX80#defineCHANGE1voidmain(){charstr[MAX];inti;printf("输入原文:");gets(str);#if(CHANGE){for(i=0;i<MAX;i++)

实验八预处理命令3.参考代码

{if(str[i]!='\0')if(str[i]>='a'&&str[i]<'z'||str[i]>='A'&&str[i]<'Z')str[i]+=1;elseif(str[i]=='z'||str[i]=='Z')str[i]-=25;}}#endifprintf("输出译文:%s\n\n",str);}实验八预处理命令4.参考结果实验九指针实验九指针一、实验目的1.掌握指针的概念,掌握定义和使用指针变量的方法;2.掌握指向数组的指针变量的用法;3.掌握指向字符串的指针变量的用法;4.掌握指向函数的指针变量的用法;5.了解二级指针的概念及其使用方法。实验九指针二、实验内容【题目0901】由键盘输入两个整数,编写程序实现两个数的互换,使用指针作函数参数的方式实现。1.测试数据输入:5533↙输出:33552.题目分析(1)定义一个子函数swap(),实现两数互换,swap函数的形参是两个指向整型数据的指针;(2)在main函数中将两个整型变量的地址作实参,传递给swap函数;(3)注意swap函数中,用于两数互换的临时变量temp应定义为整型,而不是指针型。实验九指针3.参考代码#include"stdio.h"voidswap(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}intmain(){inta,b;int*pa,*pb;printf("输入两个整数:");实验九指针3.参考代码scanf("%d%d",&a,&b);pa=&a;pb=&b;swap(pa,pb);printf("输出互换结果:%d%d\n",a,b);}实验九指针4.参考结果实验九指针【题目0904】根据零点定理求方程式f(x)=0的解。设f(x)在区间[a,b]上连续,且f(a)f(b)<0。根据零点定理,f(x)在该区间内必存在零点。编写程序求方程式f(x)=0在区间[a,b]上的解。令误差为1×10-12。并求方程在区间[0,2]上的解及方程在区间[2,7]上的解。1.测试数据输入:0,2↙输出:1.299550输入:2,7↙输出:3.000000实验九指针2.题目分析(1)依题,需要设计3个子函数,bisection()、f1()、f2(),分别完成利用零点定理求解和表达两个方程式左式的功能;;(2)函数bisection的定义形式非常重要,将它调用函数的参数定义为指向函数的指针。这样,每次调用bisection()就可以求解不同方程的解。定义形式为:doublebisection(double(*f)(doublex),doublea,doubleb);其中f是指向函数的指针,a和b代表求解区间上下界。实验九指针3.参考代码#include<math.h>#include<stdio.h>constdoubleeps=1e-12;doublebisection(double(*f)(doublex),doublea,doubleb){doublemid=(a+b)/2;if((f(mid)==0)||(b-a<eps))returnmid;elseif(f(a)*f(mid)<0) returnbisection(f,a,mid); elsereturnbisection(f,mid,b);}doublef1(doublex){return1/(pow((x-0.3),2)+0.01)+1/(pow((x-0.9),2)+0.04)-6;}doublef2(doublex){returnpow((x-2),2)-1;}实验九指针3.参考代码voidmain(){doublea,b,result;printf("输入方程式1求解区间:");scanf("%lf,%lf",&a,&b);result=bisection(f1,a,b);printf("方程式1的解=%lf\n",result);printf("输入方程式1求解区间:");scanf("%lf,%lf",&a,&b);result=bisection(f2,a,b);printf("方程式1的解=%lf\n",result);}实验九指针4.参考结果实验十结构体与共用体实验十结构体与共用体一、实验目的1.掌握结构体类型变量的定义及使用2.掌握结构体变量的引用形式,结构体数组的应用3.理解结构体作为不同数据类型的一个整体在实际编程中的应用实验十结构体与共用体二、实验内容【题目10-1】有3名学生的基本信息,每名学生的基本信息包括:学号、姓名、语文成绩、数学成绩、总分、平均分等数据项。根据各科成绩计算总分和平均分,并输出这3名学生的信息。1.测试数据输入:无输出:参见4。2.题目分析利用结构体类型数组元素存放3名学生的信息,并根据要求求出总分和平均分。实验十结构体与共用体3.参考代码#defineN3#include"stdio.h"structstudent{charnum[8];charname[20];floatchi_score,math_score;floatsum;floataverage;};main(){inti;structstudentstud[N]={{"201201","Zhao",80,90},{"201202","Qian",70,60},{"201201","Sun",80,60}};

/*计算学生的总分和平均分*/实验十结构体与共用体3.参考代码for(i=0;i<N;i++){stud[i].sum=stud[i].chi_score+stud[i].math_score;stud[i].average=stud[i].sum/3;}/*输出学生的基本信息情况*/printf("\nNumberNameChineseMathSumAverage");printf("\n----------------------------------------------------");for(i=0;i<N;i++){printf("\n%-8s%-4s%",stud[i].num,stud[i].name);printf("%8.1f%8.1f",stud[i].chi_score,stud[i].math_score);printf("%8.1f%8.1f",stud[i].sum,stud[i].average);}printf("\n----------------------------------------------------\n\n");}实验十结构体与共用体4.参考结果实验十结构体与共用体【题目10-2】每个用户的信息包括姓名和电话号码。编写程序将用户信息按姓名以字母序输出。要求利用指向结构体的指针实现。1.测试数据输入:无输出:参见4。2.题目分析(1)需定义一个包含用户姓名和电话号码两个成员的结构体类型USER。由于字符串以‘\n’作为结束标志,所以数组长度应至少比实际数据长度多1。main函数中定义一个长度为N的USER类型结构体数组user,用于存放N位用户的信息。(2)子函数SortUser()利用选择法将N位用户按其姓名以字母序排列;子函数OutputUser()将重新排列的用户信息屏幕输出;两个子函数均采用指向结构体的指针变量作形参,因此子函数对结构体数组元素的修改能够体现在主函数中。main函数顺次调用这两个子函数,采用结构体数组名作实参,将数组首地址传递给形参指针。实验十结构体与共用体3.参考代码#include<stdio.h>#include<string.h>#defineN3typedefstruct{/*定义结构体类型USER,表征用户信息*/charname[20];chartel[15];}USER;voidSortUser(USER*u,intn)/*实现用户信息按姓名排序功能*/{inti,j,k;USERtemp;

实验十结构体与共用体3.参考代码for(i=0;i<n-1;i++){k=i;for(j=i;j<n;j++)if(strcmp(u[j].name,u[k].name)<0)k=j;if(k!=i){temp=u[k];u[k]=u[i];u[i]=temp;}}}

实验十结构体与共用体3.参考代码voidOutputUser(USER*u,intn)/*实现输出用户信息功能*/{inti;printf("Sortedusers:\n");for(i=0;i<=n-1;i++)printf("%6s%10s\n",u[i].name,u[i].tel); printf("\n\n");}voidmain()/*主函数中依次调用各子函数*/{USERuser[N]={{"Zhao","80010000"},{"Qian","80010001"},{"Sun","80010002"}};SortUser(user,N);OutputUser(user,N);}实验十结构体与共用体4.参考结果实验十一文件实验十一文件一、实验目的1.掌握文件的打开和关闭方式。2.ASCII和二进制文件读写函数的使用方法。3.状态检测函数的使用方法。实验十一文件二、实验内容【题目11-1】使用字符文件输入输出函数,将用户从键盘上输入的字符存入到指定的文件中,直到遇到”#”结束输入。1.测试数据输入:d:\\output.txt↙ILoveChina!#输出:ILoveChina!2.题目分析(1)字符显示采用putchar函数。(2)接受用户输入字符使用getchar函数。(3)文件存入操作采用fputc函数。实验十一文件3.参考代码#include"stdio.h"voidmain(){ charch; charFileName[20]; FILE*fp; printf("请输入存入的文件名\n"); scanf("%s",FileName); if((fp=fopen(FileName,"w"))==NULL) { printf("无法打开文件!\n"); exit(0);

};实验十一文件3.参考代码 printf("请输入要保存的文本内容\n"); ch=getchar(); while(ch!='#') {putchar(ch); fputc(ch,fp); ch=getchar(); }fclose(fp); printf("\n");}实验十一文件4.参考结果

实验十一文件【题目11-2】使用格式化文件输入输出函数,完成如下功能(1)输入若干学生的数据(学号,姓名,成绩),并存储在文件d盘文件stud.txt中;(2)从文件读出学生数据,打印全部的学生的相关信息.1.测试数据输入:3↙001WANG78↙002FANG67↙003HAN98↙输出:001WANG78.000000002FANG67.000000003HAN98.000000实验十一文件2.题目分析(1)文件存入采用语句fprintf(fp,"%s%s%f",stu.no,,stu.score)。(2)文件读出采用语句fscanf(fp,"%s%s%f",stu.no,,&stu.score)。3.参考代码#include"s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论