程序设计基础—C语言,科学出版社
C语言课程设计实验报告1

课程设计报告题目:景点查询系统课程名称:C语言课程设计专业班级:信息安全二班任务书⑴主要内容建立国内景点信息系统,提供创建、编辑和综合查询等基本业务管理和服务。
⑵任务要求收集与阅读相关文献资料,确定系统目标与范围,分析系统需求,确定系统功能;设计系统方案,完成系统实现;提交《课程设计报告》。
⑶参考文献[1]曹计昌,卢萍,李开. C语言程序设计,北京:科学出版社,2008[2]张引. C程序设计基础课程设计, 杭州: 浙江大学出版社,2007[3]黄明,梁旭,万洪莉. C语言课程设计,北京: 电子工业出版社,2006目录1 绪言 (1)1.1 课题背景 (1)1.2 课题目的及意义 (1)1.3 课题应解决的主要问题及应达到的技术要求 (1)1.4 研究与发展概况及存在的问题 (2)1.5 设计的指导思想 (2)2 方案论证 (3)2.1 菜单的选择 (3)2.2 链表的选择 (3)2.3 主菜单和子菜单的设定 (3)3 课设过程论述 (5)3.1 系统数据 (5)3.2 系统各模块功能 (6)3.3 数据结构设计及用法说明 (8)3.4 程序结构 (9)4 结果分析 (10)5 课程设计总结 (13)6 参考文献 (14)附录程序清单 (15)1 绪言本章阐述课程设计课题的背景、目的与意义、应解决的主要问题及应达到的技术要求;简述研究与发展概况及存在的问题,本设计的指导思想。
1.1 课题背景随着社会的发展,旅游成为一个越来越热门的话题,很多人都会以旅游的方式度过自己的假期、生日、结婚纪念日等等,但是要想充分享受旅游带来的快乐,前期的准备就显得非常重要,只有前期的准备做好了,才能充分规划自己的旅游,才能充分享受自己的旅游。
前期的准备很大一方面是要查询自己要去的地方的一些基本信息,比如景区地点,景区门票。
城市中所含有的景区等等,如果有一个系统能够快速的查询景点信息,那么这就为人们出去旅游提供了很多的信息,帮助人们为旅游做好充分的准备!1.2 课题目的及意义课题目的:本课题主要是通过景点查询系统向人们提供景点,景区,城市等方面信息的查询,修改,统计等服务,让人们快速获得有关旅游景点、景区、城市方面的信息,帮助人们充分规划自己的出行方案。
程序设计基础《程序设计基础》教学大纲-刘喜平3.1 教学大纲

《程序设计基础》课程教学大纲课程编号:03045制定单位:信息管理学院制定人(执笔人):刘喜平审核人:万常选制定(或修订)时间:2016年 02月 28 日江西财经大学教务处《计算机组成原理》课程教学大纲一、课程总述本课程大纲是以2014年计算机科学与技术专业本科专业人才培养方案为依据编制的。
二、教学时数分配三、单元教学目的、教学重难点和内容设置第一章程序设计与软件开发【教学目的】本章介绍程序设计的基本背景,如什么是程序,程序是如何设计的,算法、数据结构是什么,什么是软件,为什么提出了软件工程的概念等。
【重点难点】重点:程序设计语言的理解,算法和数据结构的理解难点:数据结构的概念【教学内容】1.1 程序设计的基本概念介绍什么是程序,什么是程序设计语言,以及什么是程序设计1.2 算法与数据结构介绍算法及其特征、算法的结构、算法的描述,以及数据结构的概念。
1.3 软件开发介绍什么是软件,软件与程序之间的区别,讲解软件工程的必要性。
第二章C语言概述【教学目的】本章将描述C语言的一个子集,这个子集中的内容是C语言中最基础、最常用的部分。
通过本章,读者对C语言和C程序将有一个较为全面的了解;学习完本章后,读者可以阅读和编写简单的程序,为学习其他章节打下基础;再次,对于有其他语言基础的读者而言,通过本章可以快速地进入到C语言的角色中来。
本章首先介绍C语言的发展历史,以及C语言的特点。
然后,将通过实例介绍C程序的构成。
之后,将介绍C语言中最基本的知识点:常见数据类型、表达式、输入和输出、语句和函数。
【重点难点】重点:C程序的构成、变量、常见数据类型、printf和scanf函数、if语句、for和while语句、函数难点:printf和scanf函数、for和while语句、函数【教学内容】2.1 C语言的发展与特点介绍C语言产生的背景和特点。
2.2 一个C程序实例通过一个实例介绍C程序的构成。
2.3 C语言的字符集与标识符介绍C语言字符集的组成和标识符的注意事项2.4 数据类型介绍集中最常见的数据类型:int、float、double和char2.5 常量和变量介绍常量和变量的概念,常见数据类型常量的表示方法,变量的声明与初始化2.6 运算符和表达式介绍算术运算符、赋值运算符、关系运算符等常见的运算符,以及这些运算符组成的表达式2.7 输入与输出介绍printf和scanf函数输入输出一般格式,并举例说明。
12 《C语言程序设计》教案 第四章 数组(2)—二维数组

