程序设计基础-C语言,科学出版社

程序设计基础——C语言

科学出版社

第六章——其他数据模型,教材习题答案。 东风冷雪

如果认为对自己不利那就离开。

你看了比没有看好,首先印象还是有的,如果自己不会你可能都不会写,结果就是什么也不做,老师讲解时效果也会降低。其次你不会可能上网查书也是为了寻找答案,这样浪费时间(可能影响深些)。

一份答案做起来不容易,合理利用不要全部抄复制,这样老师会发现。你可以修改啊!你可以排版的比我更加调理清楚。

1.0

#include

struct s

{

int x,*y;

} *p;

int date[]={10,20,30};

struct s array[]={100,&date[0],200,&date[1],300,&date[2]};

void main()

{

p=array;

printf("%d\n",++p->x);

printf("%d\n",++*p->y);

printf("%d\n",*++p->y);

}

/* p指向结构体数组array首地址 即是&array[0].

(1)++p->x 中->运算符优先级大于++所以)p->x 结果是100++p->x =101。

(2)++*p->y中->运算符优先级大于++和*++和*同优先级别结合方向自右向左所以 p->y=&date[0], *p->y=date[0]=10, ++*p->y=11。

(3)*++p->y中同理所以 p->y=&date[0], ++p->y=&date[1], *++p->y=date[1]=20. */

#include"stdio.h"

void main()

{

struct stuinf

{

char name[15];

int score;

}; //定义结构体类型

struct stuinf student;

printf("输入学生的姓名\n");

gets(student.name);

/*不要用scanf输入它遇到空格要结束。*/

printf("输入学生的分数\n");

scanf("%d",&student.score);

printf("\n%s\t%d\n",student.name,student.score);

}

3.0

#include

#define n 2

struct student

{

long int id; //这里的学号是数字

char name[10];

char sex;

int age;

float score;

};

typedef struct student stu; //重新命名,好操作。

void main()

