中南大学
C语言程序设计实践报告
题目通讯录程序设计
学生姓名
指导教师
学院
专业班级
完成时间
一、任务描述
通讯录程序设计
设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。
实现功能:(1)系统以菜单方式工作
(2)信息录入功能
(3)信息浏览功能
(4)信息查询功能
(5)信息修改功能
(6)系统退出功能
二、算法描述
设计一个实用的的小型通讯录程序必须具备系统以菜单方式工作、信息录入、信息浏览、信息查询、信息修改、系统退出功能,那么就需要这样的函数来实现。因此,我需要自定义这样的函数来解决问题,当然还会调用库函数。在定义函数的过程中会用到选择结构、循环结构等基本语句,以及对结构体数组的定义等。
三、程序设计
/******头文件(.h)***********/
#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*标准库函数*/
#include "string.h"/*字符串函数*/
#include "ctype.h" /*字符操作函数*/
#define M 50 /*定义常数表示记录数*/
typedef struct /*定义数据结构*/
{
char NAME[20]; /*姓名*/
char EMAIL[30]; /*邮箱*/
char TELE1[10]; /*电话*/
char TELE2[10]; /*电话*/
char HOMETOWN[30]; /*籍贯*/
}DATA;
/******以下是函数原型*******/
int enter(DATA t[]); /*输入记录*/
int add(DATA t[],int n); /*添加记录*/
int change(DATA t[],int n); /*修改记录*/
int deleter(DATA t[],int n); /*删除记录*/
void list(DATA t[],int n); /*显示记录*/
void search(DATA t[],int n); /*按姓名查找显示记录*/
void qseek(DATA t[],int n); /*快速查找记录*/
void print(DATA temp); /*显示单条记录*/
int find(DATA t[],int n,char *s) ; /*查找函数*/
int menu_select(); /*主菜单函数*/
/******主函数开始*******/
main()
{
int i;
DATA d[M]; /*定义结构体数组*/
int length; /*保存记录长度*/
system("cls");
for(;;)/*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ {
case 1:length=enter(d);break;/*输入记录*/
case 2:length=add(d,length); break; /*添加记录*/
case 3:length=deleter(d,length);break; /*删除记录*/
case 4:list(d,length);break; /*显示全部记录*/
case 5:search(d,length);break; /*查找记录*/
case 6:qseek(d,length);break; /*快速查找记录*/
case 7:length=change(d,length);break;
case 8:exit(0); /*如返回值为8则程序结束*/
}
}
}
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
* *\n");
printf(" * 1. 录入联系人数据 5.按姓名查找
*\n");
printf(" * *\n");
printf(" * 2. 添加联系人数据 6.快速查找
*\n");
printf("* *\n");
printf(" * 3. 删除联系人数据 7.修改联系人数据
*\n");
printf(" * *\n");
printf(" * 4. 显示全部联系人8.退出系统
*\n");
printf(" * *\n");
printf("* *\n");
printf("
****************************************************\n");
do{
printf("\n 请输入您的选项(1~8):"); /*提示输入选项*/
scanf("%s",s); /*输入选择项*/
c=atoi(s); /*将输入的字符串转化为整型数*/
}while(c<1||c>8); /*选择项不在1~7之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/
}
/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/
int enter(DATA t[])
{
int i,n;
system("cls");
printf("\n 请输入需录入数据的个数: "); /*提示信息*/
scanf("%d",&n); /*输入记录数*/
printf("\n 请输入数据:\n"); /*提示输入记录*/
printf("\n 姓名邮箱电话号码 1 电话号码 2 籍贯 \n");
printf("*-------*----------------*---------------*----------------*------------
---*\n");
for(i=0;i { scanf("%s%s%s%s%s",t[i].NAME,t[i].EMAIL,t[i].TELE1,t[i].TELE2,t[i].HOMETOWN); /*输入记录*/ printf("*---------------------------------------------------------------------- ---*\n"); } return n; /*返回记录条数*/ } /*显示记录,参数为记录数组和记录条数*/ void list(DATA t[],int n) { int i; system("cls"); printf("\n\n *****************************DATA************************************\n"); printf(" 姓名邮箱电话号码 1 电话号码 2 籍贯\n"); printf(" ---------------------------------------------------------------------\n"); for(i=0;i printf("%-20s%-30s%-10s%-10s%-30s\n",t[i].NAME,t[i].EMAIL,t[i].TELE1,t[i].TELE2 ,t[i].HOMETOWN); if((i+1)%10==0) /*判断输出是否达到10条记录*/ { printf(" 请输入任意键继续...\n"); /*提示信息*/ system ("pause"); } printf(" **********************************end**********************************\n"); } /*查找记录*/ void search(DATA t[],int n) { char s[20]; /*保存待查找姓名字符串*/ int i; /*保存查找到结点的序号*/ system("cls"); printf(" 请输入姓名 "); scanf("%s",s); /*输入待查找姓名*/ i=find(t,n,s); /*调用find函数,得到一个整数*/ if(i>n-1) /*如果整数i值大于n-1,说明没找到*/ printf("\n 未查找到该记录! \n"); else print(t[i]); /*找到,调用显示函数显示记录*/ } /*显示指定的一条记录*/ void print(DATA temp) { system("cls"); printf("********************************************************************\n" ); printf("姓名邮箱电话号码 1 电话号码 2 籍贯\n"); printf("---------------------------------------------------------------------\n "); printf("%-20s%-30s%-10s%-10s%-30s\n",https://www.wendangku.net/doc/2e17354597.html,,temp.EMAIL,temp.TELE1,temp.TELE2 ,temp.HOMETOWN); printf("**********************end***********************\n"); } /*查找函数,参数为记录数组和记录条数以及姓名s */ int find(DATA t[],int n,char *s) { int i; for(i=0;i { if(strcmp(s,t[i].NAME)==0) /*记录中的姓名和待比较的姓名是否相等*/ return i; /*相等,则返回该记录的下标号,程序提前结结束*/ } return i; /*返回i值*/ } /*修改函数*/ int change(DATA t[],int n) { DATA stu; char s[20]; int i,c; printf("请输入修改联系人的姓名:\n"); scanf("%s",s); i=find(t,n,s); if(i>n-1) /*如果整数i值大于n-1,说明没找到*/ printf("\n 未查找到该记录! \n"); else print(t[i]); printf(" @@@@@@@@@@@@@@@@\n"); printf(" @ 1代表修改姓名!@\n"); printf(" @ 2代表修改邮箱!@\n"); printf(" @ 3代表修改电话号码1!@\n"); printf(" @ 4代表修改电话号码2!@\n"); printf(" @ 5代表修改籍贯!@\n"); printf(" @@@@@@@@@@@@@@@@\n"); do{ printf("\n 请输入您的选项(1~5):"); /*提示输入选项*/ scanf("%d",&c); switch(c) { case 1:strcpy(https://www.wendangku.net/doc/2e17354597.html,,t[i].NAME);scanf("%s",t[i].NAME);printf("修改成功!\n");break; case 2:strcpy(stu.EMAIL,t[i].EMAIL);scanf("%s",t[i].EMAIL);printf("修改成功!\n");break; case 3:strcpy(stu.TELE1,t[i].TELE1);scanf("%s",t[i].TELE1);printf("修改成功!\n");break; case 4:strcpy(stu.TELE2,t[i].TELE2);scanf("%s",t[i].TELE2);printf("修改成功!\n");break; case 5:strcpy(stu.HOMETOWN,t[i].HOMETOWN);scanf("%s",&t[i].HOMETOWN);printf("修改成功!\n");break; } }while(c<1||c>5); /*选择项不在1~5之间重输*/ return n; } /*删除函数,参数为记录数组和记录条数*/ int deleter(DATA t[],int n) { char s[20]; /*要删除记录的姓名*/ int ch=0; int i,j; printf(" 请输入删除联系人姓名: "); /*提示信息*/ scanf("%s",s);/*输入姓名*/ i=find(t,n,s); /*调用find函数*/ if(i>n-1) /*如果i>n-1超过了数组的长度*/ printf(" \n 未找到要删除的记录!\n"); /*显示没找到要删除的记录*/ else { print(t[i]); /*调用输出函数显示该条记录信息*/ printf(" 确认是否删除该联系人(1~0)<提示:1为删除,0为不删除!>\n"); /*确认是否要删除*/ printf(" 请输入你的选项:"); scanf("%d",&ch); /*输入一个整数0或1*/ if(ch==1) /*如果确认删除整数为1*/ { for(j=i+1;j { strcpy(t[j-1].NAME,t[j].NAME); /*将后一条记录的姓名拷贝到前一条*/ strcpy(t[j-1].EMAIL,t[j].EMAIL); /*将后一条记录的单位拷贝到前一条*/ strcpy(t[j-1].TELE1,t[j].TELE1); /*将后一条记录的电话拷贝到前一条*/ strcpy(t[j-1].TELE2,t[j].TELE2); /*将后一条记录的电话拷贝到前一条*/ strcpy(t[j-1].HOMETOWN,t[j].HOMETOWN); /*将后一条记录的籍贯拷贝到前一条*/ } n--; /*记录数减1*/ printf("删除成功!!!\n"); } } return n; /*返回记录数*/ } /*添加记录函数,参数为结构体数组和记录数*/ int add(DATA t[],int n)/*添加函数,参数为结构体数组和记录数*/ { DATA temp; /*新插入记录信息*/ int i,j; char s[20]; /*确定插入在哪个记录之前*/ printf("请输入新插入联系人数据:\n"); printf(" ***********************************************************************\n"); printf(" 姓名邮箱电话号码 1 电话号码 2 籍贯\n"); printf(" -----------------------------------------------------------------------\n"); scanf("%s%s%s%s",https://www.wendangku.net/doc/2e17354597.html,,temp.EMAIL,temp.TELE1,temp.TELE2,temp.HOMETOWN); /*输入插入信息*/ printf(" -----------------------------------------------------------------------\n"); i=find(t,n,s); /*调用find,确定插入位置*/ for(j=n-1;j>=i;j--) /*从最后一个结点开始向后移动一条*/ { strcpy(t[j+1].NAME,t[j].NAME); /*将前记录的姓名复制到后一条*/ strcpy(t[j+1].EMAIL,t[j].EMAIL); /*将前记录的邮箱复制到后一条*/ strcpy(t[j+1].TELE1,t[j].TELE1); /*将前记录的电话复制到后一条*/ strcpy(t[j+1].TELE2,t[j].TELE2); /*将前记录的电话复制到后一条*/ strcpy(t[j+1].HOMETOWN,t[j].HOMETOWN); /*将前记录的籍贯复制到后一条*/ } strcpy(t[i].NAME,https://www.wendangku.net/doc/2e17354597.html,); /*将新插入记录的姓名复制到第i个位置*/ strcpy(t[i].EMAIL,temp.EMAIL); /*将新插入记录的邮箱复制到第i个位置*/ strcpy(t[i].TELE1,temp.TELE1); /*将新插入记录的电话复制到第i个位置*/ strcpy(t[i].TELE1,temp.TELE2); /*将新插入记录的电话复制到第i个位置*/ strcpy(t[i].HOMETOWN,temp.HOMETOWN); /*将新插记录的籍贯复制到第i个位置*/ n++; /*记录数加1*/ return n; /*返回记录数*/ } /*快速查找,参数为结构体数组和记录数*/ void qseek(DATA t[],int n) { char s[20]; int l,r,m; printf(" 请输入需快速查找的联系人姓名:"); /*提示输入*/ scanf("%s",s); /*输入待查找的姓名*/ l=0;r=n-1; /*设置左边界与右边界的初值*/ while(l<=r) /*当左边界<=右边界时*/ { m=(l+r)/2; /*计算中间位置*/ if(strcmp(t[m].NAME,s)==0) /*与中间结点姓名字段做比较判是否相等*/ { print(t[m]); /*如果相等,则调用print函数显示记录信息*/ return ; /*返回*/ } if(strcmp(t[m].NAME,s)<0) /*如果中间结点小*/ l=m+1; /*修改左边界*/ else r=m-1; /*否则,中间结点大,修改右边界*/ } if(l>r) /*如果左边界大于右边界时*/ printf(" 未查找到该联系人的相关记录!\n"); /*显示没找到*/ } 四、运行结果 五、总结 (一)设计过程中遇到的问题 对数组的调用:c语言规定只能逐个引用数组元素,而不能一次引用一个数组。自定义函数时需要有函数声明等问题。 (二)、解决问题的过程 C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y); }elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x); c 语言程序设计教程第二版课后习题 答 案 篇一: c 语言程序设计教程_李含光_ 郑关胜_ 清华大学 出版社习题答案习题答案[完美打印版]】1.单项选择题 (1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数 (2)主函数(main )(3)printf(),scanf()第 2 章习题参考答案 1.单项选择题 1-5 cbccc 6-10 cdcdc 11-13 dbb 2 .填空题 (1)1(2)26 (3)6 , 4 , 2 (4)10 , 6 (5)3.000000 (6)双精度(double )(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10 )%10 )*100+ (m/100 )*10+m%10 (12)0 (13)10 ,9 ,11(15) (x0y0)||(x0z0)||(y0||z0)(16 )double (17)x==0 (18)sqrt(fabs(a-b))/(3*(a+b))(19 )sqrt((x*x+y*y)/ (a+b)) 第 3 章习题参考答案 1.单项选择题 1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2 .填空题 (1)用;表示结束(2){ } (3 )y=x0?1:x==0?0:-1 (4)y%4==0y%100!=0||y%400==0 (5)上面未配对(6)default 标号(7)while ,do while ,for (8)do while (9)本次(10)本层3.阅读程序,指出结果 (1)yes (2)*(3)abother (4)28 70 (5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12 (11) i=6 ,k=4 (12)1,-2 4 .程序填空 (1)x:y ,u :z (2)m=n ,m !=0 ,m=m/10 (3)teps , t*n/(2*n+1) , printf( n”“,%2*lsf )(4)m%5==0 , C语言程序设计 实训报告 题目:红外避障机器人 院(系):信息工程系 专业:通信工程 学生姓名:韦嘉宝 学号: 24 指导教师:朱震周斌王旬全刘辉 2016 年10月8 日 目录 摘要 (1) 设计要求 (2) 设计步骤 (3) 代码编写 (4) 心得体会 (5) 参考文献 (6) 许多机器人使用雷达(RADAR)或者声纳(SONAR)来探测物体而不需要同物体接触。本文的方法是使用红外光来照射机器人前进的路线,然后确定何时有光线从被探测目标反射回来,通过检测反射回来的红外光就可以确定前方是否有物体。由于红外遥控技术的发展,现在红外线发射器和接收器已经很普及并且价格很便宜。 随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能小车。 机器人使用红外线二极管LED 作为前灯,如图6-1 所示。红外线二极管发射红外光线,如果机器人前面有障碍物,红外线从物体反射回来,相当于机器人眼睛的红外检测(接收)器,检测到反射回的红外光线,并发出信号来表明检测到从物体反射回红外线。机器人的大脑——单片机A T89S52 基于这个传感器的输入控制伺服电机。红外线(IR)接收/检测器有内置的光滤波器,除了需要检测的980 nm 波长的红外线外,它几乎不允许其他光通过。红外检测器还有一个电子滤波器,它只允许大约38.5 kHz 的电信号通过。换句话说,检测器只寻找每秒闪烁38500 次的红外光。这就防止了普通光源像太阳光和室内光对IR 的干涉。太阳光是直流干涉(0Hz)源,而室内光依赖于所在区域的主电源,闪烁频率接近100 Hz 或120 Hz。由于120 Hz 在电子滤波器的38.5 kHz 通带频率之外,它完全被IR 探测器忽略。 本任务将搭建并测试红外线发射和检测器对。本讲需要用到的新部件如下: 元件清单 (1)红外检测器,2 个。 (2)IR LED(带套筒),2 个。 (3)470? 电阻,2 个。 (4)连接线,若干。 二、设计要求 (1)小车能够完成前进、后退、左转、右转等动作。 (2)机器人能够读出传感器电平变化,并作相应的动作变化。 (3)利用机器人所装配的两个探测器,探测和避开障碍物。 三、设计步骤 实 验 报 告 二级学院:信息与工程学院 系别:计算机科学与技术系 专业:信息管理与信息系统 课程名称:高级语言程序设计 班级:姓名: 实验名称: 电话订餐信息处理 实验目的: 题目要求: 一个小饭馆的生意非常红火,要想用餐必须提前一天打电话预订,假设我们是饭馆负责接受电话预订的服务员,我们需要做些什么呢?首先,需要准备一张大小适当的白纸,等待顾客的电话。李红最先打进了电话,她预约第2天中午12点用餐,用餐人数5人,服务员在纸上做了如下记录:“李红 12点 5人”;接着,刘娜、汪涵、孙杰和赵君分别来了电话,服务员根据他们的要求做了记录,此时纸上记录的内容是: 李红 12点 5人 刘娜 11点 2人 汪涵 11点20分 3人 孙杰 10点30分 5人 赵君 13点20分 6人 孙杰随后又来电话,将用餐时间推后一个小时,那么记录的内容也应该做相应的修改。刘娜来用餐以后,可以将其信息从纸上划去 编写程序处理电话订餐的情况 实验步骤: 首先建立结构体类型,然后函数声明,编写主函数,定义函数,调用函数。完成后,对程序进行调试,确定所编写的程序是否能够运行。 实验内容: #include<> #include<> #define max 30 struct guest { intnum; char name[40]; char time[20]; int sum; }guestlink[max]; void insert(int *p); void inquire(int); void change(int); void dele(int *p); void show(int); void main() { inti; int count=0; do {0 printf("1.......插入\n"); printf("2.......查询\n"); printf("3.......修改\n"); printf("4.......删除\n"); printf("5.......显示\n"); printf("6.......退出\n"); scanf("%d",&i); switch(i) { case 1: insert(&count);break; case 2: inquire(count);break; case 3: change(count);break; case 4: dele(&count);break; case 5: show(count);break; case 6:break; default:printf("输入错误!");break; } }while(i!=6); } 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20. C语言实习报告(用链表实现学生学籍管理) 绪言 C语言使国内外广泛使用的一种计算机语言。C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好。既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合编写系统软件。 在经过一整个学期的C语言理论学习,我们已经能够掌握其基本语法,但是缺乏一定的实际运用的能力。为了让我们更好的理解和运用其解决实际问题,并且对结构化程序有更进一步的认识,学校组织了这一次C语言实习。 实习中,我们将按要求完成一个较为复杂的程序编写——学生学籍管理程序。 实习基本内容和要求: 1、总体功能要求 (1)链表的建立:每个节点包括:学号、姓名、性别、语文、数学、英语、总分; (2)节点的插入:按学号的顺序插入; (3)删除链表中的节点:按学号或者姓名; (4)链表的输出:按学号排序、按总分排序。 2、性能的要求: (1)各个功能分别用函数实现; (2)节点信息让用户通过键盘输入 (3)总分通过计算获得; (4)有简单的操作界面; 尽可能考虑程序的容错性、可操作性。 教材和主要参考书目: (1)教材:《C程序设计》,谭浩强编著,清华大学出版社(2)主要参考书目: ①《C程序设计教程》,谭浩强编著,清华大学出版社; ②《C语言程序设计——习题与实验指导》,谭浩强编著,清华大学出版社。实习过程: 我们将有5天的时间完成一个程序和一份实习报告。 1、我们要根据题目的要求进行需求分析和资料整理;(1天) 2、我们利用资料、教材和寻求他人帮助完成详细设计;(注: 关键部分解释说明)(3天) 3、完成一份对自己程序详细描述与解释的报告。(1天) 习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。 #include 设计报告 一,实验目的: 通过上机实习,熟练掌握循环语句、选择语句、指针以及结构体的运用技巧。在实习中通过 实际操作,编写程序,发现问题,最后解决问题,提升对c语言实用性的理解,在实践中巩固各知 识点。 C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点,上 机实习可以帮助我们更好地理解这种结构式的 中级语言以及其各式各样的数据类型和高效率 的运算程序,为我们进一步学习C++打下坚实基 础。 同时,在实习过程中,通过互相发现问题,共同解决问题,不仅锻炼了我们的合作能力,而 且也让我们发现了一些自己的个人误区以及其 他人容易犯的错误,从而在今后的学习中更加谨 慎,达到事半功倍的效果;通过询问老师,也让 我们养成了不耻下问的好习惯,这将很有利于以 后的学习。 闲乐-一个人闲。不如大家一块儿乐https://www.wendangku.net/doc/2e17354597.html, 二,总体设计: 1,学生成绩排名 1,流程图: <通过冒泡法对数组进行排序> <测试时由于循环语句循环次数的错误导致部分数据没有排序,修改FOR语言中的条件即可调试成功>C语言程序设计第三版习题库答案
c语言程序设计教程第二版课后习题答案
C语言实训报告
c语言实践报告
C语言程序设计试题集与答案解析
C语言实习报告
c语言程序设计第五版习题答案
C语言实习报告