二维数组的存储:二维数组从概念上可理解为行-列矩阵,但存储器是一维的,需按一定规则转换,在内存中:C语言中,二维数组中元素排列的顺序是——按行存放,不同的语言它的排列顺序是不一样的,Fotran是按列存放的。
如:见纸上
也就是说:数组元素的实际存放顺序是:右边下标比左边下标变化得快!!!
(2)字符数组的初始化
1)按元素赋
static char c[10]={‘s’,’t’,’o’,’r’,’e’};
注意static char c[10];则c[0],c[1],。。。c[9]初值均为‘\0’
但若char c[10];则c[0],c[1],。。。c[9]的值是未知的
注意:在C语言中,讲字符串作为字符数组来处理,即用一个一维数组来存放一个字符串。如c[10]存放字符串“store”。为了测定实际字符串长度,C语言规定了一个“字符串结束标志”,即‘\0’。即遇到字符‘\0’时,表示字符串结束。
printf(“%5”,a[i][i]);输出主对角线数据
考虑输出次对角线数据,打印上三角的各数据
例将一个二维数组行和列元素互换,存到另一个二维数组中(转置)
算法:1 a数组初始化(或赋值)并输出;2用二重循环进行转置b[j][i]=a[i][j];输出b数组
对于n*n的二维数组,可以在同一个数组进行矩阵转置操作
H=104
I =105
S=115
=32
注意几个问题:用字符串给字符数组赋初值,系统自动加上空字符’\0’(终结符)
‘ ’空格字符的AscII编码为32
‘\0’空字符ASCII编码为0
两者均无法直接打印出来。
3)字符串的引用与输入输出
《c语言程序设计》教学大纲

《C语言程序设计》教学大纲课程名称:中文名称:C语言程序设计;英文名称:C Language Programming课程编码:161002学分:4.5分总学时:72学时,其中,理论学时:52学时;上机学时:20学时。
适用专业:全校理工科各专业先修课程:计算机基础执笔人:审订人:一、课程的性质与任务《C语言程序设计》是为全校所有的理工科专业的学生开设的公共基础课,也是一门重要的必修课。
其目的是使学生掌握程序设计的基本方法,培养学生掌握利用计算机处理问题的思维方法与应用能力。
要求学生掌握程序的三种基本结构及结构化的程序设计方法,了解并掌握几种典型的算法,并且能够熟练地运用C语言编写各种应用程序,为进一步学习其它相关课程奠定基础。
二、教学内容与学时分配第一章程序设计基本概念(3学时)本章重点:一、算法及特性;二、结构化程序设计方法。
难点:算法设计及其表示。
第一节程序和程序设计一、程序;二、程序设计。
第二节算法第三节结构化程序设计方法第四节C语言程序的基本结构第二章数据类型、运算符和表达式(5学时)本章重点:一、标识符的正确使用;二、各种基本数据类型的使用;三、算术运算符的优先级和结合性;四、表达式计算中的类型转换。
难点:一、各种类型数据在计算机内存中的存储形式;二、自增自减运算。
第一节C语言的数据类型第二节常量与变量第三节整型数据第四节实型数据第五节字符型数据第六节算术运算符与算术表达式第七节赋值运算符与赋值表达式一、赋值运算符和赋值表达式;二、复合的赋值表达式;三、自加、自减运算符;四、赋值运算中的类型转换。
第八节逗号运算符与逗号表达式第三章顺序结构程序设计(4学时)本章重点:一、printf函数;二、scanf函数。
难点:输入与输出时的格式控制。
第一节C语句概述第二节赋值语句第三节数据的输入与输出一、printf函数;二、putchar函数;三、scanf函数;四、getchar函数第四节顺序结构程序举例第四章选择结构程序设计(4学时)本章重点:一、逻辑值的表示、使用及其运算;二、关系运算符的运算规则及关系表达式;三、逻辑运算符的运算规则及逻辑表达式;四、if语句;五、switch语句的形式与执行过程。
06c语言程序设计教案程序的控制结构—顺序结构

