C语言 习题九参考答案
C语言习题及答案(第九章)
![C语言习题及答案(第九章)](https://img.taocdn.com/s3/m/1ad050f8941ea76e58fa042f.png)
9-3编写程序,使用结构体类型,输出一年十二个月的英文名称及相应天数。
解:#include "stdio.h"struct date{char month[10] ;int daynumber ;}main(){int i ;struct datea[12]={{"January",31},{"February",29},{"March",31},{"Aprial",30},{ "May",31},{"June",30},{"july",31},{"August",31},{"September",30}, {"October",31},{"November",30},{"December",31}} ;for(i=0;i<12;i++);printf("%d 月:%s %d\n",i+1,a[i].month,a[i].daynumber) ;}思考:如何对结构体变量进行初始化?对结构体变量的引用为何要体现为分量(或成员)的引用?9-4 编写程序求空间任一点到原点的距离,点用结构体描述。
并请考虑求空间中任意两点的距离的程序。
解:#include "stdio.h"#include "math.h"struct point{float x ;float y ;float z ;} main(){double d1,d2,d ;struct point p1,p2 ;printf("请输入第一个点的坐标:");scanf("%f,%f,%f",&p1.x,&p1.y,&p1.z);printf("请输入第二个点的坐标:");scanf("%f,%f,%f",&p2.x,&p2.y,&p2.z);d1=sqrt(p1.x*p1.x+p1.y*p1.y+p1.z*p1.z);d2=sqrt(p2.x*p2.x+p2.y*p2.y+p2.z*p2.z);d=sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y)+(p2.z-p1.z)*( p2.z-p1.z));printf("第一个点到原点的距离:%f\n",d1);printf("第二个点到原点的距离:%f\n",d2);printf("两点间的距离:%f\n",d);}9-5 编写输入、输出10个朋友数据的通讯录程序,每个朋友数据包括姓名、地址、邮编、电话、传呼、手机等数据。
C语言 第九章 结构体数据类型期末测试习题与答案
![C语言 第九章 结构体数据类型期末测试习题与答案](https://img.taocdn.com/s3/m/162d4574af45b307e871979f.png)
程序运行后的输出结果是( )。
A.SunDan 20044
B.YangSan 20041
C.SunDan 20042
D.LiSiGuo 20042
参考答案:D
3、以下程序运行的结果是_( )。
#nclude”stdio.h
main()
{
struct date
{
int year , month , day ;
D.struct color
{ int red;
int green;
int blue;
} c l;
参考答案:B
7、有以下程序:
struct stu
{
char[10];
float score[3];
};
main( )
{
struct stu s[3]={{"20021",90,95,85},
{"20022",95,80,75},
} today ;
printf(“%d\n”,sizeof(struct date));
}
A.10
B.6
C.8
D.12
参考答案:D
4、设有如下说明
typedef struct ST
{
long a;
int b;
char c[2];
} NEW;
则下面叙述中正确的是______。
A.ST是一个结构体类型
B.NEW是一个结构体类型
A.typedef struct
{ int red;
int green;
int blue;
} COLOR;
COLOR cl;
B.struct color cl
谭浩强c语言9章课后习题答案
![谭浩强c语言9章课后习题答案](https://img.taocdn.com/s3/m/233ffa62caaedd3383c4d3bf.png)
printf(" 习题9.3 求三角形的面积\n=================================\n");
printf("请输入三角的三边,用空格隔开:\n");
float a,b,c,s,area;
scanf("%f%f%f",&a,&b,&c);
printf(" 请输入三个数(用空格隔开):\n");
int a,b,c,max;
scanf("%d%d%d",&a,&b,&c);
MAX(a,b,c,max);
printf(" 最大的数为:\n%d",max);
return 0;
}
string[i]+=1;
else if(string[i]=='z'||string[i]=='Z')
string[i]-=25;
}
}
#endif
printf("输出文本行为:\n%s",string);
printf("请输入三个数(用空格隔开):\n");
scanf("%f%f%f",&a,&b,&c);
printf("每行一个数:\n");
printf(FORMAT1,a);
printf("每行两个数:\n");
printf(FORMAT2,a,b);
printf(" 请输入三个数(用空格隔开):\n");
C语言习题级答案9
![C语言习题级答案9](https://img.taocdn.com/s3/m/2518eef04693daef5ef73db0.png)
测试题91.设有说明int (*ptr)[M];其中标识符ptr是(C)。
A、M个指向整型变量的指针B、具有M个指针元素的一维指针数组,每个元素都只能指向整型量C、一个指向具有M个整型元素的一维数组的指针D、指向M个整型变量的函数指针2.若以下变量均是整型,且num=sum=7;则计算表达式sum=num++,sum++,++num后sum的值为(A)。
A、8B、7C、10D、93.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是(C)。
A、6B、-3C、-12D、94.当调用函数时,实参是一个数组名,则向函数传送的是(B)。
A、数组每一个元素的地址B、数组的首地址C、数组每个元素中的值D、数组的长度5.以下叙述不正确的是(B)。
A、C程序的基本组成单位是函数B、在C程序中,注释说明只能位于一条语句的后面C、一个C源程序必须包含一个main函数D、一个C源程序可由一个或多个函数组成对于基本类型相同的两个指针变量之间,不能进行的运算是(A)。
A、+B、<C、=D、-fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是(D)。
A、答案B和C都正确B、只写C、追加D、读或读写以下叙述正确的是(B)。
A、do-while语句构成的循环不能用其它语句构成的循环来代替.B、用do-while语句构成的循环,在while后的表达式为零时结束循环C、用do-while语句构成的循环,在while后的表达式为非零时结束循环.D、do-while语句构成的循环只能用break语句退出.C语言程序中必须有的函数是(C)A、#include "stdio.h"B、#include <string.h>C、mainD、printf以下不正确的说法是:C语言规定(B)。
A、实参可以为任何类型B、形参可以是常量,变量或表达式C、实参可以是常量,变量或表达式D、形参应与其对应的实参类型匹配一致11.已知int k=67; 则表达式k/10的值为; CA、6.70B、6.7C、6D、7static struct {int a1;float a2;char a3;}a[10]={1,3.5,'A'}; 说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存储方式,其中被初始化的下标变量是(B)。
c语言程序设计教程(第2版)课后题及模拟题参考答案
![c语言程序设计教程(第2版)课后题及模拟题参考答案](https://img.taocdn.com/s3/m/28253ffcfab069dc50220154.png)
c语言程序设计教程(第2版)课后题及模拟题参考答案习题11-1 填空题1.函数2.主函数main(),主函数main()3.主函数main()4.函数首部,函数体5.{, }6./*, */7.顺序结构,选择结构,循环结构8..c, .obj, .exe1-2 思考题1.结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。
其基本结构包括顺序结构、选择结构和循环结构三种。
2.算法是对具体问题求解步骤的一种描述。
计算机算法的表达工具通常采用以下几种方法:(1)用自然语言表示算(2)用流程图表示算法(3)用伪代码表示算法(4)用程序设计语言表示算法3.语言简洁、紧凑,使用方便、灵活; 支持结构化程序设计;运算符丰富;数据类型丰富;较强的编译预处理功能;C语言的可移植性好;C语言本身既有一般高级语言的优点,又有低级(汇编)语言的特点;语法限制不太严格,程序设计自由度大。
1-3 编程题1. 试参照本章例题编写计算梯形面积的C语言程序,梯形的上底、下底和高分别用a,b,h表示,并用a=10,b=20,h=5测试所编写的程序。
#include "stdio.h"main(){ float a, b, h, s;a=10; b=20;h=5; s=(a+b)*h/2;printf("s=%f\n" , s );}2. 编写程序显示如图1.11所示信息。
图1.11 显示信息#include "stdio.h"main(){ printf("******************************\n");printf("* hello world *\n");printf("******************************\n"); }习题22-1 单选题1~5 DBDCA 6~10 DCABA 11~12 CA 2-2 思考题1.2.0000002.1,0.53.9,24.65.100,d6.(1)20 (2)0 (3)607. (1)10,6,4 (2)6,9,15 (3)3,60,838. 55习题33-1 选择题1-5BDABC 6-10ADCAC 11-12BB3-2 填空题1. 32.02613.0x104. 2, 1 互换a,b的值5. 6.66.–0038.77. 5.0,4,c=3<Enter>8.i=10,j=20<Enter>9.(1) 65(2) 65,A(3) 56.123400,123.456001(4) 3.141600(5) 8765.432(6) 5.864000e+002(7) 3.141600e+000(8) 3.1416(9) 8765(10) 3.1416,8765.4310.a=2 b=5x=8.8 y=76.34c1=65 c2=973-3 编程题1. 编写程序实现从键盘输入两个十进制整型数据10和8给变量x和y,并按下列格式 输出。
c语言程序设计课后习题答案 第9章
![c语言程序设计课后习题答案 第9章](https://img.taocdn.com/s3/m/b8e8193a67ec102de2bd89c6.png)
#include<stdio.h>struct student{int xuehao;char name[20];float yuwen,shuxue,yingyu,ave;};float aver(float yuwen,float shuxue,float yingyu){float y;y=(yuwen+shuxue+yingyu)/3.0;return y;}main(){struct student a;printf("Enter xuehao:\n");scanf("%d",&a.xuehao);printf("Enter name:\n");scanf("%s",&);printf("Enter yuwen:\n");scanf("%f",&a.yuwen);printf("Enter shuxue:\n");scanf("%f",&a.shuxue);printf("Enter yingyu:\n");scanf("%f",&a.yingyu);a.ave=aver(a.yuwen,a.shuxue,a.yingyu);printf("xuehao:%d name:%s yuwen:%f shuxue:%f yingyu:%f ave:%f\n",a.xuehao,,a.yuwen,a.shuxue,a.yingyu,a.ave);}/*练习9-6*/#include<stdio.h>struct student{int xuehao;char name[20];float yuwen,shuxue,yingyu,ave;};float aver(float yuwen,float shuxue,float yingyu){y=(yuwen+shuxue+yingyu)/3.0;return y;}main(){int i;struct student a;for(i=1;i<=100;i++){printf("请输入第%d个学生的信息:\n",i);printf("请输入学号:\n");scanf("%d",&a.xuehao);printf("请输入姓名:\n");scanf("%s",&);printf("请输入语文成绩:\n");scanf("%f",&a.yuwen);printf("请输入数学成绩:\n");scanf("%f",&a.shuxue);printf("请输入英语成绩:\n");scanf("%f",&a.yingyu);a.ave=aver(a.yuwen,a.shuxue,a.yingyu);printf("学号:%d 姓名:%s 语文:%f 数学:%f 英语:%f 平均分:%f\n",a.xuehao,,a.yuwen,a.shuxue,a.yingyu,a.ave);}}。
C语言习题(详细解答)
![C语言习题(详细解答)](https://img.taocdn.com/s3/m/ac9b0b2cbcd126fff7050b27.png)
程序设计基础(C语言版)习题第01章绪论一.选择题1.以下叙述中正确的是________。
A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整【解析】程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。
所以选项A)、B)、C)说法都不完整。
2.以下关于简单程序设计的步骤和顺序的说法中正确的是。
A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构【解析】设计一个能解决实际问题的计算机程序需要经过以下几个过程:①建立模型。
②算法设计:给出解决问题的步骤,即算法。
③算法表达:选择一种表达算法的工具,对算法进行清晰的表达。
④编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写程序。
⑤程序调试:对编写好的程序进行调试,修改程序中的错误。
⑥程序文档编写与程序维护。
综上所述,B)选项是符合上述描述的,其他选项不恰当。
3,叙述中正确的是________。
A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束D)C语句必须在一行内写完【解析】函数是C程序的基本组成单位;C语言书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。
故本题答案为C)。
4.以下叙述中正确的是。
A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中【解析】在C语言中,注释可以加在程序中的任何位置,选项A)错误。
C程序可以分模块写在不同的文件中,编译时再将其组合在一起,选项D)错误。
C语言习题九数组的定义和使用
![C语言习题九数组的定义和使用](https://img.taocdn.com/s3/m/1897ec662f60ddccdb38a009.png)
习题九数组的定义和使用1. 有以下程序void f (int b[]){ int i;for(i=2;i<6;i++) b[i]* =2;}main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},i;f(a);for(i=0;i<10;i++) printf("%d,",a[i]);}程序运行后的输出结果是______。
A、1,2,3,4,5,6,7,8,9,10,B、1,2,6,8,10,12,7,8,9,10,C、1,2,3,4,10,12,14,16,9,10,D、1,2,6,8,10,12,14,16,9,10,解析:本题在调用函数时,实参是&a[0]的地址,即把a[0]的地址传给形参,由条件i=2且i<6得出函数将对a[2]开始的4个元素(3,4,5,6)进行乘以2操作,结果分别为:a[2]=6,a[3]=8,a[4]=10,a[5]=12。
a[0]、a[1]、a[6]、a[7]、a[8]、a[9]的值并没有发生变化,所以最后的输出结果为:1,2,6,8,10,12,7,8,9,10,。
故本题答案选B。
2. 有以下程序main(){ int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;for(i=0;i<4;i++)for(j=0;j<3;j++)for(k=j+1;k<4;k++)if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;} /*按列排序*/for(i=0;i<4;i++) printf("%d,",a[i][i]);}程序运行后的输出结果是______。
A、1,6,5,7,B、8,7,3,1,C、4,7,5,2,D、1,6,2,1,解析:本题首先定义了一个4行4列的二维数组a,并用了三层循环来进行按列由小到大排序操作。
C语言理论教材各章后习题参考答案第九章习题
![C语言理论教材各章后习题参考答案第九章习题](https://img.taocdn.com/s3/m/1bc96e26dd36a32d7375817b.png)
第九章习题参考答案一、选择题9.1 答案:B9.2 答案:C9.3 答案:D9.4 答案:B9.5 答案:D9.6 答案:C9.7 答案:C9.8 答案:D9.9 答案:B9.10 答案:D二、读程序回答问题9.11 答案:C9.12 答案:A9.13 答案:A9.14 答案:D9.15 答案:C三、程序填空9.16答案:①FILE *fp;② "Ef9-16.txt","w"或"Ef9-16.txt","w+";③ch,fp。
9.17答案:①Ef9-17.dat;② 8*sizeof(char)。
9.18 答案:①fopen; ② SEEK_END或2。
9.19 答案:①fname; ②fp。
9.20 答案:①argc!=2; ②r; ③NULL; ④row++ ; ⑤fclose(fp)。
四、编写程序9.21 从键盘输入一行字符串,将其中的小字母全部转换成大写字母,然后输出到一个磁盘文件" Ef9-21.txt"中保存。
参考源程序如下:#include <stdio.h>void main( ){FILE *fp;char str[100];int i;if ((fp=fopen("Ef9-21.txt ", "w")) == NULL) {printf ("Cannot open the file.\n");exit(0);}printf ("Input a string:");gets (str); /* 读入一行字符串 */for (i=0; str[i]&&i<100; i++) { /* 处理该行中的每一个字符 */if (str[i] >= 'a' && str[i] <= 'z') /* 若是小写字母 */str[i] -= 'a' - 'A'; /* 将小写字母转换为大写字母 */fputc (str[i], fp); /* 将转换后的字符写入文件 */}fclose (fp); /* 结束文件输入操作关闭文件 */}9.22文件Ef9-22.txt中存放了一个学生各门课程的考试分数,数据之间以逗号分割。
c语言习题第九章答案
![c语言习题第九章答案](https://img.taocdn.com/s3/m/46048d3300f69e3143323968011ca300a6c3f617.png)
c语言习题第九章答案C语言习题第九章答案第九章是C语言学习中的一个重要章节,主要涉及指针和动态内存分配的知识。
在这一章中,我们将学习如何使用指针来操作内存,并且了解动态内存分配的概念和用法。
本文将为大家提供第九章习题的答案,帮助大家更好地理解和掌握这些知识。
1. 以下代码的输出结果是什么?```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int *ptr = arr;printf("%d\n", *ptr++);printf("%d\n", *ptr++);printf("%d\n", *ptr++);return 0;}```答案:输出结果为1、2、3。
解析:在这段代码中,我们定义了一个整型数组arr,并且定义了一个指针ptr,将arr的首地址赋值给ptr。
在输出语句中,我们使用了后置自增运算符,这意味着先输出ptr指向的值,然后再将指针ptr的值加1。
因此,第一个输出语句输出的是arr[0]的值1,第二个输出语句输出的是arr[1]的值2,第三个输出语句输出的是arr[2]的值3。
2. 以下代码的输出结果是什么?```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int *ptr = arr;printf("%d\n", *(ptr++));printf("%d\n", *(ptr++));printf("%d\n", *(ptr++));return 0;}```答案:输出结果为1、2、3。
解析:这段代码与上一题的代码非常相似,唯一的区别在于输出语句中对指针的解引用操作使用了括号。
这是因为后置自增运算符的优先级比解引用运算符高,为了保证先解引用再自增,我们需要使用括号来明确优先级。
C语言课程 课后练习 参考答案
![C语言课程 课后练习 参考答案](https://img.taocdn.com/s3/m/d693f0b7c850ad02df804135.png)
实验6-1课后练习:1.选择题(1)B (2)C(3)A(4)D(5)C (6)C (7)D 2.阅读程序,写出运行结果3020103.阅读程序,写出运行结果20104. 阅读程序,写出运行结果1 2 35.阅读程序,写出运行结果7 8 96.阅读程序,写出运行结果97.阅读程序,写出运行结果#include <stdio.h>int digit(int n,int k);int main(){ int n,k;printf("Enter n,k: ");scanf("%d %d",&n,&k);printf("\nThe result is:%d\n",digit(n,k));return 0;}int digit(int n,int k){ int d;while(k>0){ d=n%10;n=n/10;k--;}return d;}8.程序填空#include <stdio.h>double max(double a,double b);int main(){ double x,y;prinf("please input two double numbers:"); scanf("%lf %lf"),&x,&y;printf("%.2f\n",max(x,y));return 0;}double max(double a,double b){return (a>b?a:b);}9.原版#include <stdio.h>int check(int n,int d);int main(){ int n,d;printf("Enter n,d: ");scanf("%d %d",&n,&d);if(check(n,d)==1)printf("The digit %d is in data %d",d,n); elseprintf("The digit %d is not in data %d",d,n); return 0;}int check(int n,int d){ int temp;while(n>0){ temp=n%10;if(temp==d)return 1;n=n/10;}return 0;}改进版#include <stdio.h>int check(int n,int d);int main(){ int n,d,position;printf("Enter n,d: ");scanf("%d %d",&n,&d);position=check(n,d);if(check(n,d)>0)printf("The digit %d is in data %d,position is %d",d,n,position);elseprintf("The digit %d is not in data %d",d,n);return 0;}int check(int n,int d){ int temp,position=1;while(n>0){ temp=n%10;if(temp==d)return position;position++;n=n/10;}return 0;}实验6-2课后练习1.选择题(1)B (2)C(3)B(4)B(5)C (6)B (7)D (8)D (9)C(10)B(11)A2.填空(1) 函数中声明有局部变量,若声明中带有static,则该局部变量采用静态存储方式,在编译时分配空间,若函数中未显式设定初始值,则系统将其自动初始化,函数被调用结束时,该空间不释放。
《C语言程序设计教程》习题参考答案
![《C语言程序设计教程》习题参考答案](https://img.taocdn.com/s3/m/92b7bc501611cc7931b765ce050876323112749b.png)
《C语言程序设计教程》习题参考答案《C语言程序设计教程》习题参考答案祝胜林主编华南理工大学出版社【习题1】 (1)【习题2】 (2)【习题3】 (3)【习题4】 (5)【习题5】 (8)【习题6】 (11)【习题7】 (14)【习题8】 (17)【习题9】 (17)【习题10】 (20)一、简答题(在课本中寻找答案,略)1.1C程序的基本结构包括哪些内容?1.2如何定义标识符?1.3输入格式、输出格式的组成包括哪些内容?1.4C语言函数分为哪两类?1.5计算表达式的值应该考虑哪些方面?1.6上机调试程序的步骤如何?二、判断并改错1.7C程序执行的入口是main()函数,所以main函数必须放在程序的开头。
错误:main函数可以放在程序的任何位置。
并不限定在程序的开头。
1.8定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。
错误:不可以交叉出现,数据说明部分在执行语句部分的前面。
1.9编辑与编译不是一回事。
错误:不是一回事。
编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。
1.10scanf("%d,%d",&x,&y);的正确输入格式:3,4<回车>。
正确1.11注释内容太多会影响程序的执行效率。
错误:不会影响程序的执行效率。
因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中。
1.12所有的数学公式可以直接出现在源程序中。
错误:数学公式需要转换成C语言能够接受的公式才能出现在源程序中。
三、编程题1.13在屏幕上输出自己名字的拼音。
提示:中文名字叫?张三?,对应的拼音为?Zhang San?,输出用printf()函数。
1.14 输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。
提示:定义圆的半径r,圆的周长:2*3.14*r,输出结果保留2位小数可以用%.2f1.15输入两个整数,输出其中最大者。
C语言课后习题答案
![C语言课后习题答案](https://img.taocdn.com/s3/m/a200fb2c0066f5335a8121de.png)
1.1选择题:⑴一个C程序的执行是(A)。
A)从main()函数开始,直到main()函数结束B)从第一个函数开始,直到最后一个函数结束C)从第一个语句开始,直到最后一个语句结束D)从main()函数开始,直到最后一个函数结束⑵计算机能直接执行的语言是(B)。
A)汇编语言B)机器语言C)高级语言D)A和B⑶一个C程序是由(C)。
A)一个主程序和若干子程序组成B)若干过程组成C)一个或多个函数组成D)若干子程序组成⑷下列说法正确的是(B )。
A)C程序书写格式限制严格,一行内必须写一个语句B)C程序书写比较自由,一个语句可以分行写在多行上C)C程序书写格式限制严格,要求一行内必须写一个语句,并要求行号D)C程序中一个语句不可以分写在多行上1.2填空题:⑴构成C语言程序的基本单位是函数。
⑵C语言源程序文件的后缀是.c,经过编译后,生成文件的后缀是,obj,经过连接后,生成文件的后缀是.exe。
⑶在TURBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是.exe。
⑷一个C语言程序必须有而且只能有一个主函数,它的函数名为main。
⑸一个函数有两部分组成,第一部分称为函数首部;第二部分称为函数体。
⑹函数体由符号{开始,用符号}结束。
函数体的前面是声明部分,其后是执行部分。
1.3上机编辑、调试、运行下列程序,发现错误,并改正之。
/*求1 + 2 + 3 + ……+ 10的和*/#include <stdio.h>main(){int sum,n;sum = 0;n = 1;while(n < 10){sum = sum + n;n = n + 1;}printf("sum = %d \n",sum);}2.1选择题⑴ 在以下标识符中,( B )是合法的用户标识符。
A ) a#bB ) getchC ) voidD ) ab*⑵ 不合法的八进制数是( B )。
(word完整版)C语言程序设计课后习题1-8参考答案
![(word完整版)C语言程序设计课后习题1-8参考答案](https://img.taocdn.com/s3/m/2d5c3d71e3bd960590c69ec3d5bbfd0a7856d55d.png)
C语言程序设计课后习题1—8参考答案习题1参考答案一、简答题1、冯诺依曼计算机模型有哪几个基本组成部分?各部分的主要功能是什么?答:冯诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五大功能部件组成的。
运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。
数据运算包括算术运算和逻辑运算。
控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调工作的.存储器是计算机中具有记忆能力的部件,用来存放程序和数据.输入设备是用来输入程序和数据的部件。
输出设备正好与输入设备相反,是用来输出结果的部件。
2、简述计算机的工作原理。
答:计算机的工作原理可简单地概括为:各种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。
整个过程由控制器进行控制。
3、计算机软件系统分为哪几类?答:软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:系统软件和应用软件。
系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。
这类软件一般与具体应用无关,是在系统一级上提供的服务。
系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。
另一类是面向用户的软件,如各种语言处理程序(像BC、VC等)、实用程序、字处理程序等。
在操作系统的基础上运行。
4、什么叫软件?说明软件与硬件之间的相互关系。
答:软件是指计算机程序及有关程序的技术文档资料。
两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。
在不太严格的情况下,认为程序就是软件。
硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下才能有效地工作.在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身,可以采用更加方便、更加有效地手段使用计算机。
c语言习题第九章答案
![c语言习题第九章答案](https://img.taocdn.com/s3/m/e8055636a517866fb84ae45c3b3567ec102ddc3a.png)
c语言习题第九章答案C语言习题第九章答案在学习C语言的过程中,习题是巩固知识的重要方式之一。
第九章的习题涉及了指针、结构体、文件操作等内容,是对前几章知识的综合运用和拓展。
下面我们将针对第九章的习题进行解答和讨论。
1. 请编写一个程序,输入10个学生的学号、姓名和成绩,然后按成绩从高到低输出学生的信息。
```c#include <stdio.h>#include <string.h>typedef struct {char id[10];char name[20];float score;} Student;void sort(Student *stu, int n) {int i, j;Student temp;for (i = 0; i < n - 1; i++) {for (j = 0; j < n - 1 - i; j++) {if (stu[j].score < stu[j+1].score) {temp = stu[j];stu[j] = stu[j+1];stu[j+1] = temp;}}}}int main() {Student stu[10];int i;for (i = 0; i < 10; i++) {printf("请输入第%d个学生的学号、姓名和成绩:", i+1); scanf("%s %s %f", stu[i].id, stu[i].name, &stu[i].score);}sort(stu, 10);printf("按成绩从高到低输出学生的信息:\n");for (i = 0; i < 10; i++) {printf("%s %s %.1f\n", stu[i].id, stu[i].name, stu[i].score);}return 0;}```2. 请编写一个程序,将一个文件的内容复制到另一个文件。
《浙工大C语言课本习题答案》
![《浙工大C语言课本习题答案》](https://img.taocdn.com/s3/m/9c44f1d1d4bbfd0a79563c1ec5da50e2524dd1c5.png)
《浙⼯⼤C语⾔课本习题答案》C程序设计习题参考答案习题⼀ (2)习题⼆ (3)习题三 (5)习题四 (8)习题五 (14)习题六 (17)习题七 (20)习题⼋ (26)习题九 (33)习题⼗ (35)习题⼗⼀ (36)习题⼀1. 填空题⑴计算机程序设计语⾔按其发展可分为三类,即机器语⾔、汇编语⾔和⾼级语⾔。
⑵ C程序是由函数构成的,⼀个C程序中⾄少包含 1个main函数。
因此,函数是C程序的基本单位。
⑶ C程序注释是由 /* 和 */ 所界定的⽂字信息组成的。
⑷函数体⼀般包括函数⾸⾏和函数体。
⑸在任何C程序中都必须且只能有⼀个主函数, 主函数名必须为 main 。
2. 判断下列各个叙述的正确与否⑴ C程序的执⾏总是从该程序的main函数开始,在main函数最后结束【√】⑵ C程序的注释部分可以出现在程序中任何位置,它对程序的编译和运⾏不起任何作⽤,但可以增加程序的可读性【√】⑶由“/*”与“*/”界定的注释必须在同⼀⾏【╳】⑷通过了编译、连接的程序就是正确的程序【╳】⑸有计算结果输出的程序⼀定是正确的程序【╳】⑹编译错误是语法错误,运⾏结果错误是逻辑错误【√】⑺编译时在信息窗⼝出现包含“error”的信息,说明程序存在警告性错误【╳】⑻源程序每次修改后,都必须重新编译、连接【√】3. 简答题⑴算法的含义、特点是什么?解答:算法是解题⽅法的精确描述。
有穷性、确定性、有多或零个输⼊、有1或多个输出、有效性。
⑵写出⼀个C程序的基本结构。
由编译预处理命令、注释、1个main和若⼲个⾃定义函数构成,函数格式如下:函数类型函数名(类型标识符形参,类型标识符形参,...){ 类型声明语句; 执⾏语句部分; }⑶写出在你使⽤的计算机系统上,进⼊C环境以及运⾏、调试程序的简要步骤。
⑷输⼊x后计算其正弦值的源程序如下。
编译信息是否表⽰有致命性错误?应如何修改?解答:致命性错误为第6⾏函数sin未声明,应加⼊编译预处理命令 #include4. 编程题⑴请上机调试、运⾏本章课本上C语⾔程序例题4~6(注释部分可以不必输)⑵仿照例6编程,输⼊两个变量后,输出其中较⼤的值。
算法与数据结构C语言习题参考答案6-9章
![算法与数据结构C语言习题参考答案6-9章](https://img.taocdn.com/s3/m/39bc6ba033d4b14e852468a2.png)
1. 现在有一个已排序的字典,请改写二分法检索算法,使之当排序码key在字典中重复出现时算法能找出第一个key出现的元素下标(用*position来保存)。
保持算法时间代价为O(log n)。
【答】思路一般的二分法检索算法只要找出关键码key在字典中的一个下标。
在比较的过程中,一旦发现相等,记录下当前下标mid就符合要求。
程序如下:数据结构字典采用6.1.4节中的顺序表示法。
typedef int KeyType;typedef int DataType;二分法检索算法int binarySearch(SeqDictionary * pdic, KeyType key, int * position) {int low, mid, high;low = 0;high = pdic->n - 1;while (low <= high){mid = (low + high) / 2;if (pdic->element[mid].key = = key) {*position = mid;return TRUE;}elseif (pdic->element[mid].key > key)high = mid - 1;elselow = mid + 1;}*position = low;return FALSE;}改写后的算法想要找出关键码key在字典中第一次出现的下标。
在比较中,如果遇到相等(key与pdic->element[mid].key相等),则需要分情形讨论。
(1)如果当前下标mid等于0,或者key与pdic->element[mid-1].key不等,那么mid 一定是key第一次出现的下标,返回mid即可。
(2)如果情形(1)不成立,那么mid一定大于等于key第一次出现的下标,需要在low 和mid-1之间继续进行搜索,找出key第一次出现的下标。
c语言第九章题库及详解答案
![c语言第九章题库及详解答案](https://img.taocdn.com/s3/m/51e49c9c88eb172ded630b1c59eef8c75ebf957b.png)
c语言第九章题库及详解答案C语言第九章题库及详解答案一、选择题1. 下列哪个选项是C语言中的关键字?- A. `int`- B. `float`- C. `double`- D. `string`答案:A2. 在C语言中,哪个运算符用于计算两个数的乘积?- A. `+`- B. `-`- C. `*`- D. `/`答案:C3. 以下哪个语句是正确的C语言数组声明?- A. `int array[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};` - B. `int [10] array = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};` - C. `int array[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};`- D. 以上都是答案:D二、填空题1. 在C语言中,用于定义函数的关键字是______。
答案:void 或其他返回类型(根据函数定义)2. 以下代码段中,`printf`函数的返回类型是______。
```cint main() {printf("Hello, World!\n");return 0;}```答案:void三、简答题1. 请简述C语言中指针和引用的区别。
答案:在C语言中,指针是一个变量,它存储了另一个变量的内存地址。
指针可以被重新赋值为其他地址,并且可以通过指针来修改它所指向的变量的值。
而引用在C语言中并不存在,这是C++中的一个概念,它是一个别名,引用必须在定义时被初始化,并且不能被重新赋值为另一个变量的别名。
2. 解释C语言中的递归函数是如何工作的。
答案:递归函数是在其定义中调用自身的函数。
它通常用于解决可以被分解为相似子问题的问题。
递归函数工作时,首先检查是否有基本情况(base case),如果没有达到基本情况,它会进入递归调用,每次调用都会处理问题的一个更小的部分,直到达到基本情况,然后逐层返回结果。
C语言程序设计教程第九篇习题答案
![C语言程序设计教程第九篇习题答案](https://img.taocdn.com/s3/m/2661cb8b65ce050876321350.png)
1、li 45 300.0chang 30 200.0chang2、#include<stdio.h>struct students{char sid[100];char name[100];float score[3];}student;void main(){ int i; float j;printf("\nPlease input sid: ");scanf("%s",student.sid);printf("\nPlease input name: ");scanf("%s",);printf("\nPlease input 3 score:(like1,1,1) ");/*输入逗号隔开*/scanf("%f,%f,%f",&student.score[0],&student.score[1],&student.score[2]);printf("\nsid = %s",student.sid);printf("\nname = %s",);j=(student.score[0]+student.score[1]+student.score[2])/3.0;printf("\naverage = %.2f",j);getch();}3、#include<stdio.h>#include<string.h>#define F sizeof(student)#define NULL 0typedef struct scores{ int english;int math;int c_language;int all;}TP;typedef struct students{ char sid[15];char name[15];TP score;struct students *next;}student;student *input(){ student *head,*p1,*p2;int n=0; char ch;clrscr();head=(student *)malloc(F);head->next=NULL;do{ n++;printf("\n\nPlease input %d student message: \n\n",n);printf("\t%d student sid: ",n);p1=(student *)malloc(F);p1->next=NULL;scanf("%s",p1->sid);printf("\n\t%d student name: ",n);scanf("%s",p1->name);printf("\n\t%d student scores(englesh,math,c_language): ",n);scanf("%d,%d,%d",&p1->score.english,&p1->score.math,&p1->score.c_language);p1->score.all=p1->score.english+p1->score.math+p1->score.c_language;if(n==1){ head->next=p1;p2=p1; }else{ p2->next=p1;p2=p1;}printf("\n\n\t\t\tContinue or back (press y/n): ");ch=getch();}while(ch=='y'||ch=='Y');return head;}void average1(student *head){ student *p; int j;clrscr();p=head->next;while(p){ j=p->score.all/3;printf("\n\nname: %s\taverage: %d",p->name,j);p=p->next;}printf("\n\n\nPress eny key return.");getch();}void average2(student *head){student *p;int n=0,temp1=0,temp2=0,temp3=0;p=head->next;while(p){ temp1+=p->score.english;temp2+=p->score.math;temp3+=p->score.c_language;p=p->next;n++;}printf("\n\naverage english is : %d\naverage math is : %d\naverage c_language is : %d\t",temp1/n,temp2/n,temp3/n);}student *sort(student *head){ student *head1,*p,*q,*r; int temp1=0,temp2=0,temp3=0,temp4; char s[15],n[15];head1=head;for(p=head1->next;p->next!=NULL;p=p->next){ r=p;for(q=p->next;q;q=q->next)if(q->score.all>r->score.all)r=q;if(r!=p){ strcpy(s,p->sid);strcpy(n,p->name);temp1=p->score.english;temp2=p->score.math;temp3=p->score.c_language;temp4=p->score.all;strcpy(p->sid,r->sid);strcpy(p->name,r->name);p->score.english=r->score.english;p->score.math=r->score.math;p->score.c_language=r->score.c_language;p->score.all=r->score.all;strcpy(r->sid,s);strcpy(r->name,n);r->score.english=temp1;r->score.math=temp2;r->score.c_language=temp3;r->score.all=temp4;}}return head1;}void output(student *head){ student *head2,*p;int i=1;clrscr();head2=sort(head);for(p=head2->next;p!=NULL;p=p->next)printf("\n\nname: %s\tsid: %s\tenglish: %d\tmath: %d\tc_language: %d\taverage: %d\tmingci: % d",p->name,p->sid,p->score.english,p->score.math,p->score.c_language,p->score.all/3,i++);average2(head);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
B)指向 M 个整型变量的函数指针
C) 一个指向有 M 个整型元素的一维数组的指针
D)具有 M 个指针元素的一维指针数组,每个元素都只能指向整型变量
7、已知:doubleouble 型变量的指针 B)p 是 double 型数组
C)p 是指针数组
D)p 是数组指针
int max,min;
find_max_min(int *p,int n)
{int *q;
max=min=*p;
for(q=________;________;q++) (q=p q<p+n)
if(________)max=*q;
(*q>max)
else if (________)min=*q; (*q<min)
5、说明语句"int (*p)(); "的含义是( )。
A)p 是一个指向一维数组的指针变量
B)p 是一个指针变量,指向一个整型数据
C) p 是一个指向函数的指针,该函数的返回值是一个整型
D)以上都不对
6、设有说明 int(*ptr)[M];其中的标识符 ptr 是( )。
A)M 个指向整型变量的指针
A)i=*&j; B)p=&*&i; C)j=*p++; D)i=*&q;
17、已知:char *p,*q; 选择正确的语句( )。
A)p*=3; B)p/=q; C)p+=3; D)p+=q;
18、已知:int a,*p=&a; 则为了得到变量 a 的值,下列错误的表达式为( );
A)*&p B)*p C)p[0] D)*&a
sf[i++]=*p; sf[i]='\0'; for(p=sa+n;*sb!='\0';p++,sb++) *p=*sb; for(q=sf;*q!='\0';p++,q++) *p=*q; *q='\0'; }
main() {char s1[80]="dsahfdjkahfke";
char s2[40]="sdajkhew"; int n; puts(s1);puts(s2); n=strlen(s1); printf("Input n(0----%d):\n",n); scanf("%d",&n); insert(s1,s2,n); puts(s1); } 解 2: /* P279_2B.C */ #include "string.h" insert(char sa[],char sb[],int n) {char sf[80]; int i=0,k=0; while(sa[n+i]!='\0')
10、已知:char b[5],*p=b; 则正确的赋值语句是( )。
A)b="abcd" B)*b="abcd" C)p="abcd" D)*p="abcd"
11、下列对字符串的定义中错误的是( )。
A)char str[7]="FORTRAN"
B)char str[ ]=" FORTRAN"
C)char *str="FORTRAN"
D)char str[ ]={'F','O','R','T','R','A','N','\0'}
12、已知:char s[20]="programming", *ps=s; 则不能引用字母 o 的表达式是( )。
A)ps+2 B)s[2] C)ps[2] D)ps+=2,*ps
13、已知:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示数组 a 中元素的表达式是
for(i=0;i<80;i++) {str[i]=getchar(); if(str[i]=='\n')break; } str[i]=___________; ('\0' ) sptr=str; while(*sptr) putchar(*sptr_______); ( ++ ) } 4、下面的程序实现从 10 个数中找出最大和最小值。 #include "stdio.h"
{if(*s1>*t1)return 1; if(*s1<*t1)return -1; if(*s1++==*t1++)continue; } if(*s1>*t1)return 1; if(*s1==*t1)return 0; if(*s1<*t1) return -1; } main() {int k; char s[80]="123456"; char t[40]="123456"; puts(s);puts(t); k=strcmp(s,t); if(k==1)printf("s>t:%d\n",k); if(k==0)printf("s==t:%d\n",k); if(k==-1)printf("s<t:%d\n",k); 解2: /*P279_3b.c */ #include "string.h" int sstrcmp(char *s,char *p) {while(*s!='\0'&&*p!='\0'&&*s++==*p++); if(*s>*p)return 1; else if (*s==*p)return 0; else return -1; } main() {char a[80],b[80]; int k; gets(a);gets(b); k=sstrcmp(a,b); if(k==1)printf("a>b\n"); if(k==0)printf("a==b\n"); if(k==-1)printf("a<b\n"); }
( )。
A)*p
B)a[10]
C)*a
D)a[p-a]
14、已知:char **s; 正确的语句是( )。
A)s="computer"; B)*s="computer"; C)**s="computer"; D)*s='A’;
15、已知:char c[8]="beijing",*s=c; int i; 则下面的输出语句中,错误的是( )。
char s2[40]="sdajkhew"; int n; puts(s1);puts(s2); n=strlen(s1); printf("Input n(0----%d):\n",n); scanf("%d",&n); insert(s1,s2,n); puts(s1); }
解3 #include "string.h" main() {char s1[80],s2[30];
此函数,交换 a、b 中具有相同下标的数组元素的值,且输出交换后的 a、b 数组。
/*p279_1.c*/
#include "stdlib.h"
void swap(int *pa,int *pb)
{int t;
t=*pa;*pa=*pb;*pb=t;
}
main()
{int a[100],b[100],i;
{for(j=0;j<4;j++) printf("%4d",___________); (*p+i*4+j) }
} 3、下面程序的功能是:从键盘上输入一行字符;存入一个字符数组中,然后输出该字符串。
#include "stdio.h" main() {char str[81],*sptr; int i;
for(i=0;i<100;i++)
printf("%3d",a[i]); printf("\n"); printf("after swap B:\n");/*输出交换后数组b */ for(i=0;i<100;i++)
printf("%3d",b[i]); printf("\n"); }_ 2、用数组方案和指针方案分别编写函数 insert(s1,s2,f),其功能是在字符串 s1 中的指定 位置 f 处插入字符串 s2。 解 1: /* P279_2A.c */ #include "string.h" insert(char *sa,char *sb,int n) {char sf[80],*p,*q; int i=0; for(p=sa+n;*p!='\0';p++)
A)printf(%s\n",s);
B)printf("%s\n",*s);
C)for(i=0;i<7;i++)
D)for(i=0;i<7;i++)
printf("%c",c[i]);