c语言程序设计,江宝钏著,实验九
计算机科学与技术《Vc 程序设计》实验指导书-07计
《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语言程序设计》(江宝钏著)实验七答案复习进程
《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的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
《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语言程序设计课程实验指导书
《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.输入源程序。
C语言程序设计 (江宝钏 著) 清华大学出版社 第6章参考答案
习题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 。
2024版C语言程序设计实验教案
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语言的函数和数组的使用方法。
实验内容编写程序,实现输入一个整数数组,输出其中的最大值和最小值。
编写程序,实现输入一个字符串,统计其中每个字符出现的次数。
《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语言程序设计》(江宝钏著)实验五答案培训资料
《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)
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");}。
《C语言程序设计》(江宝钏著)实验四答案
4.较难编程题
编程题 1 输出 1-999 之间的所有同构数。 (同构数:一个数出现在它的平方数的右端,这个数就 称为同构数,如 5 出现在 25 的右端,5 是同构数,25 出现在 625 右端,25 也是同构数。
答: #include<stdio.h> #include<math.h> void main() { int n=1000,k=100,m=10,i,a,b; for(i=10;i<n;i++)
二、实验内容
1. 程序验证题与改错题 (1)程序验证 从键盘输入一个整数,在屏幕上将其逆序数输入,例如输入 8193,输出 3918。 #include<stdio.h> void main() { int x,number; printf("请输入一个整数:"); scanf("%d",&x); do{ x=number%10; number=number/10; printf("%d", x); }while(number!=0); printf("\n"); } 答: #include<stdio.h> void main() { int x,number; printf("请输入一个整数:"); scanf("%d",&number); do{ x=number%10; number=number/10; printf("%d", x); }while(number!=0); printf("\n");
for(j=1;j<=i;j++) sum1*=j; sum2+=sum1; } printf("%d",sum2); } 3.一般编程题 编程题 1 用三种循环结构(while 语句、do-while 语句、for 语句) ,求 1000 以内奇数的和。 答: #include<stdio.h> void main() { int n=1000,i=1,j=1,k,sum1=0,sum2=0,sum3=0; while(i<=n) { sum1+=i; i++; i++; } printf("while 语句求得奇数和为 :%d\n",sum1); do{ sum2+=j; j++; j++; }while(j<=n); printf("do-while 语句求得奇数和为 :%d\n",sum2); for(k=1;k<=n;k++) { sum3+=k; k++; } printf("for 语句求得奇数和为 :%d\n",sum3); } 编程题 2现方式做保护处理对用户上传分享的文档内容本身不做任何修改或编辑并不能对任何下载内容负责
《C语言程序设计实验》课程教学大纲
《C语言程序设计实验》教学大纲一、课程基本信息二、实习(实训)简介与教学目标1.实习(实训)简介《C语言程序设计实验》是通信工程专业一门教学实验与实训课程,C语言程序设计课程分为理论课程部分和实验课程部分,这部分为实验课程部分;适用于通信工程专业大学一年级本科生,为后续数据结构、面向对象程序设计、单片机原理与开发、嵌入式系统开发等相关课程的学习奠定基础。
通过课程学习,使学生熟练使用C语言IDE(Integrated Development Environment,集成开发环境)软件、以及能够运用C语言完成某些小型综合项目的程序编程,培养学生的编程实践能力。
其主要内容包括输入输出、选择结构程序设计、循环结构程序设计、数组、函数、指针以及结构体等概念和语法、以及项目设计过程的介绍等等。
作为一门实践性较强的课程,在学习过程中从理解概念和语法入手,结合案例学习由浅至深逐步升级,通过在IDE软件中对案例代码进行修改、编译、调试以及运行,培养学生的实践动手能力。
2.教学目标教学目标1:掌握相关的开发软件的配置安装及使用方法,掌握上机编程步骤,能够以面向过程的思维模式思考问题,设计算法,编写程序,并对编写的程序进行编译、调试,能够对程序的运行结果进行整理、分析。
教学目标2:掌握必要的的程序设计技巧、程序测试和程序调试技巧,使学生具备一定的程序分析和程序设计能力,能够对复杂计算机工程问题的解决方案进行研究和对比,并会应用其解决实际问题。
教学目标3:要求掌握程序项目设计任务的基本流程、从问题分析、设计算法、编程序到程序调试等,熟悉计算机语言学习与项目开发实践的基本方法和途径,达到软件项目开发综合素质训练目标。
教学目标4:基于IDE工具的软件开发、调试与测试技能目标:培养使用软件工具对复杂软件工程问题进行调试与测试的能力。
教学目标5:根据实验要求完成教学实验的8个实验报告,在实验报告中对应用案例的数据进行分析,总结实验问题等,实验报告格式规范、内容完整,及时上交实验报告。
《C语言程序设计》(江宝钏著)实验七答案
7、4 实验七字符与字符串处理一、实验目得与要求1.掌握C语言字符型数据得概念,理解字符型与整型数据之间得关系。
2.掌握字符得输入与输出.3.掌握转义字符常量、字符串常量得使用.4.掌握字符、字符串与字符数组得输入与输出。
5.掌握字符串函数得使用\字符串数组得使用。
6.实验课时2学时二、实验内容1.程序改错题①调试下列程序,使之具有如下功能:任意输入两个字符串(如:"ningbo"与”china”),并存放在a,b两个数组中。
然后把较短得字符串放在a数组,较长得字符串放在b数组。
并输出.程序中得strlen就是库函数,功能就是求字符串得长度,它得原型保存在头文件"string、h"中.调试时注意库函数得调用方法,不同得字符串输入方法,通过错误提示发现程序中得错误。
提示发现程序中得错误。
#include <stdio、h>#include<string、h>void main(){char a[10],b[10],ch;int c,d,k;scanf("%s",&a);scanf("%s",&b);/*error*/printf(”a=%s,b=%s\n”,a,b);c=strlen(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*/}printf(”a=%s\n",a);printf(”b=%s\n",b);}答:#include〈stdio、h>#include<string、h>void main(){ﻩﻩchara[10],b[10],ch;int c,d,k;scanf("%s”,&a);scanf(”%s",&b);ﻩprintf("a=%s,b=%s\n",a,b);c=strlen(a);d=strlen(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’;ﻩ}ﻩprintf(”a=%s\n",a);printf("b=%s\n",b);}②下列给定程序中,函数fun得功能就是:依次取出字符串中所有数字字符,形成新得字符串,并取代原字符串.请改正函数fun中得错误,使它能得出正确得结果。
《C语言程序设计》实验教学大纲.
一、适用范围
大纲适用于计算机科学与技术专业本科教学使用。
二、课程名称
C语言程序设计
三、学时数与学分
总学时:90总学分:4
实验学时:36实验学分:1
四、教学目的和基本要求
目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解C语言的特点,熟练掌握C语言程序设计的基本方法和编程技巧。
九、实验项目
实验一C程序的运行环境和运行一个C程序的方法
一、实验目的
1.了解TURBO C编译系统的基本操作方法,学会独立使用该系统。
2.了解在该系统上如何编辑、编译、连接和运行一个C程序。
3.通过运行简单的C程序,初步了解C源程序的特点。
二、实验内容
1.用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的?
2.编写一个C程序,输出以下信息:
****************************
very good!
****************************
3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。
实验二数据类型、运算符和表达式
一、实验目的
1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。
main()
{ int num;
num=32767;
printf(“num=%d\n”,++num);
}
main()
C语言程序设计 (江宝钏 著) 清华大学出版社 习题7答案
习题7 答案一、程序阅读题1.D2.D3.B4.1,0,0,15.a1e1二、程序填空题1.这个题目不合适,不考虑了2.C A A B3.C D C4.A B三、编程题1.#include<stdio.h>#define NUM 5void main(){ int a[NUM],i,n;float sum=0,aver;printf("Enter Student Scores\n");for(i=0;i<NUM;i++){scanf("%d",&a[i]);sum=sum+a[i]; }aver=sum/NUM;n=0;printf("高于平均分的成绩:");for(i=0;i<NUM;i++)if(a[i]>aver){printf(" %d",a[i]);n++;}putchar('\n');printf("高于平均分数%f 的人数是:%d\n",aver,n); }2.#include<stdio.h>#define M 4#define N 3void main(){ int i,j,kmax,kmin,scores[M][N];int sum[M],max,min;for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",&scores[i][j]);for(i=0;i<M;i++){sum[i]=0;for(j=1;j<N;j++)sum[i]=sum[i]+scores[i][j];}max=min=sum[0];kmax=kmin=0;for(i=0;i<M;i++){if(sum[i]>max) {max=sum[i];kmax=scores[i][0];}if(sum[i]<min) {min=sum[i];kmin=scores[i][0];}}printf("总分最高的学号=%d ,总分=%d\n",kmax,max); printf("总分最低的学号=%d ,总分=%d\n",kmin,min);}3.#include <stdio.h>#include <stdlib.h>#define M 5#define N 100void main( ){int a[M][M],sumr[M]={0},sumc[M]={0},sumd1=0,sumd2=0; int i,j;for(i=0;i<M;i++){for (j=0; j< M; j++){a[i][j]=rand()/N;printf("%15d",a[i][j]);sumr[i]+=a[i][j];sumc[j]+=a[i][j];}printf("\n");;sumd1+=a[i][i];sumd2+=a[i][M-i-1];}printf("\n");for(i=0; i<M; i++){printf("sumrow[%d]=%d",i,sumr[i]);printf("sumcol[%d]=%d\n",i,sumc[i]);}printf("sumdia1=%d sumdia2=%d\n",sumd1,sumd2);}4.#include <stdio.h>#include <stdlib.h>#define M 3void findmax(int a[][M],int ln[]) ;void outdata (int a[][M], int ln[]);void main( ){ int s[M][M]={{22,33,34},{90,91,66 },{30,1,56, }};int lnm[M]; /*存放每列最大值所在的行号*/findmax(s,lnm);outdata(s,lnm);}void findmax(int a[][M],int ln[]){ int i,j,t;for (i=0;i<M;i++){ t=0;for(j=1;j<M;j++)if(a[j][i]>a[t][i]) t=j;ln[i]=t;}}void outdata (int a[][M], int ln[]){ int i,j;for(i=0;i<M;i++){for(j=0;j<M;j++)printf("%8d",a[i][j]);printf("\n");}printf("\n max&line number\n");for(i=0;i<M;i++)printf("%3d: %2d\n",a[ln[i]][i],ln[i]);printf("\n");}5.参照例7-14(2)6.#define N 10#define M 10void main( ){ int i, j, k, m, n, flag1, flag2, a[N][M], max, maxj; printf(“\n 输入行数n:”);scanf(“%d”, &n); printf(“\n 输入列数m:”);scanf(“%d”, &m);for (i =0; i <n; i ++){ printf(“第%d 行?\n”, i);for(j=0;j<m;j++)scanf(“%d”,&a[i][j]);}for(i =0; i <n; i ++){ for(j=0;j<m;j++)printf(“%5d”,a[i][j]);printf(“\n”);}flag2=0;for(i =0; i <n; i ++){ max=a[i][0];for(j=0;j<m;j++)if(a[i][j]>max){ max=a[i][j];maxj=j;}for(k=0,flag1=1;k<n&&flag1;k++)if(max>a[k][maxj]) flag1=0;if(flag1){ printf(“\n 第%d 行,第%d 列的%d 是鞍点\n”, i,maxj,max); flag2=1;}}if(!flag2) printf(“\n 矩阵中无鞍点!\n”);7.#include <stdio.h>#define M 5#define N 3void main(){ int i,j,t;int a[M]={4,5,6,7,8 };for(j=1;j<=N;j++){t=a[M-1];for(i=M-1;i>=1;i--)a[i]=a[i-1];a[0]=t;}for(i=0;i<M;i++)printf(" %d",a[i]);printf("\n");}8.#include<stdio.h>#include<stdlib.h>#define SIZE 100void arrsort(int [],int );void main(){ int a[SIZE],b[SIZE];int i,j,t,n=0;for(i=0;i<SIZE;i++){t=rand()%100;if(t>=10){ a[i]=t;if(t%2==0) {b[n]=a[i]; n++ ;}}}j=0;for(i=0;i<n;i++){ printf(" %d",b[i]);j++;if(j%10==0) printf("\n");}putchar('\n');arrsort(b,n);}void arrsort(int b[],int n){ int i,j,p,t,k=0;for(j=0;j<n-1;j++){ p=j;for(i=j+1;i<n;i++)if(b[p]<b[i]) p=i;if(p!=j){t=b[j];b[j]=b[p];b[p]=t;}}printf("after sorted:\n");for(i=0;i<n;i++){ printf(" %d",b[i]);k++;if(k%10==0) printf("\n");}printf("\n");}9.#include <string>int ishuiwen(char s[]){ int i,j,k;for(i=0;j=(strlen(s)-1);i<j;i++,j--) if (s[i]==s[j]) k=1;else{ k=0; break;}return k;}10.#include<string.h>#include<stdio.h>void main(){ int i=0,c[52]={0},m=0;char str[80];printf("Input a string:\n");gets(str);while(str[i]!='\0'){if(str[i]>='A'&&str[i]<='Z') c[str[i]-'A']++; if(str[i]>='a'&&str[i]<='z') c[str[i]-'a'+26]++; i++;}for(i=0;i<26;i++)//if(c[i]){ if (m%5==0) putchar('\n');m++;printf("%c : %-d",i+'A',c[i]);}for(i=0;i<26;i++)//if(c[i+26]){ if (m%5==0) putchar('\n');m++;printf("%c : %-d",i+'a',c[i+26]);}}。
【程序设计】《C语言程序设计》(江宝钏著)实验二答案【精品资料】
2.5 实验二编写几个简单的C程序一、实验目的与要求1.掌握C语言基本数据类型的概念,理解数据类型与运算的关系。
2.掌握简单变量的定义,算术表达式和赋值表达式的使用。
3.掌握基本输出语句的使用。
4.进一步熟悉C程序的编辑、编译、连接和运行的过程。
5.掌握简单C程序查错方法,编写几个简单程序。
6.实验4学时二、实验内容1.程序验证或填空(1)编译和运行下面程序,查看执行的结果:#include<stdio.h>int main(void){int si=-1;float f=5;double df=3;printf("si = %d, f = %f, df = %lf\n", si,f,df);return 0;}若把输出语句中的格式控制中的格式说明符的顺序改变一下,会有什么结果?再把%lf修改为%f,运行会有什么结果?Si=-1,f=5.00000,df=3.000000当顺序变为printf("si = %f, f = %lf, f = %d\n", si,f,df);时结果为si=-0.000000 f=0.000000 df=1074266112当把%lf修改为%f时即 printf("si = %f, f = %f, f = %d\n", si,f,df);结果为si=-0.000000 f=0.000000 df=1074266112(2)分析程序,并上机运行验证运行结果#include “stdio.h”void main( ){ printf(“\t*\n”);printf(“\t\b* * *\n”);printf(“\t\b\b * * * * *\n”);}Tab * 换行Tab 取消tab * * * 换行Tab 取消tab 退格 * * * * * 换行(3) 运行程序,并分析结果。
#include “stdio.h”void main( ){ int a=10,x=5,y=6;a+=a*=6;x=y++;y=++x;a=x+++y;printf(“%d,%d,%d\n”,a,x,y);}14,8,7 以下绿色部分为对结果的分析#include “stdio.h”void main( ){ int a=10,x=5,y=6;a+=a*=6; 此步对结果无影响\\x=y++; \\x=y y=y+1 此时x=6,y=7\\y=++x; \\x=x+1 y=x 此时 x=7 y=7\\a=x+++y; \\a=x+y x=x+1 此时 x=8 y=7 a=14\\ printf(“%d,%d,%d\n”,a,x,y);}(4)不用第3个变量,实现将二个数进行对调,请填空。
《C语言程序设计》江宝钏著实验六详解
6.4 实验六数组一、实验目的与要求1.掌握一维数组的定义、赋值和输入输出的方法。
2.理解一维数组的存储方法及下标的表示方法。
3.掌握与数组有关的算法(特别是排序算法)。
4.掌握二维数组的定义、赋值和输入输出的方法。
5.理解二维数组的存储方法及下标的表示方法。
6.实验4学时。
(1 )程序验证题①给定一个整型数组a,要求求出其中小于0的元素的个数。
请验证下面的程序是否符合题目要求。
#define N 10void mai n(){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<N;i++) if(a[i]<0)count++; /* 如果元素a[i]<0 ,count 计数+1*/ printf("%d\n",count);}② 给定一个整型二维数组a(3,3) ,要求求出对角线元素的和。
请验证下面的程序是否符合题目要求。
#include <stdio.h>#define N 3void main(){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<N;i++)for( j=0;j<N;j++)if (i==j)sum+=a[i][j]; /* 如果是对角线元素,sum+a[i][ j]*/printf("%d\n",sum);return 0;}注1 :在程序验证题①的基础上,修改程序,求出数组a中大于a[0]的元素之和。
答;#include<stdio.h>#define N 10void main(){int a[N]={11,2,4,-1,5,-3,-66,0,10,-5};int i,sum=0;int count=0;for (i=0;i<N;i++){if(a[i]<0)count++;if(a[i]>a[0])sum+=a[i];}printf(" 小于0 元素的个数为:%d\n",count);printf(" 大于a[0] 的元素之和为:%d\n",sum);}注2 :对上述程序②进行优化,消除内循环,实现同样的效果。
C语言程序设计(江宝钏著)实验三答案
实验三 选择结构程序设计一、实验目的与要求1. 理解C 语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。
2. 掌握利用if 结构实现选择结构的方法。
3. 掌握利用switch 结构实现多分支选择结构。
4. 结合程序掌握一些简单的算法,学习调试程序5. 实验4学时二、实验内容1.程序改错题改正下面程序中的错误。
输入实数x ,计算并输出下列分段函数f(x)的值(保留1位小数)。
)100(1=x x==)(x f y)100(≠x x输入输出示例1(改正后程序的运行结果)Enter x :100f )=输入输出示例2(改正后程序的运行结果)Enter x :23f )=源程序(有错误的程序)#include<>#include<>void main(void){double x;printf("Enter x: \n");scanf("=%f", x);if (x = 100) {y = 1/sqrt(x)}else (x != 100) {y = x;}printf("f(%.2f) = %.1f\n",x,y);}答:#include<>#include<>void main(void){double x,y;printf("Enter x:\n");scanf("%lf",&x);if (x=100)y = 1/sqrt(x);elsey= x;printf("f(%.2lf)=%.1lf\n",x,y);}2.一般编程题编程题1输入任意三个整数a,b,c,求3个数中的最大值和最小值。
答:#include <>void main(){int a,b,c;printf("请输入三个整数:");scanf("%d %d %d",&a,&b,&c);if (a>=b)t=a,a=b,b=t;if (a>=c)t=a,a=c,c=t;if (b>=c)t=b,b=c,c=t;printf("最小值为:%d\n",a);printf("最大值为:%d\n",c);}编程题2输入x,计算并输出下面分段函数f(x)的值(保留2位小数)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
宁波大学实验报告
学号
姓名
专业土木建设类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();
}
实验心得、遇到的问题与解决的方法:
结构体的使用,可以让我们可以将多个变量当作一个整体。