c程序设计实验内容.docx
- 文档编号:30119768
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:17
- 大小:44.91KB
c程序设计实验内容.docx
《c程序设计实验内容.docx》由会员分享,可在线阅读,更多相关《c程序设计实验内容.docx(17页珍藏版)》请在冰豆网上搜索。
c程序设计实验内容
软件学院实验卡和实验报告
学号:
姓名:
年级专业班级:
实验室组别实验日期年月日
课程名称
C语言程序设计B
实验课时
4
实验项目
安装和熟悉编译器环境
26529-01
实验时间
实验目的
1、掌握使用VS2010编写c程序的基本方法
2、掌握调试排错技巧
实验环境
PC机、VS2010
实验内容和原理
一、完成课后练习,完成空心正方形和实心菱形的输出;
二、学会断点设置、单步调试;
三、掌握变量监视;
1、
实验步骤方法关键代码
//仅保留最核心代码、注释或者伪码
测试记录
分析结论
//主要运行结果及说明
小结
//个人本次实验收获和体会
软件学院实验卡和实验报告
学号:
姓名:
年级专业班级:
实验室组别实验日期年月日
课程名称
C语言程序设计B
实验课时
4
实验项目
控制结构和函数练习
26529-02
实验时间
实验目的
3、掌握条件表达式和基本控制流语句if/else、switch、for/while的使用
4、掌握应用函数进行模块化程序设计的技巧
实验环境
PC机、VS2010
实验内容和原理
2、一、中国有句俗语叫“三天打鱼两天晒网”。
某人从每年1月1日起开始“三天打鱼两天晒网”,问这个人在该年的某一天是“打鱼”还是“晒网”。
3、二、航空货物托运费用计算程序
说明:
春秋航空公司对物品超重的旅客实行分段收费,收费标准如下表。
请为春秋航空公司设计“航空货物托运费用计算程序”。
1、实现菜单输出,每次选择后再显示菜单
菜单项包括:
(1)接收数据输入
(2)计算托运费用
(3)显示费用等信息
(4)退出
2、可以根据用户输入选择进入相应的操作
3、分别实现input()、calc()、output()的功能函数,分段计费要求如下:
实验步骤方法关键代码
//仅保留最核心代码、注释或者伪码
测试记录
分析结论
//主要运行结果及说明
小结
//个人本次实验收获和体会
软件学院实验卡和实验报告
学号:
姓名:
年级专业班级:
实验室组别实验日期年月日
课程名称
C语言程序设计B
实验课时
6
实验项目
数组应用练习
26529-03
实验时间
实验目的
1、掌握数组的基本使用
2、了解简单排序算法及其应用
实验环境
PC机、VS2010
实验内容和原理
一、设有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中,要求以数组作为参数使用函数实现。
array[]={1,3,5,7,9,11,13,15,17,19}
Sampleinput:
10
Expectoutput:
1,3,5,7,9,10,11,13,15,17,19
二、编函数实现n*n矩阵(使用二维数组)的转置。
三(选作)、在选美大奖赛的半决赛现场,有一批选手参加比赛,比赛的规则是最后得分越高名次越低。
比赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。
如:
选手序号:
1,2,3,4,5,6,7
选手得分:
5,3,4,7,3,5,6
宣布名次:
3,5,4,1,5,3,2
请编程帮助大奖赛组委会完成半决赛的评分排名工作。
[提示]将数组中的整数从小到大进行连续编号,相同的整数要具有相同的编号,不改变数组中元素的顺序,可以引用一个专门存放名次的数组。
实验步骤方法关键代码
//仅保留最核心代码、注释或者伪码
测试记录
分析结论
//主要运行结果及说明
小结
//个人本次实验收获和体会
软件学院实验卡和实验报告
学号:
姓名:
年级专业班级:
实验室组别实验日期年月日
课程名称
C语言程序设计B
实验课时
6
实验项目
指针应用练习
26529-04
实验时间
实验目的
1、掌握指针的基本使用
2、了解指针数组和函数指针的应用
实验环境
PC机、VS2010
实验内容和原理
一、编写一段简单的程序实现数据的加解密。
说明:
函数encrypt将一个字符指针作为参数,将字符串中的每一个字符的ASCII码+120(需要考虑超过ASCII码的上限127的情况如何解决)实现字符串的加密;
函数decrypt以encrypt的加密字符串及其原始长度为参数,实现信息解密,输出原字符串。
如desc=(source+120)%127(加密原理)
Source=(desc>120)?
(desc-120):
(desc+127-120)(解密原理)
参考的程序
#include
#include
#include
intmain()
{
charsource[5]="1234";
char*desc=(char*)malloc(5);
for(inti=0;i<4;i++)
{
*(desc+i)=(*(source+i)+120)%127;
*(source+i)=(*(desc+i)>120)?
(*(desc+i)-120):
(*(desc+i)+127-120);
}
printf("%s\n",source);
printf("%s",desc);
getchar();
return0;
}
模拟运行结果
二、(选作)根据二维数组内容动态生成菜单,为应用场景设计菜单;
动态多级菜单的参考代码
实验步骤方法关键代码
//仅保留最核心代码、注释或者伪码
测试记录
分析结论
//主要运行结果及说明
小结
//个人本次实验收获和体会
软件学院实验卡和实验报告
学号:
姓名:
年级专业班级:
实验室组别实验日期年月日
课程名称
C语言程序设计B
实验课时
4
实验项目
结构体及文件操作练习
26529-05
实验时间
实验目的
1、掌握使用结构体读写文件的方法
2、了解结构体数组的排序
实验环境
PC机、VS2010
实验内容和原理
一、输入多名学生的姓名(10字符),学号(20个字符),科目(30个字符),成绩(7字符),并存放在文件中。
二、(选作)从题目保存的文件中,读取学生成绩,并计算每个学生的平均分,按照平均分排序显示学生成绩单;并保存至新的文件中;
实验步骤方法关键代码
//仅保留最核心代码、注释或者伪码
测试记录
分析结论
//主要运行结果及说明
小结
//个人本次实验收获和体会
软件学院实验卡和实验报告
学号:
姓名:
年级专业班级:
实验室组别实验日期年月日
课程名称
C语言程序设计B
实验课时
8
实验项目
综合练习
26529-06
实验时间
实验目的
1、熟悉掌握指针链表数据结构的基本操作;
2、了解基本算法的应用;
实验环境
PC机、VS2010
实验内容和原理
一、编程完成链表的创建、添加节点、删除节点、查找节点和清空链表操作。
二、(选作)实现链表的倒置或排序;
实验步骤方法关键代码
//仅保留最核心代码、注释或者伪码
测试记录
分析结论
//主要运行结果及说明
小结
//个人本次实验收获和体会
//动态多级菜单的参考代码
#include
#include
#include
//******************************************************************************
///将光标移动到(x,y)位置
voidgotoxy(int,int);//声明gotoxy()函数
///本函数用于绘制菜单和调用相关菜单处理函数
///constchar*menu_name菜单的名字
///char**menu_array菜单项指针数组
///intmenu_count菜单项的数量
///void(*deal_function)(int)用于处理菜单的函数执政
///特殊要求:
菜单项的最后一项功能固定为返回上一级菜单
voiddraw_menu(constchar*menu_name,char**menu_array,intmenu_count,void(*deal_function)(int));
///读取键盘信息(只返回字母、数字、上下左右方向键)
intgetkeycode();//获取键盘输入
voiddeal(intmenu_index);
///定义gotoxy()函数
///x,y表示光标需要移动到的坐标位置
voidgotoxy(intx,inty)
{
COORDc;
c.X=x;
c.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
///本函数用于绘制菜单和调用相关菜单处理函数
///1、constchar*menu_name菜单的名字
///2、char**menu_array菜单项指针数组
///可以采用这样的定义方式char*menu_array[]={"(0)接收数据输入","
(1)计算托运费用","
(2)显示费用等信息","(3)退出"};
///3、intmenu_count菜单项的数量
///可以这样计算有多少菜单项intmenu_count=sizeof(menu_array)/sizeof(char*);
///4、void(*deal_function)(int)用于处理菜单的函数执政,
///传入的菜单处理函数的声明格式应该为voidfuncitonname(int);
///特殊要求:
菜单项的最后一项功能固定为返回上一级菜单
voiddraw_menu(constchar*menu_name,char**menu_array,intmenu_count,void(*deal_function)(int))
{
//菜单首项显示的x,y坐标,用户可以修改
intmenu_init_x=30,menu_init_y=10;
//相邻菜单项目的Y方向间距,用户可以修改
intmenu_next_y=1;
//当前菜单的前置标示符,用户可以修改
char*menu_index_mark="->";
//非当前菜单的前置标示符,这两个前置标示符最好能一样长,这样比较好看,用户可以修改
char*menu_mark="";
//当前的菜单项默认为第一项
intmenu_index=0;
do
{
//根据指针数组,显示菜单项目
//clrscr();
inti=-1;
gotoxy(menu_init_x,menu_init_y+i*menu_next_y);
printf("%s%s","",menu_name);
for(i=0;i { gotoxy(menu_init_x,menu_init_y+i*menu_next_y); if(i==menu_index) { printf("%s",menu_index_mark); } else { printf("%s",menu_mark); } printf("%s",menu_array[i]); } gotoxy(menu_init_x,menu_init_y+i*menu_next_y); printf("%s","请选择菜单: "); //获取键盘指令,实现菜单项的变动 intkeycode=getkeycode(); switch(keycode) { caseVK_UP: //向上箭头和字母W表示向上移动菜单项 case'W': if(menu_index==0) { menu_index=menu_count-1; } else { menu_index--; } break; case'S': //向下箭头和字母S表示向下移动菜单项 caseVK_DOWN: if(menu_index==menu_count-1) { menu_index=0; } else { menu_index++; } break; case'0': //数字表示直接移动到菜单的第几项 case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': case'9': if((keycode-'0')>(menu_count-1)) { menu_index=menu_count-1; } else { menu_index=keycode-'0'; } break; caseVK_RETURN: //回车操作,表示执行当前菜单项的功能,直接调用函数指针指向的菜单处理函数 if(menu_index==menu_count-1) { return; } else { (*deal_function)(menu_index); } break; } }while (1);//菜单的循环输入等待和显示 } ///键盘输入读取程序 ///目前只检测大写字母、数字、上下左右方向键、回车键 ///返回值标识按下的字母,如果返回-99999表示函数出错误 intgetkeycode() { //打开输入句柄 HANDLEhStdin=GetStdHandle(STD_INPUT_HANDLE); while (1) { INPUT_RECORDsInput; DWORDdwReaded=0; //如果获取键盘输入流失败 if(! ReadConsoleInput(hStdin,&sInput,1,&dwReaded)) { //printf("ReadError: %d\n",GetLastError()); return-99999; break; } //获取的不是按键事件,继续循环等待 if(sInput.EventType! =KEY_EVENT) { continue; } KEY_EVENT_RECORDke=sInput.Event.KeyEvent; //获取的不是按键按下的事件 if(! ke.bKeyDown) { continue; } //如果按下的是shift、alt、或者menu键继续循环等待 if(ke.wVirtualKeyCode==VK_SHIFT|| ke.wVirtualKeyCode==VK_CONTROL|| ke.wVirtualKeyCode==VK_MENU) { continue; } //按下的是字符键、数字键、回车键、方向键则返回这些键值 //如果需要支持更多的按键,需要扩展以下程序 switch(ke.wVirtualKeyCode) { case'A': case'B': case'C': case'D': case'E': case'F': case'G': case'H': case'I': case'J': case'K': case'L': case'M': case'N': case'O': case'P': case'Q': case'R': case'S': case'T': case'U': case'V': case'W': case'X': case'Y': case'Z': case'0': case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': case'9': caseVK_LEFT: caseVK_RIGHT: caseVK_UP: caseVK_DOWN: caseVK_RETURN: returnke.wVirtualKeyCode; break; } } } //菜单的处理函数 voiddeal(intmenu_index) { //需要显示的菜单项,修改程序 char*menu_array[4]={"(0)源代码"," (1)工程"," (2)头文件","(3)返回上一级"}; intmenu_count; switch(menu_index) { case0: case1: case2: //一共有多少项目菜单项目 menu_count=sizeof(menu_array)/sizeof(char*); draw_menu("子菜单",menu_array,menu_count,deal); break; } } intmain(intargc,char*argv[]) { char*menu_array[]={"(0)新建"," (1)打开"," (2)保存","(3)退出"}; draw_menu("主菜单",menu_array,4,deal); //system("pause"); getchar(); getchar(); return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 实验 内容