当前位置:文档之家› 华中科技大学计算机学院C语言课设实验报告

华中科技大学计算机学院C语言课设实验报告

华中科技大学计算机学院C语言课设实验报告
华中科技大学计算机学院C语言课设实验报告

华中科技大学计算机科学与技术学院

《C语言程序设计》课程设计

实验报告

题目:科研项目信息管理系统

专业:计算机

班级:

学号:

姓名:

成绩:

指导教师:李开

完成日期:2009年10 月20 日

科研项目信息管理系统一、系统功能结构模块图

二、数据结构设计及其用法说明

typedef struct lakey{

char name[30];/*团队名称*/

int total;/*自然科学基金的科研项目数*/

float dudu;/*经费数*/

struct lakey *next;

}*plakey;/*统计3中用到的数据结构*/

typedef struct emmey{

char name[30];/*团队名称*/

int teacher;/*老师人数*/

int harden;/*项目数*/

float bizhi;/*比值*/

struct emmey *next;

}*pemmey;/*统计4中用到的数据结构*/

typedef struct kPro{

char code[15];/*项目编号*/

char sort;/*项目种类*/

int aking1;

char time[8];/*项目时间*/

float dudu;/*项目经费*/

int aking2;

char beiler[15];/*负责人*/

int aking3;

char keynoName[30];/*所在团队名称*/

struct kPro *next;

}harden,*pHarden;

typedef struct Komo{

int teacher;/*老师人数*/

char name[20];/*院系名称*/

int student;/*学生人数*/

float bizhi;/*二者比值*/

struct Komo *next;

}*pKomo;/*统计1中用到的数据结构,统计结果放在这个数据结构中*/

typedef struct kTea{

char name[30];/*团队名称*/

char beiler[15];/*负责人*/

int stuNum;/*学生人数*/

int aking2;

int coco;/*老师人数*/

char colName[20];/*所在院系的名称*/

int aking1;

struct kTea *next;

pHarden child;

}keyno,*pKeyno;

typedef struct edward{

char name[20];/*院系名称*/

int totalnum;/*项目总数*/

int num973;/*973项目数*/

int num863;/*863项目数*/

float amount;/*经费数*/

struct edward *next;

}*pedward;/*统计2中用到的数据结构*/

typedef struct kCol{

char name[20];/*院系名称*/

int aking;

char beiler[15];/*院系负责人*/

struct kCol *next;

char call[15];/*负责人电话号码*/

pKeyno child;

}kekey,*pKekey;

三、程序结构

四、各模块的功能

1、pKekey Charge(pKekey alpha)/*这个函数将文件中的内容写入链表中*/

2、pKekey temption(int aking,int aking1,int aking2,pKekey item1,pKeyno

item2,pHarden item3,pKekey alpha,int sort)/*这个函数用于向指定位置(aking)添加指定节点(item),alpha是头结点。sort控制3种添加类型*/

3、pKekey reserv(int aking1,int aking2,int aking3,pKekey alpha,int

sort)/*删除指定位置的节点,sort控制删除的类型*/

4、pKekey tab(pKekey alpha)/*这个函数修改文本,使用时先将链表中的对象

修改掉,再调用这个函数将文本库中的内容修改掉*/

5、pKekey seamood(char *boss,char *name,pKekey alphaer,pKekey

result,int sort)/*查询,sort为1表示利用院系负责人来查询,输入:char *boss,pKekey alphaer,pKekey result,int sort,sort为2表示用院系名的一部分来查询,输入:char *name,pKekey alphaer,pKekey result,int sort*/

6、pKeyno foward (char *name,int num,pKekey alphaer,pKeyno result,int

sort)/*查询,sort为1表示利用团队名称查询,输入:char *name,pKekey alphaer,pKeyno result,int sort,sort为2表示利用教师人数查询,输入:nt num,pKekey alphaer,pKeyno result,int sort*/

7、pHarden codyssed (char *code,pKekey alphaer,pHarden result,int

sort)/*查询,sort 为1表示由序列号查,此时code表示序列号,sort为2表示由名字来查,此时code表示名字*/

8、void awesome(pKekey alpha,pKomo *result1,pedward *result2,plakey

*result3,pemmey *result4,char *year,int sort)/*统计:sort取1,2,3,4时分别按课设是上的要求统计,其中year在2时输入*/

五、试验结果

1、主菜单页面

2、数据处理之输入

3、查询功能

4、统计功能

六、体会

这是我第一次做这么大型的且比较复杂的一个C程序,从暑假开始边看书边慢慢尝试到如今全部做出来花费了许多时间与精力。

以前接触到的C程序设计都是最简单、最基本的编程,就连最后的期末考试也只是一些小程序,并不像课程设计这样庞大复杂。小程序是考察我们对基本概念的熟识,而这种大程序则是考察了我们对整体构架的设计以及各种小程序的拼接,看似不难,实则会遇到许多意想不到的困难,当然,这过程当中我学到了许多。

刚开始接到任务书的时候我感到无从下手,知道应该注重链表但是仍旧无法从整体上设计出这个程序,后来经过网上的搜索资料以及和其他同学的讨论,对这个科研项目信息管理系统进行一些列分块,拆成几个部分,然后再逐个突破,这样显得有条理且方便。

接下来是真正开始动手写程序,随之而来的是一些列的问题,其中最困扰我的是十字链表,过去我们使用的一般是单向链表,虽然在此基础上建立十字链表并不困难,但是如何保存则成了一个难题,后来经过对书本的钻研解决了次问题,从中我更加了解各种文件操作函数的用法。

在所有内核做好之后,接下来就是界面的问题,最开始的时候我考虑做图形界面,但是由于时间比较紧迫,不得不放弃,只好做了一个简易菜单,菜单设计容易,可是将界面和程序内核结合起来却又是一个难题。最后将这些函数和文件组合在一起后,终于形成了一个完整的可以运行的系统。

由于我只是C语言初学者,虽然啃过书本,但是仍能力有限,所以界面不够漂亮,有些功能也不够完善,但是我能够做出一个可以正确运行的科研项目信息管理系统已是很有成就感,尽管它不完善。

这次课程设计,巩固了我的C语言的知识,锻炼了我的动手能力,让我在这一方面有了进一步的提升。

