c语言程序设计,江宝钏著,实验九
- 格式:doc
- 大小:75.50 KB
- 文档页数:8
《VC++ 程序设计》实验指导书金韬编沈阳大学信息学院目录实验一:Visual C++ 6.0中文版开发环境 (2)实验二:C++基础(1) (5)实验二:C++基础(2) (6)实验四:Windows编程基础 (8)实验五:对话框程序设计 (11)实验六:常用控件(1) (13)实验七:常用控件(2) (16)实验八:常用控件(3).............................................................. 错误!未定义书签。
实验九:常用控件(4) (18)实验十:菜单、工具栏和状态栏 (24)实验十一:框架窗口和文档 (27)实验十二:图形和文本 (32)实验十三:数据库(1) (33)实验十四:数据库(2) (37)实验十五:动态链接库 (38)课程编号:11241091课程类别:专业必修适用层次:本科适用专业:计算机科学与技术课程总学时:80适用学期:第7学期实验学时:30开设实验项目数:15撰写人:金韬审核人:刘天惠教学院长:范立南实验一:Visual C++ 6.0中文版开发环境一、实验目的与要求熟悉Visual C++ 6.0的开发环境,输入并编译一个C++程序。
用应用程序向导创建一个控制台应用项目Ex_Hello,完成输入半径,计算圆的面积的功能。
二、实验类型验证型三、实验原理及说明(1)熟悉Visual C++ 6.0的开发环境(工具栏及各种窗口)。
(2)掌握显示和隐藏工具栏的方法。
(3)掌握用应用程序向导创建一个控制台应用项目的一般步骤。
四、实验仪器五、实验内容和步骤1.启动Windows 2000操作系统打开计算机,启动Windows 2000操作系统。
2.启动Visual C++ 6.0选择“开始”→“程序”→Microsoft V isual Studio 6.0→Microsoft V isual C++ 6.0,运行Visual C++ 6.0。
《C语言程序设计》(江宝钏著)实验七答案7.4实验七字符与字符串处理一、实验目的与要求1. 掌握C语言字符型数据的概念,理解字符型与整型数据之间的关系2. 掌握字符的输入与输出。
3. 掌握转义字符常量、字符串常量的使用。
4. 掌握字符、字符串与字符数组的输入与输出。
5. 掌握字符串函数的使用字符串数组的使用。
6. 实验课时2学时二、实验内容1 .程序改错题①调试下列程序,使之具有如下功能:任意输入两个字符串(如:"ningbo"和"china"),并存放在a,b两个数组中。
然后把较短的字符串放在a 数组,较长的字符串放在b数组。
并输出。
程序中的strlen是库函数,功能是求字符串的长度,它的原型保存在头文件"stri ng.h"中。
调试时注意库函数的调用方法,不同的字符串输入方法,通过错误提示发现程序中的错误。
提示发现程序中的错误。
#i nclude <stdio.h>#i nclude<stri ng.h>void mai n(){char a[10],b[10],ch;int c,d,k;sca nf("%s",&a);scanf("%s",&b); /* error */ prin tf("a=%s,b=%s\n",a,b); c=strle n( a);d=strlen(b); if(c>d){ for(k=0;k<d;k++) /* error */{ ch=a[k];a[k]=b[k];b[k]=ch;}a[k]='\0'; /* error */}prin tf("a=%s\n",a);prin tf("b=%s\n",b);}答:#i nclude <stdio.h>#i nclude<stri ng.h>void mai n(){char a[10],b[10],ch;int c,d,k;sca nf("%s",&a);sca nf("%s",&b);prin tf("a=%s,b=%s\n",a,b); c=strle n( a);d=strle n(b); if(c>d){for(k=0; k<c;k++){ch=a[k]; a[k]=b[k]; b[k]=ch;}a[k]='\0';b[k]='\0';}prin tf("a=%s\n",a);prin tf("b=%s\n",b);}②下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
江宝钏实验八3.一般编程题1.用指针法统计10个数中正数、负数和零的个数,并分别求正数的总和,负数的总和。
#include <stdio.h>void main(){int a[10];int i,*p,sum1,sum2,c1,c2,c3;printf("输入10个整数:");for(i=0;i<10;i++)scanf("%d",&a[i]);c1=c2=c3=0;sum1=sum2=0;for(p=a;p<(a+10);p++){if(*p<0){ sum1+=*p;c1++;}if(*p==0){ c2++;}if(*p>0) {sum2+=*p;c3++;}}printf("正数,负数的和:%d %d\n",sum2,sum1);printf("正数、零、负数的个数:%d %d %d \n",c3,c2,c1);}4.较难编程题1.输入一行字符,开始用一个指针指向这行字符的开头,并依次向后移,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include <stdio.h>#include <string.h>#define N 100void main(){char *p;char str[N];int c1,c2,c3,c4,i;printf("input a string:");gets(str);i=strlen(str);c1=c2=c3=c4=0;for(p=str;p<str+i;p++){if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z') c1++;if(*p==' ')c2++;if(*p>='0'&&*p<='9')c3++;elsec4++;}printf("字母个数:%d\n",c1);printf("空格个数:%d\n",c2);printf("数字个数:%d\n",c3);printf("其他字符个数:%d",c4);}。
《C语言程序设计》课程实验指导书第一部分前言一、实验的目的学习C程序设计课程不能满足于“懂得了”,满足于能看懂书上的程序,而应当熟练地掌握程序设计的全过程,即独立编写源程序、独立上机调试、独立运行程序和分析结果。
上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编写的程序的正确与否。
程序设计课程上机实验的目的是:1.加深对讲授内容的理解,尤其是一些语法规定。
通过实验来掌握语法规则是行之有效的方法。
2.熟悉所用的操作系统。
3.学会上机调试程序。
通过反复调试程序掌握根据出错信息修改程序的方法。
4.通过调试完善程序。
二、实验前的准备工作1.了解所用的计算机系统(包括C编译系统)的性能和使用方法。
2.复习和掌握与本实验有关的教学内容。
3.准备好上机所需的程序,切忌不编程或抄别人的程序去上机。
4.对程序中出现的问题应事先估计,对程序中自己有疑问的地方应先作上记号,以便上机时给予注意。
5.准备好调试程序和运行程序所需的数据。
三、实验的步骤上机实验应一人一组,独立实验。
上机过程中出现的问题,除了是系统的问题以外,不要轻易举手问老师。
尤其对“出错信息”,应善于分析判断,找出出错的行,然后检查该行或其上一行。
上机实验一般应包括以下几个步骤:1.双击桌面Visual C++快捷方式进入Visual C++,或通过执行“开始=>程序=> Microsoft Visual Studio 6.0=> Microsoft Visual C++6.0”或执行文件"C:\Program Files\Microsoft Visual Studio\COMMON\MSDev98\Bin\MSDEV.EXE"。
2.单击“文件”菜单的“新建”命令。
3.在打开的“新建”对话框中选择“文件”标签。
4.选择C++ Source File,选择文件保存位置,然后在文件输入栏中输入文件名。
如图所示:5.输入源程序。
习题6一、程序阅读题1、以下程序运行后的输出结果是c 。
#include <stdio.h>void fun(int x, int y, int z){z=x*x+y*y;}void main(){int a=31;fun(5,2,a);printf("%d",,a);}A、0B、29C、31D、无定值2、以下程序运行后的输出结果是d 。
#include <stdio.h>void f(int x,int y){int t;if(x<y){ t=x; x=y; y=t; }}void main( ){int a=4,b=3,c=5;f(a,b); f(a,c); f(b,c);printf("%d,%d,%d\n",a,b,c);}A、3,4,5B、5,3,4C、5,4,3D、4,3,53、以下程序运行后的输出结果是a 。
#include "stdio.h"#define FUDGE(y) 2.84+y#define PR(a) printf("%d",(int)(a)) #define PRINT1(a) PR(a);putchar('\n') void main(){int x=2;PRINT1(FUDGE(5)*x);}A、12B、14C、16D、184、以下程序的输出结果是d 。
#include <stdio.h>int k = 1;void main(){ void Fun();int j;for(j = 0; j < 2; j++)Fun();printf("k=%d", k);}void Fun(){ int k = 1;printf("k=%d,", k);k++;}A、k=1,k=2,k=3B、k=1,k=2,k=1C、k=1,k=1,k=2D、k=1,k=1,k=15、以下程序的输出结果是d 。
C语言程序设计实验教案contents •实验目标与要求•实验内容与步骤•实验难点与重点解析•实验报告撰写指导•课程回顾与拓展延伸•考核方式与评价标准目录01实验目标与要求掌握C语言的基本语法和程序结构熟悉C语言的开发环境和调试工具培养学生运用C语言解决实际问题的能力提高学生的编程思维和算法设计能力01020304010204学生需要具备一定的计算机基础知识,如操作系统、基本编程概念等学生需要安装并配置好C语言的开发环境,如编译器、调试器等学生需要按照实验步骤和要求完成实验任务,并提交实验报告学生需要积极参与实验讨论和交流,分享自己的经验和心得03Windows 、Linux 或Mac OS 等主流操作系统操作系统开发工具实验素材Visual Studio 、Code:Blocks 、GCC 等C 语言编译器和调试器提供必要的实验素材和代码示例,供学生参考和学习使用030201实验环境准备02实验内容与步骤•实验目的:掌握C语言的基本语法,包括变量、数据类型、运算符和表达式等。
实验内容编写程序,实现两个整数的四则运算。
编写程序,输入一个整数,判断其正负和奇偶性。
•编写程序,实现三个数的排序并输出。
实验步骤2. 使用编译器编译并运行程序。
1. 编写程序源代码。
3. 观察并记录程序运行结果。
实验一:基础语法练习•实验目的:掌握C语言的控制结构,包括条件语句、循环语句和跳转语句等。
实验内容编写程序,实现输入一个整数,判断其是否为素数。
编写程序,求1到100之间的所有偶数的和。
•编写程序,实现输入一个年份,判断其是否为闰年。
实验步骤1. 分析问题,确定算法。
2. 编写程序源代码。
3. 使用编译器编译并运行程序。
4. 观察并记录程序运行结果。
•实验目的:掌握C语言的函数和数组的使用方法。
实验内容编写程序,实现输入一个整数数组,输出其中的最大值和最小值。
编写程序,实现输入一个字符串,统计其中每个字符出现的次数。
江宝钏实验八3.一般编程题1.用指针法统计10个数中正数、负数与零的个数,并分别求正数的总与,负数的总与。
#include <stdio、h>void main(){int a[10];int i,*p,sum1,sum2,c1,c2,c3;printf("输入10个整数:");for(i=0;i<10;i++)scanf("%d",&a[i]);c1=c2=c3=0;sum1=sum2=0;for(p=a;p<(a+10);p++){if(*p<0){ sum1+=*p;c1++;}if(*p==0){ c2++;}if(*p>0) {sum2+=*p;c3++;}}printf("正数,负数的与:%d %d\n",sum2,sum1);printf("正数、零、负数的个数:%d %d %d \n",c3,c2,c1);}4.较难编程题1.输入一行字符,开始用一个指针指向这行字符的开头,并依次向后移,分别统计出其中英文字母、空格、数字与其它字符的个数。
#include <stdio、h>#include <string、h>#define N 100void main(){char *p;char str[N];int c1,c2,c3,c4,i;printf("input a string:");gets(str);i=strlen(str);c1=c2=c3=c4=0;for(p=str;p<str+i;p++){if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')c1++;if(*p==' ')c2++;if(*p>='0'&&*p<='9')c3++;elsec4++;}printf("字母个数:%d\n",c1); printf("空格个数:%d\n",c2); printf("数字个数:%d\n",c3); printf("其她字符个数:%d",c4); }。
《C语言程序设计》(江宝钏著)实验五答案5.4 实验五函数与预处理一、实验目的与要求1. 掌握C语言函数的定义方法、函数的声明及函数的调用方法。
2. 理解函数实参与形参的对应关系以及“值传递”的方式。
3. 掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。
4. 掌握动态存储分配的方法。
5. 掌握宏定义和文件包含处理方法。
6. 实验4学时二、实验内容1.程序验证与改错题(1) 程序验证题①下面程序执行的结果是什么void swap(int x, int y){int temp;temp=x;x=y;y=temp;}void main(){int a,b;scanf(“%d%d”, &a,&b);if(a>b)swap(a, b);printf(“%d\t %d”, a,b);}思考:为什么a,b的值没有交换?答:修改后的函数为#include<stdio.h>void swap(int &x, int &y){int temp;temp=x;y=temp;}void main(){int a,b;scanf("%d%d",&a,&b);swap(a,b); //if语句被去掉//printf("%d\t %d\n", a,b);}因为调用函数中改变的是形参而非实参,加上&,其意义是改变实参的地址。
If语句中,只有当a>b时才交换a,b的值去掉后在任何情况下都交换a,b的值②调用函数fun计算:m=1+2+3+4+…+9+10,并输出结果。
请验证下面的程序是否符合题目要求。
#include”stdio.h”int fun(int n){int m, i;for (i=1; i<=n; i++){m+=i;}return m;}void main(){printf("m=%d\n", fun(10));}在上面程序的基础上,修改程序. 计算m=1-2+3-4+…+9-10。
C语言程序设计(江宝钏著)清华大学出版社第9章习题答案(1)习题9 答案第5 题:#includevoid infoinput(struct student* st,int num);void levelcount(struct student* st,int num);//定义一个结构student 表示学生基本情况struct student{char stuno[20];char stuname[20];double cgrade;char gradelevel;};int main(){struct student ss[100]; //根据题意,一个班学生人数不超过100 个int snum=0;while (snum<=0||snum>100){printf("请输入班级的学生数n<=100:");scanf("%d",&snum);}infoinput(ss,snum);levelcount(ss,snum);return 0;}//输入基本数据void infoinput(struct student* st,int num){int i=0;while(i<num){< bdsfid="89" p=""></num){<>printf("请输入学生%1d 的学号、姓名、计算机成绩:",i+1);scanf("%s%s%lf",st[i].stuno,st[i].stuname,&st[i].cgrade); while (st[i].cgrade<0||st[i].cgrade>100){printf("请输入学生%1d 的计算机成绩[0-100]:",i+1);scanf("%lf",&st[i].cgrade);}if (st[i].cgrade>=90) st[i].gradelevel='A';else if(st[i].cgrade>=70) st[i].gradelevel='B';else if(st[i].cgrade>=60) st[i].gradelevel='C';else st[i].gradelevel='D';i++;}}//统计等级人数void levelcount(struct student* st,int num){int levelA=0,levelB=0,levelC=0,levelD=0;int i;for(i=0;i<num;i++){< bdsfid="107" p=""></num;i++){<> switch (st[i].gradelevel){case 'A':levelA++;break;case 'B':levelB++;break;case 'C':levelC++;break;case 'D':levelD++;break;};}printf("统计结果:A:%d 人,B:%d 人,C:%d 人,D:%d 人\n",levelA,levelB,levelC,levelD);}第6 题:#include#includevoid finit();void fcreat();void fdelete();void fupdate();void ffind();//定义日期struct date{int year;int month;int day;};//定义一个结构student 表示学生基本情况struct llist{char name[20];struct date birthday;char homeno[10];char mobileno[20];};struct llist addlist[50];//如果不用链表做,假设://通讯录每个位置记录一个联系人信息//如果某位置联系人姓名信息为空,表示该位置无联系人int main(){int menuno=0;while (1){printf("\n 请选择操作功能:\n");printf("[1]新建:\n");printf("[2]删除:\n");printf("[3]修改:\n");printf("[4]查询:\n");printf("[5]退出:\n");scanf("%d",&menuno);switch(menuno){case 1:fcreat();break;case 2:fdelete();break;case 3:fupdate();break;case 4:ffind();break;case 5:return 0;default:printf("错误选项,请重新选择!\n");};}return 0;}void finit(){int i;for(i=0;i<50;i++) {strcpy(addlist[i].name,"");addlist[i].birthday.year=0;addlist[i].birthday.month=0;addlist[i].birthday.day=0;strcpy(addlist[i].homeno,"");strcpy(addlist[i].mobileno,"");}}void fcreat(){int i;char oname[20];int oyear;int omonth;int oday;char ohomeno[10];char omobileno[20];printf("请输入联系人信息姓名、出生年、月、日、家庭电话、手机号:\n"); scanf("%s%d%d%d%s%s",oname,&oyear,&omonth,&oday,oho meno,omobileno); for(i=0;i<50;i++) {if (strlen(addlist[i].name)==0) {strcpy(addlist[i].name,oname);addlist[i].birthday.year=oyear;addlist[i].birthday.month=omonth;addlist[i].birthday.day=oday;strcpy(addlist[i].homeno,ohomeno);strcpy(addlist[i].mobileno,omobileno);printf("已增加新联系人\n");break;}}if (i>=50) printf("通讯录满,无法增加新联系人\n");void fdelete(){int i;char oname[20];printf("请输入联系人姓名:\n");scanf("%s",oname);for(i=0;i<50;i++) {if (strcmp(addlist[i].name,oname)==0) {strcpy(addlist[i].name,"");addlist[i].birthday.year=0;addlist[i].birthday.month=0;addlist[i].birthday.day=0;strcpy(addlist[i].homeno,"");strcpy(addlist[i].mobileno,"");printf("已删除该联系人%s\n",oname);break;}if (i>=50) printf("无该联系人,无法删除\n");}void fupdate(){int i;char oname[20];char nname[20];int nyear;int nmonth;int nday;char nhomeno[10];char nmobileno[20];printf("请输入联系人姓名:\n");scanf("%s",oname);printf("请输入联系人信息姓名、出生年、月、日、家庭电话、手机号:\n"); scanf("%s%d%d%d%s%s",nname,&nyear,&nmonth,&nday,nho meno,nmobileno); for(i=0;i<50;i++) {if (strcmp(addlist[i].name,oname)==0) {strcpy(addlist[i].name,nname);addlist[i].birthday.year=nyear;addlist[i].birthday.month=nmonth;addlist[i].birthday.day=nday;strcpy(addlist[i].homeno,nhomeno);strcpy(addlist[i].mobileno,nmobileno);printf("已修改联系人%s\n",nname);break;}if (i>=50) printf("无该联系人,无法修改\n");void ffind(){int i;char oname[20];printf("请输入联系人姓名:\n");scanf("%s",oname);for(i=0;i<50;i++) {if (strcmp(addlist[i].name,oname)==0) {printf("姓名:%s",addlist[i].name);printf(" 出生日期:%1d 年%1d 月%1d 日",addlist[i].birthday.year,addlist[i].birthday.month,addlist[i].bi rthday.day); printf("家庭电话:%s",addlist[i].homeno);printf("手机:%s",addlist[i].mobileno);break;}}if (i>=50) printf("无该联系人\n");}第7 题:#includevoid salaryinput(struct salary* sl,int num);void salarylist(struct salary* sl,int num);struct salary{char id[20];char name[20];double base;double merit;double subsidiary;double insurance;double tax;double real;};int main(){struct salary ss[100]; //工资人数不超过100 个int snum=0;while (snum<=0||snum>100){printf("请输员工人数n<=100:");scanf("%d",&snum);}salaryinput(ss,snum);salarylist(ss,snum);return 0;void salaryinput(struct salary* sl,int num){int i=0;while(i<num){< bdsfid="279" p=""></num){<>printf("请输入员工%1d 的编号、姓名、基本工资、绩效工资、津贴工资、保险:\n",i+1); scanf("%s%s%lf%lf%lf%lf",sl[i].id,sl[i].name,&sl[i].base,&sl[i].meri t,&sl[i].su bsidiary,&sl[i].insurance);sl[i].tax=(sl[i].base+sl[i].merit+sl[i].subsidiary)*0.05;sl[i].real=(sl[i].base+sl[i].merit+sl[i].subsidiary-sl[i].insurance-sl[i].tax); i++;}}void salarylist(struct salary* sl,int num){int i;for(i=0;i<num;i++){< bdsfid="289" p=""></num;i++){<>printf("员工的编号、姓名、实发工资如下:",i+1);printf("%s %s %lf\n",sl[i].id,sl[i].name,sl[i].real);}}第8 题:#include#includevoid linkcreat();void linklist();struct Node{char data;struct Node *link;};Node *snode=NULL,*tmpnode,*lastnode;int main(){linkcreat();linklist();//最好增加一个释放链表的函数,为什么?return 0;}void linkcreat(){char c;lastnode=snode;printf("请输入一行字符:\n");while(scanf("%c",&c),c!='\n'){tmpnode=(Node*)malloc(sizeof(Node)); tmpnode->data=c;if (snode==NULL) snode=tmpnode;else lastnode->link=tmpnode; lastnode=tmpnode; }lastnode->link=NULL;}void linklist(){tmpnode=snode;while(tmpnode!=NULL){printf("%c",tmpnode->data); tmpnode=tmpnode->link; }printf("\n");}。
宁波大学实验报告
学号
姓名
专业土木建设类5班
学院阳明学院
2016年6月10 日
printf("Input year,month,day:");
scanf("%d,%d,%d",&,&,&;
days=0;
for(i=1;i<;i++)
days+=day_tab[i];
days+=;
if>2&&%4==0&&%100!=0||%400==0))
days+=1;
printf("%d/%d is the %dth day in %d",,,days,;
}
2.程序改写题
#include<>
struct
{
int year;
int month;
int day;
}date;
int main()
sum=sum+day;
if((year%1==0&&year%100!=0||year%400==0)&&month>=3)
{
sum+=1;
}
return sum;
}
3.一般编程题
(1)
#include<>
struct z
{
char a[30];
int r;
};
void main()
{
struct z z1={"通信工程",32},z2={"电子信息科学与工程",35},z3={"自动化",44},z4={"光电
信息工程",28};
printf("%s专业,报名人数%d\n",,;
printf("%s专业,报名人数%d\n",,;
printf("%s专业,报名人数%d\n",,;
printf("%s专业,报名人数%d\n",,;
}
(2)
#include ""
#include <>
#define SIZE 3
struct student
{
int score[3];
float average;
} stud[SIZE];
void input()
{
int i;
for(i=0;i<SIZE;i++)
{
printf("第%d个学生的成绩:\n",i+1);
scanf("%d%d%d",&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
void output()
{
int i;
printf("\n");
for(i=0;i<SIZE;i++)
printf("%d %d %d %\n",stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].average); }
void main()
{
input();
calaverage();
sortput();
output();
}
实验心得、遇到的问题与解决的方法:
结构体的使用,可以让我们可以将多个变量当作一个整体。