06c语言程序设计教案程序的控制结构—顺序结构int a=-1;printf(“%d,%o”,a,a);输出结果为:-1,177777这是因为-1在内存中以补码形式存放(见图3-2)。
八进制数为从低位开始,以三位一组划分为一个八进制数。
3)x格式符。
以十六进制数无符号形式输出整数。
例如:int a=-1;printf(“%x,%o,%d”,a,a,a);输出结果为:ffff,177777,-1十六进制数为从低位开始,见图3-2,以四位一组划分为一个数。
4)u格式符。
以十进制数无符号形式输出整数。
一个有符号的(int)型数据能够用%d格式输出,也能够用%u格式输出。
要注意两类数据的取值范畴大小。
例如:无符号数据的输出。
main(){unsigned int x=65535;int y=-1;printf(“x=%d,%o,%x,%u\n”,x,x,x,x);printf(“y=%d,%o,%x,%u\n”,y,y,y,y);}运行结果为:x=-1,177777,ffff,65535y=-1,177777,ffff,65535即-1的二进制形式以无符号形式输出时为整数65535。
5)c格式符。
用来输出一个字符。
例如:char x=’A’;printf(“%c,%d\n”,x,x);运行结果为:A,65能够看出,一个范畴在0~255的整数,既能够用%d格式输出,也能够用%c格式输出。
输出该整数或者整数对应ASCII的字符。
6)s格式符。
用来输出一个字符串,该格式有以下用法:①%s例如:printf(“%s”,”HELLO”);运行结果为:HELLO②%±ms,假如%ms字符串的实际宽度小于m,右对齐,左端补空格,%-ms,字符串左对齐,右端补空格;否则,不受m限制,输出实际宽度。
③%±m.ns,若%m.ns取字符串左端n个字符,输出在m列的右端,左端补空格;%-m.ns,取字符串左端n个字符,输出在m列的左侧,右侧补空格;若m<n,则m自动取n 值输出n个字符。
c语言程序设计(科学出版社)课后习题解答