其实,让我感触最深刻的是,学好C语言,不仅仅在于啃光书本上的知识,考试能得高分,最重要的是实践!俗语云:实践出真知。只有动手了才会更快发现自己的错误,以便于及时改正,才能更快的提升自己的能力,纸上谈兵终究只是一段段空话,毫无实际意义!

当然,不仅仅是在学习这一门语言方面有了认知,在其他方面也有了一些认识,最大的收获是写课设让我更加细心,我往往由于一个符号的错误导致程序无法运行,所以,注重细节是非常重要的。

最后,我觉得,其实C语言和其他中文、英语、日语等语言一样,虽然是由一些枯燥的字母字符组成,但是经过我们人为的设计排列,可以组成精美的东西,就像各国都有文学名作一样,C语言亦可以写出庞大复杂实用的程序系统,便于大家使用!

七、参考文献

《C语言程序设计》李开曹计昌卢萍著科学出版社

《C语言程序设计(第二版)》谭浩强著清华大学出版社

附录

#include "string.h"

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

typedef struct kNod{

char c;

struct kNod *next;

}kame,*pKame;/*辅助性数据结构*/

typedef struct lakey{

char name[30];/*团队名称*/

int total;/*自然科学基金的科研项目数*/ float dudu;/*经费数*/

struct lakey *next;

}*plakey;/*统计3中用到的数据结构*/

typedef struct emmey{

char name[30];/*团队名称*/

int teacher;/*老师人数*/

int harden;/*项目数*/

float bizhi;/*比值*/

struct emmey *next;

}*pemmey;/*统计4中用到的数据结构*/

typedef struct kPro{

char code[15];/*项目编号*/

char sort;/*项目种类*/

int aking1;

char time[8];/*项目时间*/

float dudu;/*项目经费*/

int aking2;

char beiler[15];/*负责人*/

int aking3;

char keynoName[30];/*所在团队名称*/ struct kPro *next;

}harden,*pHarden;

typedef struct Komo{

int teacher;/*老师人数*/

char name[20];/*院系名称*/

int student;/*学生人数*/

float bizhi;/*二者比值*/

struct Komo *next;

}*pKomo;/*统计1中用到的数据结构,统计结果放在这个数据结构中*/

typedef struct kTea{

char name[30];/*团队名称*/

char beiler[15];/*负责人*/

int stuNum;/*学生人数*/

int aking2;

int coco;/*老师人数*/

char colName[20];/*所在院系的名称*/

int aking1;

struct kTea *next;

pHarden child;

}keyno,*pKeyno;

typedef struct edward{

char name[20];/*院系名称*/

int totalnum;/*项目总数*/

int num973;/*973项目数*/

int num863;/*863项目数*/

float amount;/*经费数*/

struct edward *next;

}*pedward;/*统计2中用到的数据结构*/

typedef struct kCol{

char name[20];/*院系名称*/

int aking;

char beiler[15];/*院系负责人*/

struct kCol *next;

char call[15];/*负责人电话号码*/

pKeyno child;

}kekey,*pKekey;

FILE* orgive(FILE *in,pKekey pointer1,pKeyno pointer2,pHarden pointer3,int sort) {

int c,i=0;

if(sort==1)

{

while((c=fgetc(in))!=';')

{

pointer1->name[i]=c;

i++;

}

for(;i<20;i++)

pointer1->name[i]='\0';

i=0;

while((c=fgetc(in))!=';') {

pointer1->beiler[i]=c;

i++;

}

for(;i<15;i++)

pointer1->beiler[i]='\0';

i=0;

while((c=fgetc(in))!=';') {

pointer1->call[i]=c;

i++;

}

for(;i<15;i++)

pointer1->call[i]='\0'; }

else if(sort==2)

{

while((c=fgetc(in))!=';') {

pointer2->name[i]=c;

i++;

}

for(;i<30;i++)

pointer2->name[i]='\0';

i=0;

while((c=fgetc(in))!=';') {

pointer2->beiler[i]=c;

i++;

}

for(;i<15;i++)

pointer2->beiler[i]='\0';

i=0;

pointer2->coco=0;

c=fgetc(in);

while(c!=';'&&c!='-')

{

pointer2->coco=pointer2->coco*10+c-'0';

c=fgetc(in);

}

if(c=='-')

{

fgetc(in);

fgetc(in);

pointer2->coco=-1;

}

pointer2->stuNum=0;

c=fgetc(in);

while(c!=';'&&c!='-')

{

pointer2->stuNum=pointer2->stuNum*10+c-'0';

c=fgetc(in);

}

if(c=='-')

{

fgetc(in);

fgetc(in);

pointer2->stuNum=-1;

}

while((c=fgetc(in))!=';')

{

pointer2->colName[i]=c;

i++;

}

for(;i<20;i++)

pointer2->colName[i]='\0';

}

else if(sort==3)

{

while((c=fgetc(in))!=';')

{

pointer3->code[i]=c;

i++;

}

for(;i<15;i++)

pointer3->code[i]='\0';

pointer3->sort=fgetc(in);

fgetc(in);

i=0;

while((c=fgetc(in))!=';')

{

pointer3->time[i]=c;

i++;

}

for(;i<8;i++)

pointer3->time[i]='\0';

{

int k=-1;

c=fgetc(in);

i=0;

pointer3->dudu=0;

if(c!='-')

{

while(c!=';')

{

if(c!='.')

pointer3->dudu=pointer3->dudu*10+c-'0';

else

i=1;

if(i)

k++;

c=fgetc(in);

}

while(k&&i)

{

pointer3->dudu/=10;

k--;

}

}

else

{

pointer3->dudu=-1;

fgetc(in);

fgetc(in);

fgetc(in);

fgetc(in);

}

}

i=0;

while((c=fgetc(in))!=';')

{

pointer3->beiler[i]=c;

i++;

}

for(;i<15;i++)

pointer3->beiler[i]='\0';

i=0;

while((c=fgetc(in))!=';')

{

pointer3->keynoName[i]=c;

i++;

}

for(;i<30;i++)

pointer3->keynoName[i]='\0';

}

return in;

}