{

stu s[n]; //定义结构体数组

int i,j;

float aveage,avescore;

int num1=0,num2=0,sumage=0,sumscore=0;

for(i=0;i

{

printf("输入第%d人学号:",i+1);

scanf("%ld",&s[i].id);

printf("输入第%d人的姓名:",i+1);

scanf("%s",s[i].name);

printf("请输入第%d人性别,如果男输入m,女输入f: ",i+1);

getchar(); //接受上次的回车,

scanf("%c",&s[i].sex);

//字符要取地址,字符串不用取地址符号。

printf("输入第%d人的年龄:",i+1);

scanf("%d",&s[i].age);

printf("输入第%d人的成绩",i+1);

scanf("%f",&s[i].score);

printf("\n");

}

for(i=0;i

{

if(s[i].sex=='m') num1++;

else num2++;

sumage=sumage+s[i].age;

sumscore=sumscore+s[i].score;

}

aveage=sumage/n;

avescore=sumscore/n;

printf("班上男生:%d人 女生:%d人\n",num1,num2);

printf("平均年龄为:%.2f\n",aveage);

printf("平均成绩为:%.2f\n",avescore);

printf("\n成绩高于平均分的学生信息为:\n");

for(i=0;i

if(s[i].score>avescore)

printf("%ld, %s, %c,%d, %.2f",s[i].id,s[i].name,s[i].sex,s[i].age,s[i].score); }

}

4.0

输入今天是星期几的序号(0~6代表星期天至星期六),给今天和昨天赋予枚举值,并输出昨天是星期几对应的枚举值。

#include

enum day{sun=0,mon=1,thu=2,wed=3,th=4,fri=5,sat=6};

void main()

{

/* 06代表星期天至星期六*/ scanf("%d",&a); int a; printf("输入今天是星期几的序号:"); enum day today ,yesterday;

{ case 0: printf("sum\n"); break; case 1: printf("mon\n"); break; case 2: printf("thu\n"); break; switch(a-1) printf("昨天是:"); else printf("error ,error\n"); else if(a==0) printf("昨天是星期几对应的枚举值:%d\n",6); printf("昨天是星期几对应的枚举值:%d\n",a-1); if(a>0&&a

}

case 4: printf("th\n"); break; case 5: printf("fri\n"); break; case 6: printf("sat\n"); break; case 7: printf("sun\n"); break; }

5.0

#include"stdio.h"

#define m 20

void main()

{

struct publish_date

{

int year;

int month;

int day;

};

struct book

{

char book_name[30];

char author[10];

char publisher[50];

struct publish_date time;

float price;

};

struct book b[m];

int i;

for(i=0;i

{

printf("输入第%d本书的信息",i+1);

printf("请输入书名:");

scanf("%s",b[i].book_name);

printf("输入作者");

scanf("%s",b[i].author);

printf("输入出版社");

scanf("%s",b[i].publisher);

printf("输入出版日期,逗号分隔");

scanf("%d,%d,%d",&b[i].time.year,&b[i].time.month,&b[i].time.day);

printf("输入价格");

scanf("%f",&b[i].price);

}

printf("book_name\t author\t publisher\t publish_date\t price\n");

for(i=0;i

{

printf("%-10s\t ",b[i].book_name);

printf("%-10s\t",b[i].author);

printf("%-10s\t",b[i].publisher);

printf("%d-%d-%d\t",b[i].time.year,b[i].time.month,b[i].time.day);

printf("%-3.2f\n",b[i].price);

printf("\n");

}

}

6.0

6.0某单位工资结构体包含,工资编号,职工姓名,工资年龄,考核奖金,房租水电,公积金,实发工资等内容,假设该单位有六位职工。

输入职工信息,不包括实发工资,计算每一个人的实发工资;统计单位的实发工资总额;计算单位的平均工资;

#include

void select(struct worker s[],int n); // 这个函数是从小到大排序 #define m 6

struct worker

void main()

{

struct worker s[m]; int i,j,k,max; int sum; float ave,wage[m],temp; }; { int id; char name[15]; int wage1; //工龄工资 int price; int pay1; // 房租水电 int pay2; //公积金 float wage; // 实发工资

for(i=0;i

printf("工积金:"); printf("房租水电:"); scanf("%d",&s[i].pay1); printf("考核奖金:"); scanf("%d",&s[i].price); printf("工龄工资:"); scanf("%d",&s[i].wage1); printf("输入职工姓名:"); scanf("%s",s[i].name); printf("输入工资编号:"); scanf("%d",&s[i].id); { printf("输入第%d人的信息",i+1);

} sum=0;

for(i=0;i

printf("单位平均工资:%f\n",sum/(m*1.0)); printf("单位工资总额:%d\n",sum); sum=sum+wage[i]; } printf("第%d人的实发工资",i+1); printf("%5.2f\n",wage[i]); { wage[i]=s[i].wage1+s[i].price-s[i].pay1-s[i].pay2;

for(i=0;i

printf("%5d %5d %5d %5d %10.2f\n",s[i].wage1,s[i].price,s[i].pay1,s[{ printf("%-10d %-10 %s",s[i].id,s[i].name); select(s,m); {s[k].wage=s[k].wage1+s[k].price-s[k].pay1-s[k].pay2;} for(k=0;k

}

}

{

void select(struct worker s[],int n) { int i,j,k,max; struct worker temp; for(i=0;is[j].wage) max=j;

if(i!=max)

{

temp=s[i]; s[i]=s[max]; s[max]=temp;

}

}

7-1

#include

void main()

{

int a=5,b=6,c=7,d=8,m=2,n=2;

printf("%d\n",(m=a>b)&(n=c>d));

}

/*

a>b不成立,所以m=0, c>d不成立,所以

*/

n=0, 0&0=0

#include

void main()

{

unsigned a,b,c,d;

scanf("%o",&a);

b=a>>4;

c=~(~0

d=b&c;

printf("%o,%o\n",a,b);

printf("d=%o c=%o\n",d,c);

}

/* a=0331(8),八进制,因为输入为%o,

a=011 011 001(2)

b=a>>4=000001101(2)=015(8)

c=000~1111=15

d=b&c=000 001 101(2)=15(8) */

8题

编写一个函数int move(int value,char dirction,int digits), 其中形参是value是被循环移位的数,dirction,是被移位的方向,r为友移,l左移, digits为移动位数,函数函数换回值为移动结果。

#include

int move(int value,char dirction,int digits);

int move(int value,char direction,int digits)

{

if(direction=='r')

value=value>>digits;

return value;

if(direction=='l')

value=value

}

void main()

{

int num;

char c;

int dig,end;

printf ("输入被移位的数:");

scanf("%d",&num);

getchar();

printf("如果左移输入l,右移输入r:

scanf("%c",&c); ");

printf("输入移动的位数");

scanf("%d",&dig);

end=move(num,c,dig);

printf("value=%d\n",end);

}

程序设计基础——C语言

科学出版社

第六章——其他数据模型,教材习题答案。 东风冷雪

如果认为对自己不利那就离开。

你看了比没有看好,首先印象还是有的,如果自己不会你可能都不会写,结果就是什么也不做,老师讲解时效果也会降低。其次你不会可能上网查书也是为了寻找答案,这样浪费时间(可能影响深些)。

一份答案做起来不容易,合理利用不要全部抄复制,这样老师会发现。你可以修改啊!你可以排版的比我更加调理清楚。

1.0

#include

struct s

{

int x,*y;

} *p;

int date[]={10,20,30};

struct s array[]={100,&date[0],200,&date[1],300,&date[2]};

void main()

{

p=array;

printf("%d\n",++p->x);

printf("%d\n",++*p->y);

printf("%d\n",*++p->y);

}

/* p指向结构体数组array首地址 即是&array[0].

(1)++p->x 中->运算符优先级大于++所以)p->x 结果是100++p->x =101。

(2)++*p->y中->运算符优先级大于++和*++和*同优先级别结合方向自右向左所以 p->y=&date[0], *p->y=date[0]=10, ++*p->y=11。

(3)*++p->y中同理所以 p->y=&date[0], ++p->y=&date[1], *++p->y=date[1]=20. */

#include"stdio.h"

void main()

{

struct stuinf

{

char name[15];

int score;

}; //定义结构体类型

struct stuinf student;

printf("输入学生的姓名\n");

gets(student.name);

/*不要用scanf输入它遇到空格要结束。*/

printf("输入学生的分数\n");

scanf("%d",&student.score);

printf("\n%s\t%d\n",student.name,student.score);

}

3.0

#include

#define n 2

struct student

{

long int id; //这里的学号是数字

char name[10];

char sex;

int age;

float score;

};

typedef struct student stu; //重新命名,好操作。

void main()

{

stu s[n]; //定义结构体数组

int i,j;

float aveage,avescore;

int num1=0,num2=0,sumage=0,sumscore=0;

for(i=0;i

{

printf("输入第%d人学号:",i+1);

scanf("%ld",&s[i].id);

printf("输入第%d人的姓名:",i+1);

scanf("%s",s[i].name);

printf("请输入第%d人性别,如果男输入m,女输入f: ",i+1);

getchar(); //接受上次的回车,

scanf("%c",&s[i].sex);

//字符要取地址,字符串不用取地址符号。

printf("输入第%d人的年龄:",i+1);

scanf("%d",&s[i].age);

printf("输入第%d人的成绩",i+1);

scanf("%f",&s[i].score);

printf("\n");

}

for(i=0;i

{

if(s[i].sex=='m') num1++;

else num2++;

sumage=sumage+s[i].age;

sumscore=sumscore+s[i].score;

}

aveage=sumage/n;

avescore=sumscore/n;

printf("班上男生:%d人 女生:%d人\n",num1,num2);

printf("平均年龄为:%.2f\n",aveage);

printf("平均成绩为:%.2f\n",avescore);

printf("\n成绩高于平均分的学生信息为:\n");

for(i=0;i

if(s[i].score>avescore)

printf("%ld, %s, %c,%d, %.2f",s[i].id,s[i].name,s[i].sex,s[i].age,s[i].score); }

}

4.0

输入今天是星期几的序号(0~6代表星期天至星期六),给今天和昨天赋予枚举值,并输出昨天是星期几对应的枚举值。

#include

enum day{sun=0,mon=1,thu=2,wed=3,th=4,fri=5,sat=6};

void main()

{

/* 06代表星期天至星期六*/ scanf("%d",&a); int a; printf("输入今天是星期几的序号:"); enum day today ,yesterday;

{ case 0: printf("sum\n"); break; case 1: printf("mon\n"); break; case 2: printf("thu\n"); break; switch(a-1) printf("昨天是:"); else printf("error ,error\n"); else if(a==0) printf("昨天是星期几对应的枚举值:%d\n",6); printf("昨天是星期几对应的枚举值:%d\n",a-1); if(a>0&&a

}

case 4: printf("th\n"); break; case 5: printf("fri\n"); break; case 6: printf("sat\n"); break; case 7: printf("sun\n"); break; }

5.0

#include"stdio.h"

#define m 20

void main()

{

struct publish_date

{

int year;

int month;

int day;

};

struct book

{

char book_name[30];

char author[10];

char publisher[50];

struct publish_date time;

float price;

};

struct book b[m];

int i;

for(i=0;i

{

printf("输入第%d本书的信息",i+1);

printf("请输入书名:");

scanf("%s",b[i].book_name);

printf("输入作者");

scanf("%s",b[i].author);

printf("输入出版社");

scanf("%s",b[i].publisher);

printf("输入出版日期,逗号分隔");

scanf("%d,%d,%d",&b[i].time.year,&b[i].time.month,&b[i].time.day);

printf("输入价格");

scanf("%f",&b[i].price);

}

printf("book_name\t author\t publisher\t publish_date\t price\n");

for(i=0;i

{

printf("%-10s\t ",b[i].book_name);

printf("%-10s\t",b[i].author);

printf("%-10s\t",b[i].publisher);

printf("%d-%d-%d\t",b[i].time.year,b[i].time.month,b[i].time.day);

printf("%-3.2f\n",b[i].price);

printf("\n");

}

}

6.0

6.0某单位工资结构体包含,工资编号,职工姓名,工资年龄,考核奖金,房租水电,公积金,实发工资等内容,假设该单位有六位职工。

输入职工信息,不包括实发工资,计算每一个人的实发工资;统计单位的实发工资总额;计算单位的平均工资;

#include

void select(struct worker s[],int n); // 这个函数是从小到大排序 #define m 6

struct worker

void main()

{

struct worker s[m]; int i,j,k,max; int sum; float ave,wage[m],temp; }; { int id; char name[15]; int wage1; //工龄工资 int price; int pay1; // 房租水电 int pay2; //公积金 float wage; // 实发工资

for(i=0;i

printf("工积金:"); printf("房租水电:"); scanf("%d",&s[i].pay1); printf("考核奖金:"); scanf("%d",&s[i].price); printf("工龄工资:"); scanf("%d",&s[i].wage1); printf("输入职工姓名:"); scanf("%s",s[i].name); printf("输入工资编号:"); scanf("%d",&s[i].id); { printf("输入第%d人的信息",i+1);

} sum=0;

for(i=0;i

printf("单位平均工资:%f\n",sum/(m*1.0)); printf("单位工资总额:%d\n",sum); sum=sum+wage[i]; } printf("第%d人的实发工资",i+1); printf("%5.2f\n",wage[i]); { wage[i]=s[i].wage1+s[i].price-s[i].pay1-s[i].pay2;

for(i=0;i

printf("%5d %5d %5d %5d %10.2f\n",s[i].wage1,s[i].price,s[i].pay1,s[{ printf("%-10d %-10 %s",s[i].id,s[i].name); select(s,m); {s[k].wage=s[k].wage1+s[k].price-s[k].pay1-s[k].pay2;} for(k=0;k

}

}

{

void select(struct worker s[],int n) { int i,j,k,max; struct worker temp; for(i=0;is[j].wage) max=j;

if(i!=max)

{

temp=s[i]; s[i]=s[max]; s[max]=temp;

}

}

7-1

#include

void main()

{

int a=5,b=6,c=7,d=8,m=2,n=2;

printf("%d\n",(m=a>b)&(n=c>d));

}

/*

a>b不成立,所以m=0, c>d不成立,所以

*/

n=0, 0&0=0

#include

void main()

{

unsigned a,b,c,d;

scanf("%o",&a);

b=a>>4;

c=~(~0

d=b&c;

printf("%o,%o\n",a,b);

printf("d=%o c=%o\n",d,c);

}

/* a=0331(8),八进制,因为输入为%o,

a=011 011 001(2)

b=a>>4=000001101(2)=015(8)

c=000~1111=15

d=b&c=000 001 101(2)=15(8) */

8题

编写一个函数int move(int value,char dirction,int digits), 其中形参是value是被循环移位的数,dirction,是被移位的方向,r为友移,l左移, digits为移动位数,函数函数换回值为移动结果。

#include

int move(int value,char dirction,int digits);

int move(int value,char direction,int digits)

{

if(direction=='r')

value=value>>digits;

return value;

if(direction=='l')

value=value

}

void main()

{

int num;

char c;

int dig,end;

printf ("输入被移位的数:");

scanf("%d",&num);

getchar();

printf("如果左移输入l,右移输入r:

scanf("%c",&c); ");

printf("输入移动的位数");

scanf("%d",&dig);

end=move(num,c,dig);

printf("value=%d\n",end);

}


相关文章

  • 辽宁专升本|2016年辽宁专升本招生计划
  • 招生专业 招生数 专业综合课考试科目 联系电话 备注 辽宁科技大学 430       软件工程 200 计算机网络技术.C语言.数据库 招生0412-5929096 考务0412-5928501 软件学院办学:只招收英语考生 电气工程及其 ...查看


  • 计算机科学与技术专业 主要课程
  • 计算机科学与技术专业 03023001 高等数学 Higher Mathematics [192-11-1.2] 内容提要:作为本专业的重要基础课程,内容以微积分.中值定理.不定积分.定积分及其应用,多元 函数微分法及其应用.重积分.曲线积 ...查看


  • 2015年电子科技大学硕士研究生复试科目
  • 复试科目 说明:1.考试大纲详见电子科技大学研招网"考试大纲",参考书目详见电子科技大学研招网"参考书目",仅供参 考,研究生招生办公室不提供,也可参考内容与之相近的其他书目. 2.复试科目如未特别说 ...查看


  • 各大学重点学科摘录
  • 各大学重点学科摘录 一,湖北省 1,武汉大学 一级学科国家重点学科(5个): 理论经济学 生物学 水利工程 测绘科学与技术 图书馆.情报与档案管理 : 二级学科国家重点学科(17个): 马克思主义哲学 中国哲学 金融学 环境与资源保护法学 ...查看


  • 厦门大学2016考研初试参考书目(推荐)
  • 一.人文学院 中文系 "语言文学基础"考试科目参考书目: 1.王力:<古代汉语>,中华书局,2000年. 2.黄伯荣.廖序东:<现代汉语>,高等教育出版社,2000年. 3.袁行霈主编:<中 ...查看


  • 计算机的基本概念
  • 计算机的基本概念 什么是计算机? 计算机是一种能够按照事先存储的程序,自动.高速地对数据进行输入.处理.输出和存储的系统. 计算机能够完成的基本操作及其主要功能: 输入:接受由输入设备(如键盘.鼠标器.扫描仪等)提供的数据. 处理:对数值. ...查看


  • 计算机专业课程表
  • 2007计算机科学与技术专业教学计划 一.培养目标 本专业培养适应海峡西岸经济区,尤其是厦门市经济建设与社会发展需要,具有良好的科学素养,系统扎实地掌握计算机科学与技术基本理论.基本知识和基本技能与方法,符合计算机发展规律要求,能综合运用知 ...查看


  • [5月4日]专科.自考电子书.22本已发布
  • 最后更新日期: 2012年4月1日 教材 ===================================================== 序 号 课程代码 课程名称 教材名称 作者 出版社 版次 1 3706 思想道德修养与法律 ...查看


  • 西安工程大学本科专业情况简介
  • 西安工程大学本科专业情况简介 纺织工程专业 专业概况:本专业是我校特色专业之一,国家级特色专业建设点.省级特色专业建设点.省级名牌专业.该专业涵盖了纤维材料.纺织品设计.纺织品加工设备.纺织生产质量控制.纺织品经营与贸易.计算机应用等多方面 ...查看


  • 学科分类目录一览
  • 学科.专业目录 一. <授予博士. 硕士学位和培养研究生的学科.专业目录> (简称"学科. 专业目录"),是国务院学位委员会学科评议组审核授予学位的学科.专业范围 划分的依据.同时,学位授予单位按本目录中各学 ...查看


热门内容