第3章习题解答第1章1.C 言语程序主要由预处理命令、函数、注释等组成。
.2.填空(1)分号(2)main(3)stdio.h3.源程序:include<stdio.h>main( ){printf(“XXXXXXXXXXXXXXXXXXXXXXXXX\n〞); printf(“Hello World!\n〞);printf(“XXXXXXXXXXXXXXXXXXXXXXXXX〞);}4.源程序:include <stdio.h>main( ){int a, b, c; /X 定义变量X/scanf(“%d〞, &a); /X 输入第—个整数X/scanf(“%d〞, &b); /X 输入第二个整数X/c=a-b; /X 计算差X/printf(“%d-%d=%d〞,a,b,c); /X 输出结果X/}5.(1)<stdio.h>(2)x=10;(3)printf(“s=%d\n〞,s);第2章1.(1) c(2) a(3) b g(4) a d e(5) d2. a. 5 b. 295 c. 4 d. 29 e. 93. a.x=4,y=6b. x=4,y=3f.x=3,y=64. 165.include<stdio.h>main(){int a,b,c;scanf("%d%d",&a,&b);c=aXb;printf("%dX%d=%d",a,b,c);}第3章1.(1) b(2) b(3) d(4) a(5) b2.(1)&a,&b(2)l,s3. printf(“x=%.2f,y=%.2f\n〞,x,y);4.include<stdio.h>main(){int num1,num2,num3,sum;float average;scanf("%d%d%d",&num1,&num2,&num3);sum=num1+num2+num3;average=sum/3.0;printf("sum=%d,average=%.2f\n",sum,average);}5.include<stdio.h>main(){int hour,minute,second,total; /X 定义变量代表时、分、秒和总秒数X/ scanf("%d",&total);hour=total/3600;minute=total%3600/60;second=total%3600%60;printf("%dhours:%dminutes:%dseconds\n",hour,minute,second);}第4章1.(1) a(2) b(3) b(4) b(5) b2. 03.(1) 6(2) 4(3) 1(4) 14.include <stdio.h>main( ){int x,y;scanf("%d",&x);if (x>-5 &x<0)y=5Xx;if (x == 0)y=-1;if (x>0 &x<10)y=2Xx+1;printf("x=%d,y=%d\n",x,y);}5.include <stdio.h>main( ){int score,rank; /X score 表示成绩,rank 表示级别X/ printf("Please input score:");scanf("%d",&score);rank=score/10;switch(rank){case 10:case 9: printf("成绩等级为:A\n"); break;case 8: printf("成绩等级为:B\n"); break;case 7: printf("成绩等级为:C\n"); break;case 6: printf("成绩等级为:D\n"); break;default:printf("成绩等级为:E\n"); break; }}6.include<stdio.h>void main(){int n;printf("Please input the digit:");scanf("%d",&n);switch(n){case 1:printf("Jan \n");break;case 2:printf("Feb \n");break;case 3:printf("Mar \n");break;case 4:printf("Apr \n");break;case 5:printf("May \n");break;case 6:printf("Jun \n");break;case 7:printf("Jul \n");break;case 8:printf("Agu \n");break;case 9:printf("Sep \n");break;case 10:printf("Oct \n");break;case 11:printf("Nov \n");break;case 12:printf("Dec \n");break;}}第5章1.(1) b(2) a(3) b(4) d(5) d2. 7,13. y=-14. m=65. 10,146. 37. 58. ABABCDCD9.include <stdio.h>main ( )int i;long int sum=0;for (i=2;i<=200;i+=2)sum+=i;printf("2+4+6+...+200=%ld",sum); }10.include <stdio.h>main(){long int n;int sum = 0;printf("Please input the nber:"); scanf("%ld",&n);while(n != 0){sum += n % 10;n /= 10;}printf("%d\n", sum);}第6章1.(1) d(2) b(3) d(4) c(5) a2. 113. 34. 56895. 12,66. (1) i--(2) n7. (1) char k; (2) i<j8.include <stdio.h>main( ){float a10];int i;float sum=0,average;for (i=0;i<10;i++)printf("a%d]=",i);scanf("%f",&ai]);sum+=ai];}average=sum/10;printf("average is %.2f\n",average);}9.include <stdio.h>define N 10main( ){int aN],i,target,found;for (i=0;i<N;i++)scanf("%d",&ai]);printf("Please input a number:");scanf("%d",&target);i=0;while(i<N &target != ai])i++;found = i<Ni:-1;printf("%d\n",found);}10.include <stdio.h>define N 80main( ){char strN];int len=0,i=0;printf("Please input a string:");gets(str);while (stri++!= 0) len++;printf("the length of string is %d.\n",len); }第7章1. 212. 1363. 164. (1) func (2) m++5. 96. 1,6,3,2,37. 2,5,1,2,3,-28.include <stdio.h>int fun(int a,int b,int c);main( ){int a,b,c,max;printf("Please input three numbers:"); scanf("%d%d%d",&a,&b,&c);max=fun(a,b,c);printf("Max is %d.\n",max);}int fun(int a,int b,int c){int max;max= a>b(a>ca:c):(b>cb:c);return max;}9.include <stdio.h>long int sum(int n);main( ){int n;printf("n=");scanf("%d",&n);printf("Sum=%ld.\n",sum(n));}long int sum(int n){if (n = = 1 ) return 1;else return sum(n-1)+n;}10.include <stdio.h>void fun(n);main( ){int n;printf("n=");scanf("%d",&n);fun(n);}void fun(n)if (n = = 0) return;else{fun(n/2);printf("%-2d",n%2);}}第8章1.(1) b(2) d(3) b(4) c(5) c2. 83. 1234567894. 2 3 4 5 65. 3456. 1 2 3 4 5 67. bi8. bcdefgha9. p=sum10.include <stdio.h>include <string.h>main(){char str80];char Xp1, Xp2;gets(str);p1=str;p2=str+strlen(str)-1;while (p1<p2 &Xp1++ == Xp2-- ) ; puts( p1<p2 "不是回文" : "是回文" ); }第9章1.a. define F(x) (x)X(x)X(x)b. define F(x) (x)%4c. define F(x,y) (x)X(y)<1001:02.b. 4c. define DOUBLE(x) 2X(x)3. d4. -205. N is undefined6. 7.57. y=68.include <stdio.h>define SW AP(a,b) {int temp;temp=a;a=b;b=temp;}main(){int x,y;printf("x=");scanf("%d",&x);printf("y=");scanf("%d",&y);SWAP(x,y)printf("x=%d,y=%d.\n",x,y);}第10章1.struct student{int sno;char sname10];char sex;}stu1,stu2;2. 123. 合法的有a,b,dc.改成s.u.rectangle.length=25;e.改成s.u.circle.radius=5;f.改成s.u.circle.radius=5;4. a,b,c,d (说明:变量b 有确定的值之后,b++是合法的。
C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题11 课后答案

//链表 list1 的尾部指向链表 list2 的表头 //合并后的链表表头是 list1
NEW=tail=NULL; //新建链表 NEW,一开始为空表 for (p=L; p!=NULL; p=p->next){ q =(struct zg*) malloc( sizeof(struct zg*)); //为新链表分配新节点 q q->name= p->name; //复制节点的数据区内容 q->salary= p->salary; q->next=NULL; //该节点也是目前新链表中的表尾节点 if(NEW==NULL) NEW=q; //若当前 NEW 为空链表,则令新节点 q 为表头节点 else tail->next=q; //否则新节点连到表尾处 tail=q; } return NEW; } //返回复制得到新链表 //现在 q 是表尾节点
字符指针加1即加1个字符变量所占字节数1b故intpc11intpc33整型指针加1即加1个整型变量所占字节数4b故intpi14intpi54520double个double型变量所占字节数8b故intpi18intpi78756定义一个关于年月日的结构并编写一函数计算某日是某年第几天定义结构
习题参考答案 习题十一
(13) int x=0 //定义变量 x—待补考人数,并初始化 p= head //p 指向链表的头一个节点 p –>score <60 3. /*分析程序输出结果*/
23 98.5 wang 23 98.5 wang y ang 最后一行: *px->c+2 -- 该表达式有 3 个运算符:2 个单目运算*和->, 优先级高于双目运算+,而根据结合性,先算->后算*, 故表达式相当于 (*(px->c) )+2。 px->c 是指结构变量 x 的分量 c,而 c 本身是一个字符指针,指向字符串”wang”的首字 符’w’, 对指针 px->c 做间接访问*,得到该指针指向的字符本身,即’w’, 最后对该字符加 2,得到另一个字符’y’. &px->c[1] -- 该表达式有 2 个运算符: 2 个单目运算 & 和 ->, 而根据结合性,先算 -> 后算 &, 故表达式相当于 &(px->c[1])。 px->c[1]是指结构变量 x 的分量 c 的下标为 1 的字符, 即’a’, 然后再算&,即求’a’的地址,考虑到输出时 对应的格式’%s’,即输出从该地址开始的字符串,因此输出从’a’开始的字符串”ang”. (2) 略 (3) 1 4 8 3 20 56 分析: NULL==0, 故字符指针 pc=整型指针 pi=双精度指针 pd=0, 但指针类型不同,指针运算的含义不同: 字符指针加 1,即加 1 个字符变量所占字节数—1B,故(int)(pc+1)=1, (int)(pc+3)=3 整型指针加 1,即加 1 个整型变量所占字节数—4B,故(int)(pi+1)=4, (int)(pi+5)=4*5=20 double 型指针加 1,即加 1 个 double 型变量所占字节数—8B,故(int)(pi+1)=8, (int)(pi+7)=8*7=56 4. 定义一个关于年月日的结构,并编写一函数计算某日是某年第几天 //定义结构: struct date{ int year, month, day; }; //定义函数 f: int f( struct date x) { int table[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31} }; int i,leap, d=0; leap= x.year%4==0&x.year%100!=0 || x.year%400==0; for( i=1; i<=12; i++) d += table[leap][i]; return d; } 5. 编写函数,计算两个时刻之间的时间差,时间以时分秒表示,为 24 小时制 struct time{ int hour, minute, second; }; (struct time) time_lag(struct time t1, struct time t2) //返回值—时差以时分秒的形式表示 { int tx1, tx2; //tx1,tx2 表示时刻 t1 或 t2 是当天的第几秒? struct time lag; tx1=t1.hour*3600; tx2=t2.hour*3600; //1 小时为 3600 秒
c语言ppt

2
教学目标: • 了解计算机程序和语言的概念; • 了解C语言的基本构成; • 掌握C程序的运行步骤。 本章重点: • 计算机程序和计算机语言的概念;程序设计的基 本任务;C语言程序的基本构成;运行C程序的步 骤和方法。 本章难点: • C语言程序的基本构成;运行C程序的步骤和方法。
《程序设计基础(C语言)》
《程序设计基础(C语言)》
10
• 编译方式使用编译程序(编译器)。在应用程序 执行之前,就将程序源代码翻译成目标代码(机 器语言),因此其目标程序可以脱离其语言环境 而反复独立执行,使用比较方便、运行效率较高 ,但一旦应用程序需要修改时,必须先修改其源 代码,再重新编译生成新的目标程序才能执行, 很不方便。编译型高级语言有很多,例如Visual C++、Visual FoxPro、Delphi等。
《程序设计基础(C语言)》
• 1995年,ISO对C90做了一些修订,即“1995基准 增补 1(ISO/IEC 9899/AMD1:1995)”。1999年, ISO又对C语言标准进行修订,在基本保留原来的C 语言特征的基础上,针对应用的需要,增加了一 些功能,尤其是C++中的一些功能,命名为 ISO/IEC 9899:1999。2001年和2004年先后进行了 两次技术修正,即2001年的TC1和2004年的TC2。 ISO/IEC 9899:1999及其技术修正被称为C99,C99 是C89(及1995基准增补1)的扩充。 • 本书以C99标准为依据,为了与C89作比较,在本 书的叙述中对C99新增加的功能作特别的说明。
《程序设计基础(C语言)》1.4.2 C和C++
• C++语言是在C语言的基础上,添加了面向对象、 模板等现代程序设计语言的特性而发展起来的。 C++吸收了C语言的诸多优点,同时又添加了面向 对象程序设计的新理念,非常适用于开发复杂的 大型软件,这也是它成为主流程序设计语言的主 要原因。 • 但是,C语言兼顾了接近底层和高性能这两个显著 特性,同时又比C++语言更加简洁,随着当今世界 嵌入式开发技术的发展、大型算法的应用,特别 是搜索引擎、云计算的兴起,C语言的用武之地不 但没有萎缩,反而有逐渐扩展的趋势。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计基础——C语言科学出版社第六章——其他数据模型,教材习题答案。
东风冷雪如果认为对自己不利那就离开。
你看了比没有看好,首先印象还是有的,如果自己不会你可能都不会写,结果就是什么也不做,老师讲解时效果也会降低。
其次你不会可能上网查书也是为了寻找答案,这样浪费时间(可能影响深些)。
一份答案做起来不容易,合理利用不要全部抄复制,这样老师会发现。
你可以修改啊!你可以排版的比我更加调理清楚。
1.0#include<stdio.h>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();/*不要用scanf输入它遇到空格要结束。
*/ printf("输入学生的分数\n");scanf("%d",&student.score);printf("\n%s\t%d\n",,student.score); }3.0#include<stdio.h>#define n 2struct 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<n;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<n;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<n;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<stdio.h>enum day{sun=0,mon=1,thu=2,wed=3,th=4,fri=5,sat=6};void main(){enum day today ,yesterday;int a;printf("输入今天是星期几的序号:");/* 06代表星期天至星期六*/scanf("%d",&a);if(a>0&&a<7)printf("昨天是星期几对应的枚举值:%d\n",a-1);else if(a==0)printf("昨天是星期几对应的枚举值:%d\n",6); else printf("error ,error\n");printf("昨天是:");switch(a-1){case 0: printf("sum\n"); break;case 1: printf("mon\n"); break;case 2: printf("thu\n"); break;case 3: printf("wed\n"); break;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 20void 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<m;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<m;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.06.0某单位工资结构体包含,工资编号,职工姓名,工资年龄,考核奖金,房租水电,公积金,实发工资等内容,假设该单位有六位职工。
输入职工信息,不包括实发工资,计算每一个人的实发工资;统计单位的实发工资总额;计算单位的平均工资;#include<stdio.h>void select(struct worker s[],int n); // 这个函数是从小到大排序#define m 6struct worker{int id;char name[15];int wage1; //工龄工资int price;int pay1; // 房租水电int pay2; //公积金float wage; // 实发工资};void main(){struct worker s[m];int i,j,k,max;int sum;float ave,wage[m],temp;for(i=0;i<m;i++){printf("输入第%d人的信息",i+1);printf("输入工资编号:");scanf("%d",&s[i].id);printf("输入职工姓名:");scanf("%s",s[i].name);printf("工龄工资:");scanf("%d",&s[i].wage1);printf("考核奖金:");scanf("%d",&s[i].price);printf("房租水电:");scanf("%d",&s[i].pay1);printf("工积金:");scanf("%d",&s[i].pay2);}sum=0;for(i=0;i<m;i++){wage[i]=s[i].wage1+s[i].price-s[i].pay1-s[i].pay2;printf("第%d人的实发工资",i+1);printf("%5.2f\n",wage[i]);sum=sum+wage[i];}printf("单位工资总额:%d\n",sum);printf("单位平均工资:%f\n",sum/(m*1.0));for(k=0;k<m;k++){s[k].wage=s[k].wage1+s[k].price-s[k].pay1-s[k].pay2;}select(s,m);for(i=0;i<m;i++){printf("%-10d %-10 %s",s[i].id,s[i].name);printf("%5d %5d %5d %5d %10.2f\n",s[i].wage1,s[i].price,s[i].pay1,s[ i].pay2,s[i].wage);}}/*排序函数*/ // 这个函数是从小到大排序void select(struct worker s[],int n){int i,j,k,max;struct worker temp;for(i=0;i<n-1;i<i++){max=i;for(j=i+1;j<n;j++)if(s[max].wage>s[j].wage)max=j;if(i!=max){temp=s[i];s[i]=s[max];s[max]=temp;}}7-1#include<stdio.h>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<stdio.h>void main(){unsigned a,b,c,d;scanf("%o",&a);b=a>>4;c=~(~0<<4);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=15d=b&c=000 001 101(2)=15(8) */8题编写一个函数int move(int value,char dirction,int digits), 其中形参是value是被循环移位的数,dirction,是被移位的方向,r为友移,l左移, digits为移动位数,函数函数换回值为移动结果。