pKekey Charge(pKekey alpha)/*将文件中的内容写入链表中*/ {

int position[3]={0,0,0};

int input;

pKekey colCurrent,colPre;

FILE *in=fopen("py.txt","r");

if(in==NULL)

{

printf("Open Error!");

getchar();

exit(-1);

}

alpha=NULL;

fgetc(in);

while((input=fgetc(in))!=')')

{

pKeyno teaCurrent,teaPre;

colCurrent=(pKekey)malloc(sizeof(struct kCol));

colCurrent->next=NULL;

colCurrent->child=NULL;

if(position[0]==0)

alpha=colCurrent;

else

colPre->next=colCurrent;

position[0]++;

in=orgive(in,colCurrent,NULL,NULL,1);

colCurrent->aking=position[0];

position[1]=0;

while((input=fgetc(in))!='}')

{

pHarden proCurrent,proPre;

teaCurrent=(pKeyno)malloc(sizeof(struct kTea)); teaCurrent->next=NULL;

teaCurrent->child=NULL;

in=orgive(in,NULL,teaCurrent,NULL,2);

if(position[1]==0)

colCurrent->child=teaCurrent;

else

teaPre->next=teaCurrent;

position[1]++;

teaCurrent->aking1=colCurrent->aking;

teaCurrent->aking2=position[1];

position[2]=0;

while((input=fgetc(in))!=']')

{

proCurrent=(pHarden)malloc(sizeof(struct kPro)); proCurrent->next=NULL;

in=orgive(in,NULL,NULL,proCurrent,3);

if(position[2]==0)

teaCurrent->child=proCurrent;

else

proPre->next=proCurrent;

position[2]++;

proCurrent->aking1=colCurrent->aking;

proCurrent->aking2=teaCurrent->aking2; proCurrent->aking3=position[2];

proPre=proCurrent;

fgetc(in);

}

teaPre=teaCurrent;

}

colPre=colCurrent;

}

fclose(in);

return alpha;

}

pKekey temption(int aking,int aking1,int aking2,pKekey item1,pKeyno item2,pHarden item3,pKekey alpha,int sort)/*这个函数用于向指定位置(aking)添加指定节点(item),alpha是头结点。sort控制3种添加类型*/

