大学c c++语言程序设计实验教程答案-阳小华-电子工业出版社(7)

2025-07-19

#include void main( ) {

int a[100],i,n,k,*p; p=a;

for(i=0;i<100;i++) *(p+i)=i+1; n=100; i=k=0; while(n>1) {

if(*(p+i)!=0) k++;

if(k==3) {*(p+i)=0;k=0;n--;} i++;

if(i==100) i=0; }

while(*p==0) p++;

printf(\}

实验12 结构体、共用体与枚举

任务1 结构体、共用体与枚举构造数据类型的定义与使用

1.运行下面程序,熟悉结构体变量及指向结构体变量指针的使用。

#include void main( ) {

struct xs { int num;

char name[20]; float score;

}stu1={001,\ struct xs stu2,*p; stu2=stu1;

printf(\ p=&stu2;

printf(\}

运行结果为:

1 Zhang san 90.500000 1 Zhang san 90.500000

2.运行下面程序,并分析指向结构体数组的指针变量的使用,理解指针与结构体数组的关系及结构体成员的引用方式。

#include struct xs { int num;

char name[20]; char sex; int age;

}stu[3]={{10101,\ {10102,\ {10104,\

main( ) {

struct xs *p;

for(p=stu;p

printf(\}

运行结果为: 10101 Li Lin M 18 10102 Zhang Fun M 19 10104 Wang Min F 20

思考:printf(\如用结构体数组元素的方式表示,该引用方式如何表示?

代码修改如下: #include struct xs { int num;

char name[20]; char sex; int age;

}stu[3]={{10101,\ {10102,\ {10104,\main( ) {

struct xs *p; int i;

for(i=0;i<3;i++)

printf(\}

3.以下程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。函数fun( )的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

#include #include struct student { long sno;

char name[10]; float score[3]; };

void fun(struct student a[], int n) {

/**********found**********/ struct student t; int i, j;

/**********found**********/ for (i=0; i< n-1 ; i++) for (j=i+1; j

/**********found**********/

if (strcmp(a[i].name,a[j].name) > 0) { t = a[i]; a[i] = a[j]; a[j] = t; } }

void main( )

{ struct student s[4]={{10001,\95, 80, 88},{10002,\85, 70, 78},{10003,\ int i, j;

printf(\ for (j=0; j<4; j++)

{ printf(\ for (i=0; i<3; i++) printf(\ printf(\ }

fun(s, 4);

printf(\ for (j=0; j<4; j++)

{ printf(\ for (i=0; i<3; i++) printf(\ printf(\ } }

4.下面程序通过对学生学号、姓名、出生年月信息的输入与输出,分析并理解指向结构体类型变量的正确使用方法,以及结构体嵌套定义。

#include #include /*使用malloc( )需要包括该头文件*/ struct data /*定义结构体*/ {

int day,month,year; };

struct stu /*定义结构体*/ {

char name[20]; long num;

struct data birth; /*嵌套的结构体类型成员*/ } ;

void main( ) /*定义main( ) 函数*/ {

struct stu *xs; /*定义结构体类型指针*/

xs=(struct stu *)malloc(sizeof(struct stu)); /*为指针变量分配安全的地址*/ printf(\

scanf(\/*输入学生姓名、学号、出生年月日*/ scanf(\

scanf(\

printf(\打印输出各成员项的值*/ printf(\ xs->birth.month,xs->birth.day); }

运行结果如下:

Input name,number,year,month,day: HanTingyu 22 1985 11 1

HanTingyu22 1985//11//1(书上多空了很多的空格) 5.验证下面程序,熟悉共用体变量的使用。

#include union ab{ int a; char b[2]; };

void main( ) {

union ab t; t.a=0x1234;

printf(\}

程序输出结果如下:

t.a=1234 t.b[1]=12 t.b[0]=34

任务2 链表的定义与使用

给定程序中,函数fun( )的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为10、4、2、8、6,排序后链表结点数据域从头至尾的数据为2、4、6、8、10。

请在程序的下划线处填入正确的内容并将下划线删除, 使程序得出正确的结果。

#include #include #define N 6

typedef struct node { int data;

struct node *next; } NODE;

void fun(NODE *h) { NODE *p, *q; int t;

/**********found**********/ p = h->next ; while (p) {

/**********found**********/ q = p->next ; while (q) {

/**********found**********/ if (p->data > q->data)

{ t = p->data; p->data = q->data; q->data = t; } q = q->next; }

p = p->next; } }

NODE *creatlist(int a[])

{ NODE *h,*p,*q; int i;

h = (NODE *)malloc(sizeof(NODE)); h->next = NULL; for(i=0; i

{ q=(NODE *)malloc(sizeof(NODE)); q->data=a[i]; q->next = NULL;

if (h->next == NULL) h->next = p = q; else { p->next = q; p = q; } }

return h; }

void outlist(NODE *h) { NODE *p; p = h->next;

if (p==NULL) printf(\ else

{ printf(\ do

{ printf(\ while(p!=NULL); printf(\ } }

main( )

{ NODE *head;

int a[N]= {0, 10, 4, 2, 8, 6 }; head=creatlist(a);

printf(\ outlist(head); fun(head);

printf(\ outlist(head); }

实验13 文件的使用 任务1 文件的读、写操作

1.建立一个名为abc的文件,并将从键盘输入的字符存入该文件,当键盘输入结束时关闭该文件,填空完成下面程序。

#include main( )

{ FILE *fp; char ch;

fp= fopen (\ \ ); do {

ch=getchar ( ); fputc ( ch, fp); } while ( ch!= EOF); fclose (fp); }

2.从键盘输入一个以“#”为结束标志的字符串,将它存入指定的文件中,填空完成下面程序。

#include main( ) {

FILE *fp; char ch,fn[10];

printf(\ scanf(\

if( ( fp=fopen(fn,\)==NULL) { printf(\


大学c c++语言程序设计实验教程答案-阳小华-电子工业出版社(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:工程创优规划

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219