第八次c语言作业
C语言第8章习题及答案

第八章用一个数组存放图书信息,每本书是一个结构,包括下列几项信息:书名、作者、出版年月、借出否,试写出描述这些信息的说明,并编写一个程序,读入若干本书的信息,然后打印出以上信息。
#include <>typedef struct{char Name[20];char Author[20];int Date_Year;int Date_Month;int loaned;?} BOOK;#define N 10void main(){BOOK books[N];int i;for (i=0;i<N;i++)】{printf("Input Book's Name:");gets(books[i].Name);printf("Input Book's Author:");gets(books[i].Author);printf("Input Book's Year of Publishing:");scanf("%d",&books[i].Date_Year);printf("Input Book's Month of Publishing:");scanf("%d",&books[i].Date_Month);printf("Input Book's Status, 1-Loaned, 2-Keepin:");"scanf("%d",&books[i].loaned);}for (i=0;i<N;i++){printf("Book: %s, Author: %s, Publishing:%d-%d, Status:%d\n", books[i].Name, books[i].Author, books[i].Date_Year, books[i].Date_Month, books[i].loaned);}}|编写一个函数,统计并打印所输入的正文中的各个英文单词出现的次数,并按次数的递减顺序输出。
C语言第8次实训题目及参考答案

if(sushu(i+2)==1) {
printf("%d %d\n",i,i+2); count++; } } } printf("200~1000 范围内容一共%d 对双胞胎数\n",count); }
t=t*a; } return t; } void main() { int n,m,i,j,s=0;//i 是底数,j 是指数 scanf("%d,%d",&n,&m); for(i=n,j=m;i<=m;i++,j--) {
s+=mi(i,j); } printf("s=%ld",s); }
4、求[200,1000]的双胞胎数的对数。双胞胎数:两素数差为 2 称为双胞胎数。 提示:在第 2 题的基础上进行修改:自定义函数不变,在 main()函数中实现对双胞胎数的 判断:如果 a 是素数,再进一步判断 a+2 是不 0 是素数。如果 a+2 也是素数,则 a、a+2 为 双胞胎数。 参考代码: int sushu(int i) {
for(j=2;j*j<=i;j++) {
if(i%j==0) {
flag=0; break; } } return flag; }
#include <stdio.h> void main() {
int i,count=0; for(i=200;i>=2;i--) {
if(sushu(i)==1) {
printf("%d ",i); count++; }
C语言实验

提交作业要求1.建立一个学号+姓名文件夹(如:20111234张志),建立一个实验报告文件(实验报告.txt或实验报告.doc均可),将实验步骤和程序运行结果拷贝到.txt文件或.doc文档中(可用Alt+PrtSc组合键抓屏),把每次的实验报告(.txt或.doc)和源程序(.C文件)放在学号+姓名文件夹中,上传到教师机“03/09教学班”下面对应的班级文件夹中,下机前把文件夹删除。
2.课外编程题提交到教师机“程序设计”文件夹中。
上机注意事项●运行程序时,应在英文状态下输入数据。
●上一个程序运行结束后, 要关闭工作区或VC窗口, 重新建立一个文件,输入下一个程序。
●编译时死机,将原程序窗口最小化,将程序拷贝到重新打开的VC文件中,可激活系统。
第一次实验(基本程序设计)★预习: 上机指导P4~10详细阅读上机指导P6~7, 掌握vc++6.0的使用方法。
★实验内容:(1)实验1(P5)①(p6)2. 调试修改(改错:求由键盘输入的任意两个整数的乘积。
)#include<stdio.h>void main(void){ int c;scanf(“%d,%d”,&x,&y);/**********FOUND**********/c=a*b/**********FOUND**********/printf(“The product is:%d\n”,c)}②(p7)3.完善程序(程序填空:求圆面积)#define PI 3.14159#include<stdio.h>void main(void){ float r ;double area;scanf(“%f”, &r);/**********SPACE**********/area=【?】;printf(“area=%f\n”, area);}(2)学习编程:①编写一个两个整数相乘的C程序,要求输出格式为: c=3*4=12②从键盘输入三个整数,计算并输出三个整数的平均值。
C语言第八次作业答案

9.2 文件的打开和关闭
文件类型(FILE)指针 fopen函数 fclose函数
文件类型(FILE)指针
FILE类型 处理一个文件应知它的各种信息,这些信息由系统将其构 成一个结构体类型,取名 FILE,谓之文件类型,其定义 放在stdio.h头文件中。
typedef struct { short level; /* fill/empty level of buffer */ unsigned flags; /* File status flags */ char fd; /* File descriptor */ unsigned char hold; /* Ungetc char if no buffer */ short bsize; /* Buffer size */ unsigned char *buffer; /* Data transfer buffer */ unsigned char *curp; /* Current active pointer */ unsigned istemp; /* Temporary file indicator */ short token; /* Used for validity checking */ } FILE;
fopen-文件打开函数
原型:FILE *fopen ( char *filename, char *mode ); 调用时: • filename(文件名)为要打开文件的文件名(字符 串),可写成: "test.dat" 或定义过 char s[ ] ="test.dat"; 则写 s ; 或定义过 char *pc ="test.dat"; 则写 pc ; 或定义过 #define ff "test.dat"; 则写 ff 。
2016C语言习题全集及答案:第八单元结构体和共用体

第八单元结构体和共用体一、选择题1、说明一个结构体变量时系统分配给它的内存是。
A. 各成员所需要内存量的总和B. 结构体中第一个成员所需内存量C. 成员中占内存量最大者所需的容量D. 结构中最后一个成员所需内存量2、 C 语言结构体类型变量在程序执行期间。
A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在在内存中D. 没有成员驻留在内存中3、设有以下说明语句struct stu { int a ; float b ; } stutype ;则下面的叙述不正确的是。
A. struct 是结构体类型的关键字B. struct stu 是用户定义的结构体类型C. stutype 是用户定义的结构体类型名D. a 和b 都是结构体成员名4、程序中有下面的说明和定义struct abc { int x;char y;}struct abc s1,s2;则会发生的情况是。
A. 编译出错B. 程序将顺利编译、连接、执行C. 能顺利通过编译、连接、但不能执行D. 能顺利通过编译、但连接出错5、有如下定义struct person { char name[9]; int age;};struct person class[10]={ " Johu", 17,"Paul", 19,"Mary", 18,"Adam",16};根据上述定义,能输出字母M 的语句是。
A. prinft(" %c\n",class[3].name);B. printf(" %c\n",class[3].name[1]);C. prinft(" %c\n",class[2].name[1]);D. printf(" %c\n",class[2].name[0]);6、下面程序的输出是。
南航C语言课后习题08答案

5.答案 #include <stdio.h> #include <math.h> struct coordinate { double x; double y; double z; }; main( ) { void Print(struct coordinate x); struct coordinate Input(); double distance(struct coordinate x,struct coordinate y); struct coordinate a,b;
Байду номын сангаас
score 78 89 78 99
4444 */
dddd
99
2.答案 #include <stdio.h> #include <ctype.h> int daytab[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}}; struct data { int year, month, day; }dt; int day_of_year(int year, int month, int day) { int i, leap; leap=((year%4==0&&year%100!=0)||year%400==0); for(i=1; i<month; i++) day+=daytab[leap][i]; return day; } void inver(char s[]) { int i=0; while(isdigit(s[i])) { dt.year=dt.year*10+s[i]-'0'; i++; } i++; while(isdigit(s[i])) { dt.month=dt.month*10+s[i]-'0'; i++; } i++; while(isdigit(s[i])&&s[i]) { dt.day=dt.day*10+s[i]-'0'; i++; } } main( ) {
北航大一上c语言第四五六七八次作业

3. 字母频率统计【问题描述】编写程序从标准输入中读入一段英文,统计其中小写字母出现次数,并以柱状图的形式显示其出现次数。
【输入形式】在标准输入上输入一段英文文章(可能有一行,也可能有多行),在新的一行的开头输入ctrl+z键表示结束。
【输出形式】在屏幕上依次输出表示每个小写字母出现次数的柱状图(以“*”字符表示柱状图,空白处用空格字符表示,某个小写字母出现多少次,就显示多少“*”字符;柱状图的高度以出现最多的字母次数为准),在最后一行依次输出26个小写字母。
【样例输入】The computing world has undergone arevolution since the publication ofThe C Programming Language in 1978.【样例输出】【样例说明】在输入的英文短文中,小写字母a出现了6次,所以其上输出了6个字符"*"。
出现次数最多的是字母n,所以柱状图的高度为9个字符。
字母j没有出现,所以其上都为空格字符。
【评分标准】该题要求输出柱状图表示的字母出现次数,共有5个测试点。
上传C语言文件名为bar.c。
【输入形式】从标准输入读取顶点坐标。
格式为:第一行是点的个数N(3≤N≤15),后面紧接着N 行,每行两个数字(由空格隔开),分别表示该点的X、Y坐标(0≤X,Y≤32767)。
所有点的坐标互不相同,且按顺时针次序给出。
输入数据确保该多边形是一个凸多边形。
【输出形式】向标准输出打印一个浮点数,是该多边形的面积。
该浮点数保留两位小数。
【输入样例】 43 330101 2【输出样例】5.00【样例说明】输入数据表示了如图所示的四边形。
其面积为5.00。
提示:求三角形面积可用海伦公式,求平方根可用<math.h>头文件中定义的sqrt函数。
【评分标准】结果完全正确得20分,每个测试点4分。
提交程序名为:points.c。
C语言程序设计第四版第八章答案

第八章指针8.1输入三个整数,按由小到大的顺序输出。
main(){ int a,b,c,*p1,*p2,*p3,t;scanf("%d,%d,%d",&a,&b,&c);p1=&a;p2=&b;p3=&c;if(*p1>*p2){t=p1;p1=p2;p2=t;}if(*p1>*p3){t=p1;p1=p3;p3=t;}if(*p2>*p3){t=p2;p2=p3;p3=t;}printf("%d,%d,%d\n",*p1,*p2,*p3);}或main(){int a,b,c,*p1,*p2,*p3,t;scanf("%d,%d,%d",&a,&b,&c);p1=&a;p2=&b;p3=&c;if(a>b){t=*p1;*p1=*p2;*p2=t;}if(a>c){t=*p1;*p1=*p3;*p3=t;}if(b>c){t=*p2;*p2=*p3;*p3=t;}printf("%d,%d,%d\n",a,b,c);}8.2输入三个字符串,按由小到大的顺序输出#define N 3#define M 20main(){char str0[N][M],str1[M],*p,*q;int i,l,m,n;q=str0;for(;p<q+N;p++)gets(p);l=strcmp(q,q+1);if(l>0){strcpy(str1,q);strcpy(q,q+1);strcpy(q+1,str1);} m=strcmp(q,q+2);if(m>0){strcpy(str1,q);strcpy(q,q+2);strcpy(q+2,str1);} n=strcmp(q+1,q+2);if(n>0){strcpy(str1,q);strcpy(q+1,q+2);strcpy(q+2,q+1);}for(p=q;p<q+N;p++)puts(p);}8.3输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八次课作业请预习:函数请课后首先完成p743.c(逆序)、p750.c(删除“*”)、p220.c(统计字母数字空格等)、p221.c(回文判断)、p827.c (最长字符串)、p828.c(最大字符串)习题8-1题码:章节:数组考查点:字符数组的处理,循环和判断难度:2编写一程序P220.C实现以下功能从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。
编程可用素材:printf("Please input string:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。
程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwafl faf32535是从键盘输入的内容。
图1 程序运行效果示例习题8-2题码:章节:数组考查点:字符数组的处理,循环和判断难度:2编写一程序p219.C实现以下功能从键盘读入一行字符(约定:字符数≤127字节),将其中的数字字符以及这些数字字符的数量在屏幕上显示,注意:要求先显示这些数字字符的数量。
编程可用素材:printf("Please input string:")...、printf("\nshuzigeshuwei:...、printf("\nshuziwei:...。
程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwafl faf32535as3bf0是从键盘输入的内容。
图1 程序运行效果示例习题8-3题码:章节:数组考查点:字符数组的处理,循环和判断难度:1编写一程序p221.C实现以下功能从键盘读入一个字符串(约定:字符数≤127字节),检查该字符串是否是回文。
所谓回文即正向与反向的拼写都一样,例如:adgda。
编程可用素材:printf("Please input string:")...、printf("\n... shihui wen."...、 printf("\n... bushihui wen."...。
程序的运行效果应类似地如图1和图2所示,图1中的asdfghjhgfdsa和图2中的asdfghjhgfdsaa是从键盘输入的内容。
图1 程序运行效果示例(回文) 图2 程序运行效果示例(非回文)习题8-4题码:章节:数组考查点:字符数组的处理,循环和判断难度:2编写一程序P222.C实现以下功能从键盘上读入一行字符(约定:字符数≤127字节),按以下方法将其加密变换:A->Za->zB->Yb->yC->Xc->x…………Z->Az->a即字母A变成Z、字母B变成Y...,非字母字符不变。
最后在屏幕上先显示这一行字符的长度,再显示生成的密文。
编程可用素材:printf("Please input string:")...、printf("\nzi fu chuan chang du:...、printf("\nmi wen:...。
程序的运行效果应类似地如图1所示,图1中的sfasfk,lmw4tywerysfcvasgewr xfasftg是从键盘输入的内容。
图1 程序运行效果示例习题8-5题码:章节:数组考查点:字符数组的处理,循环和判断难度:2编写一程序p311.C实现以下功能①从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。
注意,这两个字符串最长均可达到127个字符、最短均可为0个字符。
②将字符串s2插入字符串s1中,插入方法为:s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为L1)长,则s2的第L1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的s1后。
提示,合并时可使用中间数组。
例如:s1输入为"123456789",S2输入为"abcdefghijk",则输出的s1为:1a2b3c4d5e6f7g8h9ijk③在屏幕上输出新生成的s1。
编程可用素材:printf("Pleaseinputstring1:")...、printf("Pleaseinputstring2:")...、printf("\nstring1:...\n"...。
程序的运行效果应类似地如图1所示,其中的123456789和abcdefghijk是从键盘输入的内容。
图1 程序运行效果示例习题8-6题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用,难度:3 编写一程序p719.C实现以下功能从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。
编程可用素材:printf(“Input 5 strings:\n”)...、printf(“---------------------------\n”)...。
程序的运行效果应类似地如图1所示,图1中的hellomyfriendAre you ready?help!是从键盘输入的内容。
图1 程序运行效果示例习题8-7题码:章节:程序的控制结构考查点:基本输入/输出、if语句的使用、switch语句的使用难度:2编写一程序p705.C实现以下功能从键盘输入星期几的第一个字母(接收字符请用getchar()),由程序判断是星期几,并显示其对应的英文单词,如果第一个字母一样,则继续判断第二个字母。
星期的第一个字母都为大写。
如果输入的字符不能构成星期的英文单词,则输出“data error”。
程序可重复判断,直至输入字母‘Y’。
注:星期一至星期日对应的单词为Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday。
编程可用素材:printf("Please input the letter of someday: ")...、 printf("Monday\n")...、printf("Wednesday\n")...、printf("Friday\n")...、 printf("Tuesday\n")...、printf("Thrusday\n")...、printf("Saturday\n")...、printf("Sunday\n")...、printf("data error\n")...。
程序的运行效果应类似地如图1所示,图1中的WSajTxMTTuY是从键盘输入的内容。
图1 程序运行效果示例提示:方法一、该题可以用字符数组存放字符串,但只能使用getchar()函数一个一个字符循环输入存入内存方法二、1、该题可以不使用字符数组存放字符串,而是让程序每次从键盘得到一个字符进行判断,若判断条件需要读入第二个字符则读入第二个字符,否则是不会读入第二个字符的,也就是程序最多读入两个字符。
2、对Monday, Wednesday, Friday的判断只需一个字符即可,而对Tuesday,Thursday,Saturday,Sunday的判断需要两个字符,例如:若当前读到的字符为T,则应再读入一个字符,并判断是否是u,如果是,则输出Tuesday,若判断结果是h,则输出Thursday,若不是则应将第二个字符通过调用函数ungetc(ch, stdin); 还给键盘习题8-8(选作)题码:章节:字符串处理考查点:难度:2编写一程序p771.C实现以下功能编程在一个已知的字符串(约定:字符数≤127字节)中查找最长单词,输出最长单词的长度。
注意事项:(1)只考虑输入的字符串中仅含空格和其它可见字符,仅用空格用来分隔不同单词。
(2)字符串中可能只有1个单词。
(3)字符串中可能1个单词都没有,此时最长单词的长度为0。
(4)编程可用素材:printf("please input a string:\n")...、printf("\nmax_length of the string is: %d\n"...。
程序的运行效果应类似地如图1所示,图1中的hello welcome to chengdu-CUIT是从键盘输入的内容。
图1 程序运行效果示例提示:思路:对字符串中的单词一个个计算长度,找出其中最长单词的长度。
具体算法:1)、逐个判断字符串中的字符,若当前字符不是空格,则当前单词的长度len++,并同时判断当前单词是否结束。
2)、当前单词结束判断:当前字符不是空格,后一字符是空格或是’\0’,则当前单词结束3)、比较max(保存目前找到的最长单词长度)和len的大小,若max<len,则max=len1、定义变量:charstr[128];int i, max = 0,len = 0;数组str存放原始字符串,max存放到目前为止找到的最长单词长度,len计算当前单词长度, i控制数组str的下标2、中心段程序:for (i = 0; str[i] != '\0'; i++) //沿字符串逐个字符进行判断{if (str[i] != ' ') //若当前字符不是空格,即是当前单词的一部分,len++{len++;if (str[i+1] == ' ' || str[i+1] == '\0' )//若后一字符是空格或'\0',则当前单词结束,{if (max<len)//比较max和len的大小{max = len;}}}}。