{

FILE *in;

if(sort==1)

{

pKame cody,alphaer,annie;

int num=1;

pKekey anniefir=alpha;

alphaer=(pKame)malloc(sizeof(struct kNod));

annie=alphaer;

if((in=fopen("py.txt","r"))==NULL)

{

printf("Open error!");

getchar();

exit(-1);

}

annie->c=fgetc(in);

annie->next=(pKame)malloc(sizeof(struct kNod));

annie=annie->next;

if((annie->c=fgetc(in))=='{')

{

while(annie->c!=')')

{

annie->next=(pKame)malloc(sizeof(struct kNod));

annie=annie->next;

if((annie->c=fgetc(in))=='{')

anniefir=anniefir->next;

}

}

{

char str[60];

int i;

sprintf(str,"{%s;%s;%s;}",item1->name,item1->beiler,item1->call);

for(i=0;str[i];i++)

{

annie->c=str[i];

annie->next=(pKame)malloc(sizeof(struct kNod)); annie=annie->next;

}

}

annie->c=')';

fclose(in);

annie=alphaer;

if((in=fopen("py.txt","w"))==NULL)

{

printf("Open error!");

getchar();

exit(-1);

}

while(annie->c!=')')

{

cody=annie;

fputc(annie->c,in);

annie=annie->next;

free(cody);

}

fputc(annie->c,in);

free(annie);

fclose(in);

anniefir->next=item1;

item1->aking=anniefir->aking+1;

}

else if(sort==2)

{

int nHelp;

pKeyno annieTea;

pKame anniedir,alphaer,cody;

pKekey annie=alpha;

alphaer=(pKame)malloc(sizeof(struct kNod)); anniedir=alphaer;

nHelp=aking;

if(annie==NULL)

{

printf("Wrong Kekey!");

getchar();

free(alphaer);

return alpha;

while(nHelp>1)

{

annie=annie->next;

nHelp--;

if(annie==NULL)

{

printf("Wrong Kekey!");

getchar();

free(alphaer);

return alpha;

}

}

sprintf(item2->colName , annie->name);

annieTea=annie->child;

nHelp=aking;

in=fopen("py.txt","r");

if(in==NULL)

{

printf("Open Error!");

getchar();

exit(-1);

}

while(nHelp>0)

{

if((anniedir->c=fgetc(in))=='{')

nHelp--;

anniedir->next=(pKame)malloc(sizeof(struct kNod)); anniedir=anniedir->next;

}

{

int k=0;

while((anniedir->c=fgetc(in))!='}')

{

if(anniedir->c=='['&&k)

{

k=1;

annieTea=annieTea->next;

}

anniedir->next=(pKame)malloc(sizeof(struct kNod)); anniedir=anniedir->next;

}

}

char str[85];

char strTeach[4];

char strStu[5];

int i;

sprintf(str,"[%s;%s;%s;%s;%s;]",item2->name,item2->beiler,itoa(item2->coco, strTeach,10),itoa(item2->stuNum,strStu,10),item2->colName);

for(i=0;str[i];i++)

{

anniedir->c=str[i];

anniedir->next=(pKame)malloc(sizeof(struct kNod));

anniedir=anniedir->next;

}

anniedir->c='}';

anniedir->next=(pKame)malloc(sizeof(struct kNod));

anniedir=anniedir->next;

}

while((anniedir->c=fgetc(in))!=')')

{

anniedir->next=(pKame)malloc(sizeof(struct kNod));

anniedir=anniedir->next;

}

fclose(in);

anniedir=alphaer;

if((in=fopen("py.txt","w"))==NULL)

{

printf("Open error!");

getchar();

exit(-1);

}

while(anniedir->c!=')')

{

cody=anniedir;

fputc(anniedir->c,in);

anniedir=anniedir->next;

free(cody);

}

fputc(anniedir->c,in);

free(anniedir);

fclose(in);

if(annieTea==NULL)

{

annie->child=item2;

item2->aking1=annie->aking;

item2->aking2=1;

}

else

{

annieTea->next=item2;

item2->aking1=annieTea->aking1;

item2->aking2=annieTea->aking2+1;

}

}

else if(sort==3)

{

int nHelpx,nHelpy;

pKeyno annieTea;

pKame anniedir,alphaer,cody;

pHarden anniePro;

pKekey annie=alpha;

annieTea=(pKeyno)annie->child;

alphaer=(pKame)malloc(sizeof(struct kNod)); anniedir=alphaer;

nHelpx=aking1;

while(nHelpx>1)

{

annie=annie->next;

nHelpx--;

if(annie==NULL)

{

printf("Wrong Kekey!");

getchar();

free(alphaer);

return alpha;

}

}

nHelpy=aking2;

annieTea=annie->child;

if(annieTea==NULL)

{

printf("Wrong Keyno!");

free(alphaer);

return alpha;

}

C语言实验报告《指针》.doc

C语言实验报告《指针》 学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________ 实验五指针 一、实验目的 1、掌握指针的概念、会定义和使用指针变量 2、掌握指向数组的指针变量 3、掌握字符串指针的使用 二、实验内容2、写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(习题10.6)#include #include long fun(char *p) { 填写程序 } void main() { char s[6]; long n; printf( enter a string:n gets(s); n=fun(s); printf( %ldn ,n); }

一、三、实验步骤与过程 四、程序调试记录 C语言实验报告《综合实验》 学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________ 实验六综合实验 一、实验目的 1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。 2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。 3、掌握C程序的运行、调试方法等。 二、实验内容 编写一个学生信息排序程序。要求:

1、程序运行时可输入n个学生的信息和成绩(n预先定义)。 2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。 3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。 1、使用函数方法定义各个模块。 三、实验步骤与过程 物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板 四、程序调试记录

华中科技大学计算机学院2015年C语言程序设计试卷

计算机学院2014-2015学年第2学期C语言程序设计考试试卷 A卷(或B卷): A卷闭卷(或开卷):闭卷考试时间:2015年 6 月 25 日专业: 班级: 学号: 姓名: 题号一二三四五六七总分核对人题分10 10 10 10 20 20 20 100 得分 注意:试卷后面附有运算符的优先级和结合性表。 一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项得分评卷人 是正确的,请选择正确的选项并填写到括号内,选择正确得分。本大题 共10小题,每小题1分,共10分。) 1、已知8位补码位是11111110,其原值是。【】 A、-2 B、254 C、-1 D、-126 2、下列是标识符。【】 A、https://www.doczj.com/doc/0f7906237.html, B、_IPHONE_6_0 C、sum[i] D、sin(x) 3、下列逻辑表达式中与其它3个不等价。其中a为int型变量。【】 A、!a B、a==0 C、a==1 D、!(a>0||a<0) 4、下列是非法常量。【】 A、0xff00 B、.1415 C、'\a' D、05188 5、设a和b为整型变量且a值为5,表达式的值不为2。【】 A、b=a/2 B、b=6-(--a) C、b=(a-3)%2 D、b=a?a-3:1 6、适用于浮点类型数的运算是。【】 A、 | B、% C、 & D、 < 7、执行语句putchar('R'+'6'-'4');的输出结果是。【】 A、R B、S C、T D、 U 8、在工程中引用其它文件定义的全局变量,需要使用存储类型。【】 A、auto B、extern C、static D、register 9、下列是变量a的定义,sizeof(a)为9的是。【】 A、char a[]=”c:\\file\\” B、char a[]=”123456789” C、int a[9] D、float a[9] 10、下列给出的程序片段,其中while循环体执行的次数是。【】 i=1,j=0; while(i+j<=10) if(i>j)j++;else i++; A、5 B、9 C、 10 D、11

C语言程序设计实验报告参考答案

长沙理工大学C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include main() { printf("Thedressislong\n"); printf("Theshoesarebig\n"); printf("Thetrousersareblack\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序:a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include main() { inta,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x);

printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4.设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include main() { inta,b,c; a=0; b=-10; c=(a>b)?b:a; printf("c=%d\n",c); }

c语言实验报告6 指针

实验6 指针1.实验目的和要求 (1)掌握指针的概念、指针变量定义格式和引用。 (2)掌握指针的运算方法。 (3)掌握数组的指针和指向数组的指针变量。 (4)掌握指针与函数的关系。 (5)能正确使用字符串的指针和指向字符串的指针变量。(6)了解指向函数的指针。 (7)了解指向指针变量的指针。 2.实验内容:实验指导书中的实验九。 3.实验步骤 9.1 调试程序,找出程序的错误。 改正后的程序代码(贴图): 运行结果(帖图): 9.2 运行程序:

运行结果:; 9.3 修改程序错误,并运行。 改正后程序代码: 运行结果(帖图): 9.4. 程序填空:

运行结果(请帖图):9.5. 程序填空:

程序填空: #include main() { int a[5][5]={0},*p[5],i,j; for(i=0; i<5; i++) p[i]= &a[i][0] ; for(i=0; i<5; i++) { *(p[i]+ i )=1; *(p[i]+5- (i+1) )=1; } for(i=0; i<5; i++) { for(j=0; j<5; j++) printf("%2d", p[i][j]); Printf("\n") ; } } 运行结果(请帖图):

9.6 编程(选作) #include main() { int *p,a[20],i,k,m,n; p=a; printf("请输入人数n:"); scanf("%d",&n); for(i=0;i

华科周纯杰版c语言答案

第三章程序和流程控制 1.输入两个整数,输出较大者。 #include<> void main() { int a,b; int max=0; printf("Please input two numbers:"); scanf("%d%d",&a,&b); if(a<=b) max=b; else max=a; printf("The larger number is %d\n",max); } 2.有3个整数a,b,c,由键盘输入,输出其中最大的数。 #include<> void main() { int a,b,c,max; printf("Please input three numbers:"); scanf("%d%d%d",&a,&b,&c); if(a>b) { if(a>c) max=a;

else max=c; } else { if(b>c) max=b; else max=c; } printf("The largest number is %d\n",temp); } 3.从1累加到100,用while语句。 #include<> #define N 100 void main() { int i=1,sum=0; while(i<=N) { sum+=i; i++; } printf("sum:%d\n",sum); } 4.已知a1=10,a2 =-3,an=3an-1 +an-2 ,求{ a }的前十项。 #include<> #define N 10

void main() { int a[20]={10,-3}; int i=0,m=0; for(i=2;i void main() { int a, temp; printf("Please input a numbers:\n"); scanf("%d",&a); temp=a%2; if(temp==0) printf("The number %d is an even!\n",a); else

华中科技大学计算机学院C语言课设实验报告

华中科技大学计算机科学与技术学院 《C语言程序设计》课程设计 实验报告 题目:科研项目信息管理系统 专业:计算机 班级: 学号: 姓名: 成绩: 指导教师:李开 完成日期:2009年10 月20 日

科研项目信息管理系统一、系统功能结构模块图 二、数据结构设计及其用法说明 typedef struct lakey{ char name[30];/*团队名称*/ int total;/*自然科学基金的科研项目数*/ float dudu;/*经费数*/ struct lakey *next; }*plakey;/*统计3中用到的数据结构*/ typedef struct emmey{ char name[30];/*团队名称*/ int teacher;/*老师人数*/ int harden;/*项目数*/ float bizhi;/*比值*/ struct emmey *next; }*pemmey;/*统计4中用到的数据结构*/ typedef struct kPro{ char code[15];/*项目编号*/ char sort;/*项目种类*/ int aking1; char time[8];/*项目时间*/ float dudu;/*项目经费*/ int aking2;

char beiler[15];/*负责人*/ int aking3; char keynoName[30];/*所在团队名称*/ struct kPro *next; }harden,*pHarden; typedef struct Komo{ int teacher;/*老师人数*/ char name[20];/*院系名称*/ int student;/*学生人数*/ float bizhi;/*二者比值*/ struct Komo *next; }*pKomo;/*统计1中用到的数据结构,统计结果放在这个数据结构中*/ typedef struct kTea{ char name[30];/*团队名称*/ char beiler[15];/*负责人*/ int stuNum;/*学生人数*/ int aking2; int coco;/*老师人数*/ char colName[20];/*所在院系的名称*/ int aking1; struct kTea *next; pHarden child; }keyno,*pKeyno; typedef struct edward{ char name[20];/*院系名称*/ int totalnum;/*项目总数*/ int num973;/*973项目数*/ int num863;/*863项目数*/ float amount;/*经费数*/ struct edward *next; }*pedward;/*统计2中用到的数据结构*/ typedef struct kCol{ char name[20];/*院系名称*/ int aking; char beiler[15];/*院系负责人*/ struct kCol *next; char call[15];/*负责人电话号码*/ pKeyno child; }kekey,*pKekey;

C语言指针实验报告

C语言程序设计实验报告 1实验目的 (1)掌握指针的概念,会定义和使用指针变量; (2)能正确使用变量的指针和指向变量的指针变量; (3)能正确使用数组的指针和指向数组的指针变量; (4)能正确使用字符串的指针和指向字符串的指针变量; 2实验内容 将一个任意整数插入到已排序的整形数组中,插入后,数组中的数仍然保持有序;要求: (1)整形数组直接由赋值的方式初始化,要插入的整数有scanf()函数数入;(2)算法实现过程采用指针进行处理; (3)输入原始数据以及插入整数后的数据,并加以说明;

3算法描述流程图

4源程序 #include main() { int a[100],m,i,*p,n,w; printf("请输入要输入的数组的元素个数:\n"); scanf("%d",&n); printf("请输入已排好序的数组:\n"); for(i=0;i=w;i--) { a[i+1]=a[i]; } a[i+1]=m; for(i=0;i<=n;i++) { printf("%-4d",a[i]); } printf("\n"); } 5测试数据 “1,3,5,7,9,11,13,15,17,19······10” 6运行结果 7出现问题及解决方法 在编写过程中,

for(i=n-1;a[i]>=w;i--) { a[i+1]=a[i]; } a[i+1]=m; 这一步没有注意a[i++]=m和a[i+1]=m中i++和i+1不同,a[i++]=m是先将的值赋给a[i],然后在执行自增;而在实验过程中忽略了这一点,造成了不必要的麻烦; 8实验心得 通过这次指针实验掌握了指针的概念,会定义和使用指针变量,并且能利用指针来简单化一些问题,给以后的编程带来了很大的便利;

(完整版)C语言课程设计实验报告

目录 目录 (1) 第1章问题描述 (2) 1.1 题目 (2) 1.2基本要求 (2) 第2章需求分析 (2) 1.1软件的基本功能 (2) 1.2输入/输出形式 (2) 1.3测试数据要求 (3) 第3章概要设计 (3) 1.1主程序 (3) 第4章详细设计 (4) 1.1数据类型 (4) 1.2伪码算法 (4) 1.3 程序流程图 (7) 第5章操作 (8) 1.1 进入足球比赛积分排行榜界面 (8) 1.2进入目录 (8) 1.3输入球队比赛信息 (10) 1.4 显示九轮比赛排行榜 (12) 1.5 保存数据 (15) 1.6 由D 盘查看数据 (16) 第6章参考文献 (16)

第1章问题描述 1.1 题目 足球比赛积分排行榜程序 1.2基本要求 (1)10个足球队进行9轮循环赛,胜一场积3分,平一场积1分,输一场积0分。 (2)如果两个队积分相同,进行净胜球的比较,如果净胜球再相同进行总进球的比较。 (3)编写一程序输入每轮比赛的比分,并可以存储。 (4)最后统计出每轮比赛的积分榜。 第2章需求分析 1.1软件的基本功能 (1)输入10个足球队的9轮比赛进球数。 (2)计算10个球队的积分,净胜球,总进球。 (3)对9轮比赛进行排序。 1.2输入/输出形式 由键盘输入,屏幕输出,并且以TXT形式保存。

1.3测试数据要求 输入九轮比赛10个足球队的进球数,由系统统计积分、净胜球、总进球数,并输出。 第3章概要设计 1.1主程序 头文件: #include 说明:main函数的头文件,控制整个程序。 #include 说明:清屏的头文件。 #include 说明:包括了大量的函数原型,调用现成的库函数。 #include 说明:基于char*的字符串处理函数。 全局变量: void input(); 输入数据函数 void sort(); 排序数据函数 void display(); 显示数据函数 void save(); 保存数据函数

C语言指针实验报告

C语言程序设计实验报告 1实验目得 (1)掌握指针得概念,会定义与使用指针变量; (2)能正确使用变量得指针与指向变量得指针变量; (3)能正确使用数组得指针与指向数组得指针变量; (4)能正确使用字符串得指针与指向字符串得指针变量; 2实验内容 将一个任意整数插入到已排序得整形数组中,插入后,数组中得数仍然保持有序; 要求: (1)整形数组直接由赋值得方式初始化,要插入得整数有scanf()函数数入; (2)算法实现过程采用指针进行处理; (3)输入原始数据以及插入整数后得数据,并加以说明;

3算法描述流程图

4源程序 #include main() { int a[100],m,i,*p,n,w; printf("请输入要输入得数组得元素个数:\n"); scanf("%d",&n); printf("请输入已排好序得数组:\n"); for(i=0;i=w;i--) { a[i+1]=a[i]; } a[i+1]=m; for(i=0;i<=n;i++) { printf("%-4d",a[i]); } printf("\n"); } 5测试数据 “1,3,5,7,9,11,13,15,17,19······10” 6运行结果 7出现问题及解决方法 在编写过程中,

for(i=n-1;a[i]>=w;i--) { a[i+1]=a[i]; } a[i+1]=m; 这一步没有注意a[i++]=m与a[i+1]=m中i++与i+1不同,a[i++]=m就是先将得值赋给a[i],然后在执行自增;而在实验过程中忽略了这一点,造成了不必要得麻烦; 8实验心得 通过这次指针实验掌握了指针得概念,会定义与使用指针变量,并且能利用指针来简单化一些问题,给以后得编程带来了很大得便利;

C语言程序设计实验报告(实验1-12)

文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. 《C语言程序设计》 实验报告 2013~2014学年第二学期 班级 姓名 学号 指导教师

实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include int main( ) { printf("This is a C program.\n"); return 0; } 2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序 无语法错误,然后运行程序,并观察分析运行结果。 #include int main( ) { int a,b,sum a=3; b=4; sun=a+b; print(“%d+%d=%d\n”,a,b,sum); return 0; } 四、实验结果: 1. 运行结果(或截图): This is a C program. Press any key to continue

2. (1) 改正后的源程序: #include int main( ) { int a,b,sum; a=3; b=4; sum=a+b; printf("%d+%d=%d\n",a,b,sum); return 0; } (2) 运行结果(或截图): 3+4=7 五、思考题: 1. 一个C程序上机的步骤有哪些? 答:上级输入与编辑源程序—对原程序进行编译–与库函数链接–运行可执行的目标程序。 2. 组成C程序的基本单位是函数,一个函数包括哪几个部分? 答:一个函数包括两部分:分别为函数头或函数首部和函数体。 成绩指导教师签名 实验二 实验项目名称:数据类型、运算符和表达式 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.掌握整型、实型与字符型这三种基本类型的概念; 2.掌握常量及变量的使用方法; 3. 掌握基本算术运算符及其表达式的使用方法; 4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。 二、预习内容:

华中科技大学实用标准C语言程序设计及指导应用习题问题详解

第二章 一.选择题 1.C 2.B D 3.A 4.A 5. D 6.C 7.D 8.C 9.A 10.D 11.B 12.D 13.C 14.D 15.A 16.B 17.A 18.B 100011 001111 二.判断题 1.错 2.错 3.错 4.错 三.填空题 1. B 66 2. n1=%d\nn2=%d\n 3. 0 四.计算 1 (1)x|y = 0x002f (2)x^y = 0x0026 (3)x&y = 0x0009; (4)~x+~y = 0xffc6 (5)x<<=3 0x0068 (6)y>>=4 0x0002 2 (1) 6 (2)50 (3) 1 (4)–16 (5) 1 (6)20 3 (1)0 (2) 1 (3) 1 (4) 4 (5)8 (6) 1 4 (1)12 (2)0 (3) 1 (4)27

(6) 6 (7)24 (8)27 (9)–29 5 (1)0 (2) 1 (3) 1 (4)–3 (5) 2 五.程序分析题 程序1 b=20 a=3600 程序2 第三章 一.填空题 1.s=6 2.96 3.(1) scanf("%c",&c); (2) c-32 更好的答案:c-('a'-'A') 2.1 main() { int a,b; printf("please input a & b:"); scanf("%d%d",&a,&b); printf("\nmax is %d\n",(a>b)?a:b); } 2.2 int max(int x,int y); main() { int a,b,c,max; printf("please input a & b & c:"); scanf("%d%d%d",&a,&b,&c); max=a>b?a:b; max=c>max?c:max; printf("\nmax is %d\n",max); } 2.3

C语言程序设计实验报告

C语言程序设计实验报告 实验名称计算出1000以内10个素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出1000以内的10个素数以及它们的和。 要求: 在程序内部加必要的注释。

由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图 Main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数*/ { int t,i; t=sqrt(n); for(i=2;i1;i-=2)/* x为奇数时,做函数计算*/ { n=sushu(i); /* 做判断素数的函数调用*/

( 励志天下) if(n!=0)/* 对素数的处理*/ { a[j]=n;/* 把素数由大至小存入数组a[ ]中*/ j++; if(j<11) m+=n; /* 统计前10个素数之和*/ } } if(j<10)/* 当素数个数小于10个时,结果输出*/ { for(i=0;i { n=a[i]; printf("%d",n); printf("+");

《C语言程序设计》实验报告实验

《C语言程序设计》 实验报告 2013~2014学年第二学期 班级 姓名 学号 指导教师

实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include int main( ) { printf("This is a C program.\n"); return 0; } 2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语 法错误,然后运行程序,并观察分析运行结果。 #include int main( ) { int a,b,sum a=3; b=4; sun=a+b; print(“%d+%d=%d\n”,a,b,sum); return 0; } 四、实验结果: 1. 运行结果(或截图): This is a C program. Press any key to continue 2. (1) 改正后的源程序: #include int main( ) { int a,b,sum; a=3; b=4; sum=a+b;

printf("%d+%d=%d\n",a,b,sum); return 0; } (2) 运行结果(或截图): 3+4=7 五、思考题: 1. 一个C程序上机的步骤有哪些? 答:上级输入与编辑源程序—对原程序进行编译–与库函数链接–运行可执行的目标程序。 2. 组成C程序的基本单位是函数,一个函数包括哪几个部分? 答:一个函数包括两部分:分别为函数头或函数首部和函数体。 成绩指导教师签名 实验二 实验项目名称:数据类型、运算符和表达式 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.掌握整型、实型与字符型这三种基本类型的概念; 2.掌握常量及变量的使用方法; 3. 掌握基本算术运算符及其表达式的使用方法; 4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。 二、预习内容: 教材《C语言程序设计教程》第2章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入下面的程序,编译、连接、调试该程序。 main( ) { char m,n; m=280; n=320; printf(“%d\t%d\n”,m,n); printf(“%c\t%c\n”,m,n); } 2. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。 #include int main( ) { int a=3,b=4,c=8; float d,e; d=a+b/c; e=a+(float)b/c;//请将此处d改为b printf("d=%f,e=%f\n",d,e);

C语言程序设计—指针—实验报告

实验报告 专业软件工程班级X 班学号_ _ 姓名 实验日期:201X年X月X日报告退发(订正、重做) 课程C程序设计实验实验名称指针 一、实验目的 二、实验环境(描述实验的软件、硬件环境) ①软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器; ②硬件环境:PC机一台 三、实验内容、步骤和结果分析 题目一:输入3个整数,按由小到大的顺序输出 要求: 使用指针方法实现; #include void function(int *a, int *b) { int temp; if (*a<*b) { temp = *a; *a = *b; *b = temp; } } int main() { int a, b, c; int *p1, *p2, *p3; p1 = &a; p2 = &b; p3 = &c; scanf("%d%d%d", &a, &b, &c); function(p1, p2); function(p1, p3); function(p2, p3); printf("%d %d %d\n", *p3, *p2, *p1); return 0;

题目二:将长度为10的整型数组arr中的元素按照从小到大排列并输出 要求: 使用指针方法实现; #include int main() { struct METRIC { float m; float cm; } m1, m2; struct BRITISH{ float foot; float inches; } b1, b2; printf("Enter the info of m1(米,厘米):"); scanf("%f%f", &m1.m, &m1.cm); printf("Enter the info of m2(米,厘米):"); scanf("%f%f", &m2.m, &m2.cm); printf("\nEnter the info of m2(英尺,英寸):"); scanf("%f%f", &b1.foot, &b1.inches); printf("Enter the info of m2(英尺,英寸):"); scanf("%f%f", &b2.foot, &b2.inches); printf("\nSum of m1 and m2 is:%.2f(厘米)\n", (m1.m + m2.m) * 100 + m1.cm + m2.cm); printf("Sum of b1 and b2 is:%.2f(厘米)\n\n", (b1.inches + b2.inches)*30.48 + (b1.foot + b2.foot)*2.54); return 0;

C语言程序设计实验报告(函数)

C语言程序设计实验报告(实验名称:函数) 1实验目的 (1)掌握函数的定义方法、调用方法、参数说明以及返回值; (2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式; (3)掌握函数的嵌套调用及递归调用的用的设计方法; (4)在编程过程中加深理解函数调用的程序设计思想。 2实验内容 (1)编写一个函数primeNum(int x),功能是判别一个数是否为素数。 要求: ①在主函数中输入一个整数x(直接赋值或从键盘输入); ②函数类型为空值(void),调用primeNum( )函数后,在函数中输出x是 否为素数的信息,输出格式为“x is a prime number”或”x is not a prime number”; ③分别输入一下数据:0,1,2,5,9,13,59,121,并运行程序,检查 结果是否正确。 (2)编写函数 mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。 要求: ①在主函数中从键盘输入一对整型数据a和b; ②调用函数后,根据返回值对a和b的关系进行说明。例如,在主函数中输 入:10,5,则输出“10 is a multiple of 5”; ③分别输入下面几组数据进行函数的正确性测试:1与5,5与5,6与2,6 与4,20与4,37与9。

3算法描述流程图 (1)primeNum(int x)(判别一个数是否是素数)函数流程图 ①主函数流程图:

②判断素数函数流程图:

(2)mulNum(int a,int b)(确定a和b是否是整数倍的关系)函数流程图 ①主函数流程图:

c语言指针实验报告

C语言实习报告 题目:指针及其应用 系别: 专业: 姓名: 学号: 日期:

一实验名称:指针及其应用 二实验目的: (1)掌握变量的指针及其基本用法。 (2)掌握一维数组的指针及其基本用法。 (3)掌握指针变量作为函数的参数时,参数的传递过程及其用法。 三实验内容: (1)运行以下程序,并从中了解变量的指针和指针变量的概念。 (2)运行以下程序,观察&a[0]、&a[i]和p的变化,然后回答以下问题: 1.程序的功能是什么? 2.在开始进入循环体之前,p指向谁? 3.循环每增加一次,p的值(地址)增加多少?它指向谁? 4.退出循环后,p指向谁? 5.你是否初步掌握了通过指针变量引用数组元素的方法? (3)先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。

(4)编写函数,将n个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成: ①输入10个数; ②调用此函数进行重排; ③输出重排后的结果。 四分析与讨论: (1)指针的定义方法,指针和变量的关系。 定义方法: 数据类型 *指针变量名; 如定义一个指向int型变量的指针—— int *p;

则我们可以继续写如下代码—— int a = 4; p = &a; printf("%d", *p); 在这里,我们定义了一个变量a,我们把它理解为内存空间连续的4个字节(int型占用4字节),则这4个字节的空间保存着一个数4。&是取地址符号,即把变量a的地址(即这4个字节的首地址)赋给指针p (记住指针p的类型和变量a的类型要保持一致,否则的话,要进行类型转换)。这样子,指针p就保存着变量a的地址。我们如果把指针p当做内存空间里面另外一个连续的4个字节,那么这4个字节保存的数就是变量a的地址。printf("%d",*p)和printf("%d",a)的结果是一样的。这里的*是取变量符号(与&刚好作用相反,通过变量的地址找到变量),与定义时int *p的*号作用不同(定义时的*表示该变量是个 指针变量,而非是取它指向的变量)。 (2)数组和指针的关系。 指针与数组是C语言中很重要的两个概念,它们之间有着密切的关系,利用这种关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针与数组之间的联系及在编程中的应用。 1.指针与数组的关系 当一个指针变量被初始化成数组名时,就说该指针变量指向了数组。如: char str[20], *ptr; ptr=str; ptr被置为数组str的第一个元素的地址,因为数组名就是该数组的首地址,也是数组第一个元素的地址。此时可以认为指针ptr就是数组str(反之不成立),这样原来对数组的处理都可以用指针来实现。如对数组元素的访问,既可以用下标变量访问,也可以用指针访问。 2.指向数组元素的指针 若有如下定义: int a[10], *pa; pa=a; 则p=&a[0]是将数组第1个元素的地址赋给了指针变量p。 实际上,C语言中数组名就是数组的首地址,所以第一个元素的地址可以用两种方法获得:p=&a[0]或p=a。 这两种方法在形式上相像,其区别在于:pa是指针变量,a是数组名。值得注意的是:pa是一个可以变化的指针变量,而a是一个常数。因为数组一经被说明,数组的地址也就是固定的,因此a是不能变化的,不允许使用a++、++a或语句a+=10,而pa++、++pa、pa+=10则是正确的。由此可见,此时指针与数组融为一体。 3.指针与一维数组 理解指针与一维数组的关系,首先要了解在编译系统中,一维数组的存储组织形式和对数组元素的访问方法。 一维数组是一个线形表,它被存放在一片连续的内存单元中。C语言对数组的访问是通过数组名(数组的起始地址)加上相对于起始地址的相对量(由下标变量给出),得到要访问的数组元素的单元地址,然后再对计算出的单元地址的内容进行访问。通常把数据类型所占单元的字节个数称为扩大因子。 实际上编译系统将数组元素的形式a[i]转换成*(a+i),然后才进行运算。对于一般数组元素的形式:<数组名>[<下标表达式>],编译程序将其转换成:*(<数组名>+<下标表达式>),其中下标表达式为:下标表达式*扩大因子。整个式子计算结果是一个内存地址,最后的结果为:*<地址>=<地址所对应单元的地址的内容>。由此可见,C语言对数组的处理,实际上是转换成指针地址的运算。 数组与指针暗中结合在一起。因此,任何能由下标完成的操作,都可以用指针来实现,一个不带下标的数组名就是一个指向该数组的指针。

C语言实验六实验报告——指针

一、实验项目名称 指针 二、实验目的 1.掌握指针的基本概念和基本用法。包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等; 2.掌握数组与指针的关系并能够利用指针解决数组的相关问题; 3.掌握字符串与指针的关系并能够利用指针处理字符串的问题; 4.掌握指针与函数的关系并能够利用指针处理函数问题; 5.了解指向指针的指针的概念及其使用方法; 6.能够使用指针进行程序设计。 三、实验内容 有关指针的程序设计 1.编程实现:任意输入的10个数,求其平均值。 要求: (1)10个数采用scanf语句读入。 (2)利用指针实现对这10个数的访问。 (3)要求平均值的精度为小数后面2位。 2.编程实现:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。 要求: (1)整数数组由初始化方式输入。任意整数由scanf函数输入; (2)实现过程采用指针处理; (3)输出原始数组数据以及插入数据后的数组数据并加以相应说明。 3.编写函数newcopy(char *new,char *old),它的功能是删除old所指向的字符串中的小写字母,并将所得到的新串存入new中。 要求: (1)在主函数中以初始化方式输入一个字符串; (2)调用newcopy()函数; (3)在主函数中输出处理后的结果。 4.编程实现:输入三个整数,按由大到小的顺序输出。

要求: (1)通过scanf函数输入三个数据并存入三个变量中; (2)利用指针实现从大到小输出; (3)修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出; (4)修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出; (5)体会指针对不同数据处理的特点。 四、实验步骤及结果 一、 #include <> void main() { int a[10],n,sum=0; float aver;/* 定义平均数为浮点型*/ int *p=a;/*初始化*/ printf("Please input 10 numbers:\n"); for (n=0;n<10;++n) scanf("%d",&a[n]);/*输入十个数*/ for (n=0;n<10;++n) sum=sum+*(p+n);/*使用指针访问数据*/ aver=(float)sum/n; printf("Average is %.2f",aver);/*精确到小数点后两位*/ } 二、 #include <> void arr(int *a,int n);/*定义排序函数*/ void insert(int *a,int num);/*插入并排序函数*/ int n=10;/*定义数据个数,可修改*/ void main()

华中科技大学标准C语言程序设计及应用习题标准答案

华中科技大学标准C语言程序设计及应用习题答案

————————————————————————————————作者:————————————————————————————————日期:

第二章 一.选择题 1.C 2.B D 3.A 4.A 5. D 6.C 7.D 8.C 9.A 10.D 11.B 12.D 13.C 14.D 15.A 16.B 17.A 18.B 100011 001111 二.判断题 1.错 2.错 3.错 4.错 三.填空题 1. B 66 2. n1=%d\nn2=%d\n 3. 0 四.计算 1 (1)x|y = 0x002f (2)x^y = 0x0026 (3)x&y = 0x0009; (4)~x+~y = 0xffc6 (5)x<<=3 0x0068 (6)y>>=4 0x0002 2 (1) 6 (2)50 (3) 1 (4)–16 (5) 1 (6)20 3 (1)0 (2) 1 (3) 1 (4) 4 (5)8 (6) 1 4 (1)12 (2)0 (3) 1 (4)27

(6) 6 (7)24 (8)27 (9)–29 5 (1)0 (2) 1 (3) 1 (4)–3 (5) 2 五.程序分析题 程序1 b=20 a=3600 程序2 第三章 一.填空题 1.s=6 2.96 3.(1) scanf("%c",&c); (2) c-32 更好的答案:c-('a'-'A') 2.1 main() { int a,b; printf("please input a & b:"); scanf("%d%d",&a,&b); printf("\nmax is %d\n",(a>b)?a:b); } 2.2 int max(int x,int y); main() { int a,b,c,max; printf("please input a & b & c:"); scanf("%d%d%d",&a,&b,&c); max=a>b?a:b; max=c>max?c:max; printf("\nmax is %d\n",max); } 2.3

相关主题
文本预览
相关文档 最新文档