《C语言程序设计》复习思考题

合集下载

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析1. 习题一:编写一个C程序,输出“Hello World!”。

解析:这是一个非常简单的C程序,只需要使用printf函数输出所需的字符串即可。

```c#include <stdio.h>int main() {printf("Hello World!");return 0;}```2. 习题二:编写一个C程序,计算两个整数的和并输出结果。

解析:这个程序需要使用scanf函数从用户输入中读取两个整数,并使用printf函数输出它们的和。

```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入第一个整数:");scanf("%d", &num1);printf("请输入第二个整数:");scanf("%d", &num2);sum = num1 + num2;printf("两个整数的和为:%d", sum);return 0;}```3. 习题三:编写一个C程序,判断一个数是奇数还是偶数并输出结果。

解析:这个程序需要使用scanf函数读取用户输入的整数,并使用if-else语句判断该数的奇偶性,然后使用printf函数输出结果。

```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("该数是偶数");} else {printf("该数是奇数");}return 0;}```4. 习题四:编写一个C程序,判断一个年份是否为闰年并输出结果。

(完整版)《C语言程序设计》复习参考答案

(完整版)《C语言程序设计》复习参考答案

第一章【随堂练习1-2】1 .下面哪些标识符属于合法的用户自定义标识符:Main、void、_num、my$、a*、N4、3m、a-2答:合法的用户自定义标识符是:Main、_num、N42. 结合【例1.2】指出程序代码中所用到的标识符哪些是关键字,哪些是预定义标识符,哪些是用户自定义标识符。

答:关键字:void、int预定义标识符:in elude、main、prin tf、sca nf用户自定义标识符:a、b、c3. 分析【例1.2】中函数的结构,包括函数首部(函数返回值类型、函数名、形式参数) 、函数体语句(说明语句、可执行语句) 。

答:函数首部:void main(),其中函数返回值类型为void、函数名为main、形式参数无;函数体语句:{}内的语句为函数体,其中:说明语句为int a,b,c;,其余为可执行语句。

一. 单元练习一. 选择题1构成C语言程序的基本单位是()。

A .框架B .预处理C.函数 D .语句2 •在程序开发过程中,把文本文件格式源程序转化为二进制格式的目标程序的过程称之为()°A. 编辑B.编译C.连接D.运行3 •关于主函数,下列说法不正确的是()°A. —个完整的C语言应用程序有唯一的主函数B. 主函数的名称只能是m ai nC. 主函数可以被其他自定义函数调用D. C语言程序的运行从主函数开始,以主函数为核心展开4 .关于标识符,下列说法不正确的是()°A. 库函数名称为预定义标识符,不建议用作用户自定义标识符B. 关键字不能作为用户自定义标识符C. 用户自定义标识符中不区分大小写字母D. 标识符中可以出现下划线,且可以出现在标识符的任意位置5 .以下可用作用户自定义标识符的一组是()°A. void、return、ifB. printf、in elude、fabsC. Max、_abc、MainD. 2abc、pay$、sum-10二. 填空题1.______________________________________________________________ C语言程序一般由若干个函数构成,程序中应至少包含一个 _________________________________ ,其名称只能为°2.____________________________________ C语言程序中每条语句必须以结束。

《C语言程序设计》复习参考答案

《C语言程序设计》复习参考答案

.第一章【随堂练习1-2】1.下面哪些标识符属于合法的用户自定义标识符:Main、void、_num、my$、a*、N4、3m、a-2答:合法的用户自定义标识符是:Main、_num、N42.结合【例1.2】指出程序代码中所用到的标识符哪些是关键字,哪些是预定义标识符,哪些是用户自定义标识符。

答:关键字:void、int预定义标识符:include、main、printf、scanf用户自定义标识符:a、b、c3.分析【例1.2】中函数的结构,包括函数首部(函数返回值类型、函数名、形式参数)、函数体语句(说明语句、可执行语句)。

答:函数首部:void main( ),其中函数返回值类型为void、函数名为main、形式参数无;函数体语句:{}内的语句为函数体,其中:说明语句为int a,b,c;,其余为可执行语句。

3.标识符是用来标识程序中的某个对象名字的字符序列。

C语言把标识符分为三类,即关键字、预定义标识符、用户自定义标识符。

对于用户自定义标识符的命名C语言规定:(1)所有的用户标识符必须先定义后使用;(2)用户标识符由字母(A~Z,a~z)、数字(0~9)、下划线“_”组成,并且首字符不能是数字;(3)区分大小写;(4)不能用关键字作为用户自定义标识符,通常不使用预定义标识符作为用户自定义标识符。

4.理论上讲,程序开发过程分为四个步骤,分别为:(1)编辑源程序(2)编译源程序,生成目标程序(3)连接目标程序及其相关模块,生成可执行文件(4)运行可执行文件一.单元练习一.选择题1.构成C语言程序的基本单位是()。

A.框架B.预处理C.函数D.语句2.在程序开发过程中,把文本文件格式源程序转化为二进制格式的目标程序的过程称之为()。

A.编辑B.编译C.连接D.运行3.关于主函数,下列说法不正确的是()。

A.一个完整的C语言应用程序有唯一的主函数B.主函数的名称只能是mainC.主函数可以被其他自定义函数调用D.C语言程序的运行从主函数开始,以主函数为核心展开4.关于标识符,下列说法不正确的是()。

C语言程序设计参考答案与复习题

C语言程序设计参考答案与复习题

目录一、C 语言程序设计习题参考答案 (1)二、C语言程序设计复习题⒈单项选择题 (41)⒉填空题 (45)⒊写输出结果题 (46)⒋程序填空题 (53)⒌编程题 (61)三、C语言程序设计复习题答案⒈单项选择题 (62)⒉填空题 (63)⒊写输出结果题 (63)⒋程序填空题 (64)⒌编程题(参考) (65)四、C语言程序设计模拟试卷、参考答案⒈试卷一 (74)⒉试卷二 (77)浙江工业大学计算中心编印程序设计基础习题集 1C程序设计习题参考答案习题一1. 填空题⑴计算机程序设计语言按其发展可分为三类,即机器语言、汇编语言和高级语言。

⑵ C程序是由函数构成的,一个C程序中至少包含 1个main函数。

因此,函数是C程序的基本单位。

⑶ C程序注释是由 /* 和 */ 所界定的文字信息组成的。

⑷函数体一般包括函数首行和函数体。

⑸在任何C程序中都必须且只能有一个主函数, 主函数名必须为 main 。

2. 判断下列各个叙述的正确与否⑴ C程序的执行总是从该程序的main函数开始,在main函数最后结束【√】⑵ C程序的注释部分可以出现在程序中任何位置,它对程序的编译和运行不起任何作用,但可以增加程序的可读性【√】⑶由“/*”与“*/”界定的注释必须在同一行【╳】⑷通过了编译、连接的程序就是正确的程序【╳】⑸有计算结果输出的程序一定是正确的程序【╳】⑹编译错误是语法错误,运行结果错误是逻辑错误【√】⑺编译时在信息窗口出现包含“error”的信息,说明程序存在警告性错误【╳】⑻源程序每次修改后,都必须重新编译、连接【√】3. 简答题⑴算法的含义、特点是什么?解答:算法是解题方法的精确描述。

有穷性、确定性、有多或零个输入、有1或多个输出、有效性。

⑵写出一个C程序的基本结构。

由编译预处理命令、注释、1个main和若干个自定义函数构成,函数格式如下:函数类型函数名(类型标识符形参,类型标识符形参,...){ 类型声明语句; 执行语句部分; }⑶写出在你使用的计算机系统上,进入C环境以及运行、调试程序的简要步骤。

C语言习题及思考题.doc

C语言习题及思考题.doc

习题及思考题1.思考题(1)请描述头结点、头指针、首元结点之间的区别?(2)顺序存储与链式存储有何异同?各适用于什么场合?(3)在多项式加法运算中,如果要求在创建时自动创建一个有序链表,应如何修改程序?2.选择题(1)以下关于链式存储结构的描述中,()是不正确的。

A. 不必事先估计存储空间的大小B. 逻辑上相邻的结点物理上不必相邻C. 可以通过计算直接确定第i个结点的地址D. 插入删除方便,不必移动结点(2)某线性表中最常用的操作是存取序号为i的元素和在最后进行插入删除运算,则采用()存储方式时间性能最好。

A.双向链表B.双向循环链表C. 单向循环链表D.顺序表(3)假设带头结点的单向循环链表的头指针为head,则该链表为空的判定条件是()A.head= =NULLB.head–>next= =NULLC.head!=NULLD.head–>next= =head(4)已知一个单链表中,指针q指向指针p的前驱结点,若在指针q所指结点和指针p所指结点之间插入指针s所指结点,则需执行()A. q→next=s;p→next=s;B.q→next=s;s→next=p;C. q→next=s;q→next=p;D.q→next=s;s→next=q;(5)设顺序表有19个元素,第一个元素的地址为200,且每个元素占3个字节,则第14个元素的存储地址为()A.236B.239C.242D.245(6)在线性表的下列运算中,不改变数据元素之间结构关系的运算是()A.插入B.删除C.排序D.定位(7)在双向链表指针p的结点前插入一个指针q的结点操作是()。

A. p->prior=q;q->next=p;p->next->prior=q;q->prier=q;B. p->prior=q;p->prior->next=q;q->next=p;q->prior=p->prior;C. q->next =p;q->prior=p->prior;p->prior->next=q;p->prior=q;D. q->prior=p->prior;q->next=q;p->prior=q;p->prior->nex=q;(8)线性表采用链式存储结构时,要求内存中可用存储单元的地址( )A. 必须是连续的B. 必须是部分连续的C. 一定是不连续的D. 连续和不连续都可以(9)带头结点的单链表head为空的判定条件是()A.head == NULL B.head->next == NULLC.head->next == head D.head != NULL(10)在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为( )A.n-i+1B.n-iC.iD.i-1(11)对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( )A.顺序表B.用头指针表示的单循环链表C.用尾指针表示的单循环链表D.单链表(12)在双向链表存储结构中,删除p所指结点时须修改指针()A. p->next->prior=p->prior;p->prior->next=p->next;B. p->next=p->next->next;p->next->prior=p;C. p->prior->next=p;p->prior=p->prior->prior;D. p->prior=p->next->next;p->next=p-->prior->prior;(13)在双向循环链表中,在p指针所指的结点后插入一个指针所指向的新结点,其修改指针的操作是()A. p->next=q;q->prior=p;p->next->prior=q;q->next=q;B. p->next=q;p->next->prior=q;q->prior=p;q->next=p->next;C. q->prior=p;q->next=p->next;p->next->prior=q;p->next=q;D. q->next=p->next;q->prior=p;p->next=q;p->next=q;3.判断题(1)通常单链表的存取必须从头指针开始。

C程序设计复习题答案

C程序设计复习题答案

程序设计基础复习题答案一、填空题1、C语言所提供的实型变量分为两种类型,它们是float和double 。

2、一个C源程序中至少应包含一个主函数或main函数。

3.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-’3’4.在标准C5;c[4]的值为 100 。

6.在C语言中,引用数组元素时,引用数组元素时,其数组下标的数组类型允许是整型常量或整型表达式。

7.设y为int 型变量,请写出描述“y是偶数”的表达式 (y%2)==0 。

8.设int i=0,j=1,k=2,a=3,b=4; 执行表达式(a=i<j)&&(b=j>k)的值为 0 。

9.与表达式 a+=b 等价的另一书写形式是 a=a+b 。

10.有以下定义和语句int a[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是a[1][1] 。

11.代表一个反斜杠字符“\”的转义字符是'\\' 。

12.变量的指针就是变量的地址,存放变量地址的变量就是指针变量,它用来指向另一个变量。

13.++i和i++的不同之处在于i++是先使用i的值后,再执行i=i+1;而++i是先执行i=i+1后,再使用i的值。

14.设x、y和z是int 型变量,且x=3,y=4,z=5, 则表达式! ((x<y) && !z||1)值为0 。

15.已知函数int f(int k) { return ((k<0)?1:f(k-2)+2); }则f(3)的值是 5 。

16.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。

17.计算表达式:x=(i=4, j=10, k=24)后,x的值为24 。

18.若a和b均是int型变量,且a和b的初值均为5,则计算表达式a+=b++ 后,a的值为10 ,b的值为 6 。

《C语言程序设计》课后习题参考答案

《C语言程序设计》课后习题参考答案
参考代码如下:
#include <stdio.h>
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10};
int n,i,j,k=0;
printf("Please enter the number:");
scanf("%d",&n);
for(i=0;i<10;i++)
{ while(n==a[i])
s++;
}
}
printf("s=%d\n",s);
}
4.编程:从键盘输入正整数n,输出1+(1+2)+(1+2+3)+……+(1+2+3+…+n)。
参考代码如下:
#include <stdio.h>
main()
{
int n,i,s=0,t=0;
printf("Please enter n=");
scanf("%d",&n);
for(j=0;j<3;j++)
printf("%5d",b[i][j]);
}
printf("\n");
getch();
}
6.利用公式 计算m×n的矩阵A和m×n的矩阵B之和,已知 为矩阵A的元素, 为矩阵B的元素, 为矩阵C的元素, 。
1. A 2.A 3.C
二、填空题
1.基本数据类型、构造数据类型、指针类型、空类型
2.反斜线“\”
3.枚举数据类型(Enumerated Data Type)

《C语言程序设计》思考与练习答案

《C语言程序设计》思考与练习答案

第1章C语言概述一、选择题1.D 2.C 3.D 4.C 5.A 6.C 7.D二、填空题1..c .obj .exe2.需求分析算法设计编写程序编译程序连接程序编写程序文档3./* */三、编程题1.参考代码如下:#include <stdio.h>int main(){printf("***这是我的第一个C语言程序!***\n");return 0;}2.参考代码如下:#include <stdio.h> /*编译预处理指令*/int main() /*主函数的函数头*/{ /*函数体的开始标记*/ printf("***这是我的第一个C语言程序!***\n"); /*输出要显示的字符串*/return 0; /*程序返回值0*/ } /*函数的结束标记*/第2章算法一、选择题1.A 2.A 3.C 4.B二、简答题1.计算n!算法的流程图如图2-1所示。

图2-1 计算n!算法的流程图2.计算n!算法的N-S流程图如图2-2所示。

图2-2 计算n!算法的N-S流程图3.计算两个数a和b最大公约数算法的流程图如图2-3所示。

图2-3 求最大公约数流程图4.计算两个数a和b最大公约数算法的N-S流程图如图2-4所示。

图2-4 求最大公约数N-S流程图第3章数据类型及其运算一、选择题1.A 2.A 3.A 4.B 5.C6.D 7.D 8.C 9.C 10.B二、填空题1.整型浮点型2.03.264.95.1.5 6.76.9,11,9,10三、编程题1.参考代码如下:#include<stdio.h>int main(){int a,b,c;a=10;b=20;c=a;a=b;b=c;printf("a=%d,b=%d\n",a,b);return 0;}2.参考代码如下:#include<stdio.h>int main(){int num,a,b,c;printf("Please input the number:");scanf("%d",&num);a=num/100;b=(num-100*a)/10;c=num-100*a-10*b;a+= b*10+c*100;printf("The result is%d\n",a);return 0;}3.参考代码如下:#define PI 3.14159#include <stdio.h>int main(){float r,l,s,v;printf("请输入圆半径:");scanf("%f",&r);l=2*PI*r;s=PI*r*r;v=4*PI*r*r*r/3;printf("半径为%f的圆周长为%f,面积为%f,圆球体积为%f \n",r,l,s,v);return 0;}第4章顺序结构程序设计一、选择题1.D 2.C 3.D 4.B 5.B二、填空题1.27\n2.123.scanf("%d",&a);三、编程题1.参考代码如下:#include <stdio.h>int main(){int x;float y,s;printf("请输入商品的单价");scanf("%f",&y);printf("请输入购买商品的个数");scanf("%d",&x);s=x*y;printf("商品总价为:%f\n",s);return 0;}2.参考代码如下:#include <stdio.h>int main(){int a,b;printf("请输入a和b的值");scanf("a=%d,b=%d",&a,&b);a=a+b;b=a-b;a=a-b;printf("a=%d,b=%d\n",a,b);return 0;}3.参考代码如下:#include<stdio.h>int main(){printf(" ****\n");printf(" *\n");printf(" * \n");printf(" ****\n");return 0;}4.参考代码如下:#include<stdio.h>int main(){int a=5;float b=1.332;char c='A';printf("a=%4d b=%.3f\n",a,b);printf("a+b=%.1f\n",a+b);printf("c=\'%c\' or %d\n",c,c);return 0;}第5章选择结构程序设计一、选择题1.C 2.D 3.B 4.B 5.D二、填空题1.0 2.a的值为2;b的值为13.20,30,30 4.15.①a>b ②a=b;b=t;三、编程题1.参考代码如下:#include <stdio.h>int main(){int x,y; /*定义整型变量x、y*/printf("Please input x:"); /*输出屏幕提示*/scanf("%d",&x); /*从键盘输入x的值*/if(x<0)y=3*x+2; /*根据x的取值计算y的值*/ elsey=-x+1; /*根据x的取值计算y的值*/ printf("y=%d\n",y); /*输出y的值*/}2.参考代码如下:#include <stdio.h>int main(){int a;printf("Please enter an integer :");scanf("%d",&a);switch(a){case 1:printf("Monday\n");break;case 2:printf("Tuesday\n");break;case 3:printf("Wednesday\n");break;case 4:printf("Thursday\n");break;case 5:printf("Friday\n");break;case 6:printf("Saturday\n");break;case 7:printf("Sunday\n");break;default:printf("Error!\n");}return 0;}3.参考代码如下:#include <stdio.h>int main(){float a,b;printf("inpute the income:");scanf("%f",&a);if(a<=3500)b=0;else if(a<=5000)b=(a-3500)*0.03;else if(a<=9500)b=(5000-3500)*0.03+(a-5000)*0.1;elseb=(5000-3500)*0.03+(9500-5000)*0.1+(a-9500)*0.2;printf("the tax is:%.2f",b);return 0;}4.参考代码如下:#include <stdio.h>int main(){int c,s;float p,w,d,f;printf("Please enter price,weight,distance:"); /*提示输入数据*/scanf("%f,%f,%d",&p,&w,&s); /*输入单价、重量、距离*/if(s>=3000)c=12; /*3000km以上为同一折扣*/elsec=s/250; /*3000km以下各段折扣不同,c的值不相同*/ switch(c){case 0:d=0;break; /*c=0,代表250km以下,折扣d=0*/case 1:d=2;break; /*c=1,代表250km~500km,折扣d=2%*/case 2:case 3:d=5;break; /*c=2和3,代表500km~1000km,折扣d=5%*/ case 4:case 5:case 6:case 7:d=8;break; /*c=4~7,代表1000km~2000km,折扣d=8%*/ case 8:case 9:case 10:case 11:d=10;break; /*c=8~11,代表2000km~3000km,折扣d=10%*/ case 12:d=15;break; /*c=12,代表3000km以上,折扣d=15%*/}f=p*w*s*(1-d/100.0); /*计算总运费*/printf("freight=%10.2f\n",f); /*输出总运费,取两位小数*/return 0;}5.参考代码如下:#include <stdio.h>int main(){int a,i,j,k;printf("inpute the number(100-999):");scanf("%d",&a);if(a%3==0&&a%5==0&&a%7==0)printf("can be divided by 3,5,7 ");else if(a%3==0&&a%5==0)printf("can be divided by 3,5 ");else if(a%3==0&&a%7==0)printf("can be divided by 3,7 ");else if(a%5==0&&a%7==0)printf("can be divided by 5,7 ");else if(a%3==0)printf("can be divided by 3 ");else if(a%5==0)printf("can be divided by 5 ");else if(a%7==0)printf("can be divided by 7 ");elseprintf("not can be divided by 3 or 5 or 7 ");return 0;}第6章循环结构程序设计一、选择题1.D 2.A 3.A 4.D 5.C 6.C 7.C 8.B二、填空题1.do-while语句2.553.10 4.x>05.15三、编程题1.参考代码如下:#include <stdio.h>int main (){int i, k, max;printf("Please input k:");scanf ("%d",&max);for (i=2;i<6;i++){scanf ("%d",&k);if (max<k)max=k;}printf ("max=%d\n",max);return 0;}2.参考代码如下:#include <stdio.h>int main(){int n, i, j, k;for( n=100; n<1000; n++ ) /* 对所有的3位数循环*/{i=n/100; /* 的百位数字*/j=n/10%10; /* 的十位数字*/k=n%10; /* 的个位数字*/if(n==i*i*i+j*j*j+k*k*k){printf ("%d=%d*%d*%d+%d*%d*%d+%d*%d*%d\n",n,i,i,i,j,j,j,k,k,k);break; /* 只要求找第一个满足条件的数,所以找到后立即退出循环*/ }}return 0;}3.参考代码如下:#include <stdio.h>int main(){int n;for( n=10;n<100;n++){if (n%3!=0 || n%5!=0)continue ; /* n不满足要求,结束本次循环*/printf (" %5d", n);}return 0;}4.参考代码如下:#include <stdio.h>int main(){int i,j;for(i=1;i<=10;i++){for(j=1;j<=i;j++)printf("#");printf("\n");}return 0;}5.参考代码如下:#include <stdio.h>int main ( ){int i,j;for(i=1;i<=9;i++) /*外循环控制输出的行数*/{for(j=1;j<=i;j++) /*内循环输出表中的一行*/printf("%d*%d=%-3d",j,i,i*j);printf("\n"); /*换行控制,使下一次的式子输出在新行上*/}return 0;}6.参考代码如下:#include<stdio.h>int main(){int A,B,C,D,E;/*定义5个整型变量*/for(A=1;A<6;A++)/*将A在1~5的名次中循环*/for(B=1;B<6;B++)/*将B在1~5的名次中循环*/if(A!=B)/*判断变量与已有变量值不相等*/for(C=1;C<6;C++)/*将C在1~5的名次中循环*/if(C!=A&&C!=B)/*判断变量与已有变量值不相等*/for(D=1;D<6;D++)/*将D在1~5的名次中循环*/if(D!=A&&D!=B&&D!=C)/*判断变量与已有变量值不相等*/for(E=1;E<6;E++)/*将E在1~5的名次中循环*/if(E!=D&&E!=C&&E!=B&&E!=A)/*判断变量与已有变量值不相等*/if((C!=1)&&(D-E==2)&&(E!=2)&& (A!=1)&&(A!=5)&&(B-C==1))/*根据问题设置的条件*/printf("A=%d,B=%d,C=%d,D=%d, E=%d\n",A,B,C,D,E);/*输出*/return 0;}7.参考代码如下:#include <stdio.h>int main(){int cock,hen,chick; /*定义变量为基本整型*/for (cock=0; cock<=20; cock++) /*鸡翁范围在0到20之间*/ for (hen=0; hen<=33;hen++) /*鸡母范围在0到33之间*/for (chick=3;chick<=99;chick++) /*鸡雏范围在3到99之间*/if (5*cock+3*hen+chick/3==100) /*判断钱数是否等于100*/if (cock+hen+chick==100) /*判断购买的鸡数是否等于100*/if (chick%3==0) /*判断鸡雏数是否能被3整除*/printf("鸡翁:%d只,鸡母:%d只,鸡雏:%d只\n",cock,hen,chick);return 0; }第7章数组一、选择题1.D 2.B 3.A 4.C 5.B 6.B 7.C 8.C 9.A 10.A二、填空题1.2 0 0 2.windows20003.①s=count=0; ②i=0;i<20;i++ ③continue; ④count++;三、编程题1.参考代码如下:#include <stdio.h>#include <math.h>#define N 101int main(){int i,j,line,a[N];for(i=2;i<N;i++)a[i]=i;for(i=2;i<sqrt(N);i++)for(j=i+1;j<N;j++){if(a[i]!=0&&a[j]!=0)if(a[j]%a[i]==0)a[j]=0;}printf("\n");for(i=2,line=0;i<N;i++) {if(a[i]!=0){printf("%5d",a[i]);line++;}if(line==10){printf("\n");line=0;}}return 0;}2.参考代码如下:#include "stdio.h"int main( ){int a[20],i,max,n;for(i=0;i<20;i++)scanf("%d",&a[i]);max=a[0];n=0;for(i=1;i<20;i++)if(max<a[i]){max=a[i];n=i;}printf("max=%d,n=%d",max,n);return 0;}3.参考代码如下:#include<stdio.h>int main(){int i,n,k=16,a[16]={0};printf("Please enter a digit:");scanf("%d",&n);while(n>0) /* 将十进制数转变为二进制数*/{a[--k]=n%2;n=n/2;}for(i=0;i<16;i++)printf("%2d",a[i]);return 0;}4.参考代码如下:#include <stdio.h>int main( ){int month_tab[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 year,month,day;int yearday,leap,i;printf("\nEnter year_month_day:");scanf("%d %d %d",&year,&month,&day);leap=((year%4==0)&&(year%100!=0)||(year%400==0));yearday=day;for(i=1;i<month;i++)yearday+=month_tab[leap][i];printf("yearday=%d",yearday);return 0;}5.参考代码如下:#include <stdio.h>int main(){char str1[100],str2[100],c;int i,s;printf("Enter string 1: ");gets(str1);printf("Enter string 2: ");gets(str2);i=0;while((str1[i] == str2[i] && str1[i]!= '\0')) /*比较两字符串第一个不同的字符*/ i++;s=str1[i]-str2[i];printf("%d\n", s);return 0;}第8章函数一、选择题1.A 2.B 3.C 4.A 5.A 6.C 7.C 8.D二、填空题1.5,6 2.11,43.① int fun(int x,int y); ② max=fun(fun(a,b),c);4.① i+1 ② &a[i]三、编程题1.参考代码如下:#include <stdio.h>long rfact(int n){if(n<0){printf("Negative argument to fact!\n");exit(-1);}else if(n<=1)return(1);elsereturn(n*rfact(n-1)); /*递归调用自己*/}int main(){int n;long f;printf("Please input an integral number:");scanf("%d",&n);f=rfact(n);printf("%d!=%ld\n",n,f);return 0;}2.参考代码如下:#include <stdio.h>int main(){double turn(char x[]);char str[10];double a;gets(str);a=turn(str);printf("%f\n",a);return 0;}double turn(char x[]){int i;double m=0;for(i=0;x[i]!='\0';i++)if(x[i]>='0'&&x[i]<='9') m=m*16+x[i]-'0';else if(x[i]>='A'&&x[i]<='F') m=m*16+x[i]-'A'+10;else if(x[i]>='a'&&x[i]<='f') m=m*16+x[i]-'a'+10;return m;}3.参考代码如下:#include <stdio.h>float max=0,min=0; /*定义全局变量,max最高分,min最低分*/ int main(){float average(float array[],int n); /*函数说明*/float ave,score[10];int i;printf("Please enter 10 scores:");for(i=0;i<10;i++)scanf("%f",&score[i]);ave=average(score,10); /*函数调用*/printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",max,min,ave);return 0;}float average(float array[],int n) /*自定义函数*/{int i;float aver,sum=array[0];max=min=array[0];for(i=1;i<n;i++){if(array[i]>max)max=array[i];else if(array[i]<min)min=array[i];sum+=array[i];}aver=sum/n;return(aver);}4.参考代码如下:#include <stdio.h>int main(){int a[10],b[10],i,n=0,m=0,k=0;printf("Please enter array a:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("Please enter array b:\n");for(i=0;i<10;i++)scanf("%d",&b[i]);for(i=0;i<10;i++){if(large(a[i],b[i])==1)n=n+1;else if(large(a[i],b[i])==0)m=m+1;elsek=k+1;}printf("a[i]>b[i] %d times\na[i]=b[i] %d times\n a[i]<b[i] %d times\n",n,m,k);if(n>k)printf("array a is larger than array b\n");else if (n<k)printf("array a is smaller than array b\n");elseprintf("array a is equal array b\n");return 0;}int large (int x,int y){int flag;if(x>y)flag=1;else if(x<y)flag=-1;elseflag=0;return (flag);}5.参考代码如下:#include <stdio.h>double fun (int m){double y=1.0 ;int i ;for(i=2;i<=m;i++)y-=1.0/(i*i);return(y);}int main(){int m;printf("please input m:");scanf("%d",&m);printf("\nThe result is %lf\n", fun(m));return 0;}第9章指针一、选择题1.B 2.D 3.A 4.B 5.C 6.A 7.C 8.C 9.A 10.A二、填空题1.①int *p; ②int *p[4];③int (*p)[4]; ④int *p();⑤int (*p)(); ⑥int **p;2.4 123.8 104.1355.①num=*b; ②num=*c;三、编程题1.参考代码如下:#include <stdio.h>void swap(int *p1,int *p2){int t;t=*p1;*p1=*p2;*p2=t;}int main(){int *a,*b,*c,x,y,z;a=&x;b=&y;c=&z;printf("输入3个整数:");scanf("%d%d%d",a,b,c);printf("%d,%d,%d\n",*a,*b,*c);if(*a<*b)swap(a,b);if(*a<*c)swap(a,c);if(*b<*c)swap(b,c);printf("x=%d,y=%d,z=%d\n",x,y,z);return 0;}2.参考代码如下:#include <stdio.h>int main(){char str[50],*p,*s,c;printf("Enter string:");gets(str);p=s=str; /*指针p和s指向str */while (*p)p++; /*找到串结束标记'\0'*/p--; /*指针回退一个字符,指针p指向字符串中的最后一个字符*/ while(s<p) /*当串前面的指针s<(小于)串后面的指针p时,进行循环*/ {c =*s; /*交换两个指针所指向的字符*/*s++=*p; /*串前面的指针s向后(+1)移动*/*p--=c; /*串后面的指针p向前(-1)移动*/}puts(str);return 0;}3.参考代码如下:#include <stdio.h>int main (){char str1[80],str2[80],str[80];char *p,*q,*r,*s;printf("Enter string1:");gets(str1);printf("Enter string2:");gets(str2);for(p=str1,q=str2,r=str;*p!='\0'&&*q!='\0';) /*完成串合并*/if(*p<*q) /*比较str1和str2中的字符*/ *r++=*p++; /*若str1中的字符较小,则将它复制到str中*/ else*r++=*q++; /*若str2中的字符较小,则将它复制到str中*/ s=(*p!='\0')?p:q; /*判断哪个字符串还没有处理完毕*/ while(*s!='\0') /*继续处理(复制)尚未处理完毕的字符串*/*r++=*s++;*r='\0'; /*向str中存入串结束标记*/printf("Result:");puts(str);return 0;}4.参考代码如下:#include <stdio.h>void inverte(int *x, int n){int *p,temp,*i,*j, m=(n-1)/2; /*声明变量*/i=x; /*变量I存放数组首地址*/j=x+n-1; /*变量j存放数组末尾元素地址*/p=x+m; /*变量P存放数组中间元素地址*/for(;i<=p;i++,j--) /*交换数组前半部分和后半部分元素*/ {temp=*i;*i=*j;*j=temp;}}int main(){int i,a[10]={1,2,3,4,5,6,7,8,9,0}; /*定义数组*/printf("输入数组元素:\n");for(i=0;i<10;i++) /*输出数组*/printf("%d,",a[i]);printf("\n");inverte(a,10); /*使数组元素逆序*/printf("逆序输出数组元素:\n");for (i=0;i<10;i++) /*输出逆序后数组*/printf("%d,",a[i]);printf("\n");return 0;}5.参考代码如下:#include<stdio.h>int main(){int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; /*定义数组*/int *p,(*pt)[4],i,j; /*声明指针、指针型数组等变量*/ printf("显示数组:");for(p=a[0];p<a[0]+12;p++){if((p-a[0])%4==0)printf("\n"); /*每行输出4个元素*/printf("%4d",*p); /*输出数组元素*/ }printf("\n");printf("请输入要输出的位置: i= ,j= \n ");pt=a;scanf("i=%d,j=%d",&i,&j); /*输入元素位置*/printf("a[%d,%d]=%d\n",i,j,*(*(pt+i)+j)); /*输出指定位置的数组元素*/return 0;}6.参考代码如下:#include<stdio.h>#include<string.h>void sort(char *strings[],int n) /*对字符串排序*/{char *temp;int i,j;for (i=0;i<n;i++){for (j=i+1;j<n;j++){if (strcmp(strings[i],strings[j])>0) /*比较字符大小,交换位置*/{temp=strings[i];strings[i]=strings[j];strings[j]=temp;}}}}int main(){int n = 5;int i;char *strings[]={"C language","Basic","World wide","Hello world","One world,one dream!"}; /*构造字符串数组*/sort(strings, n); /*排序*/ for (i=0; i<n;i++)printf("%s\n",strings[i]);return 0;}第10章预处理命令一、选择题1.B 2.B 3.D 4.A 5.C二、填空题1.宏定义、文件包含、条件编译2.不带参数宏带参数宏3.① CIRCLE(R,L,S,V) ② S=PI*R*R;第11章用户自定义数据类型一、选择题1.B 2.A 3.C 4.D 5.A 6.D 7.C 8.D 9.B 10.C二、填空题1.struct DATE d={2018,3,25}; 2.struct student *3.struct node *三、编程题1.参考代码如下:#include<stdio.h>#include<string.h>typedef struct MyComplex{double real;double img;}mc;mc Plus(mc a,mc b){mc result;result.real = a.real + b.real;result.img = a.img + b.img;return result;}mc Sub(mc a,mc b){mc result;result.real = a.real - b.real;result.img = a.img - b.img;return result;}void Show(mc a){if(a.real == 0 && a.img == 0)printf("0.000\n");else if(a.real == 0)printf("%.4fi\n",a.img);else if(a.img == 0)printf("%.4f\n",a.real);else{if(a.img < 0)printf("%.4f%.4fi\n",a.real,a.img);elseprintf("%.4f+%.4fi\n",a.real,a.img);}}int main(){mc a,b;printf("输入第一个复数a:\n");scanf("%lf%lf",&a.real,&a.img);printf("输入第二个复数b:\n");getchar();scanf("%lf%lf",&b.real,&b.img);printf("a b的和: ");Show(Plus(a,b));printf("a b的差: ");Show(Sub(a,b));return 0;}2.参考代码如下:#include <stdio.h>#define N 5typedef struct node{int num;int score1;int score2;}STU;int main(){STU s[N];int sum=0,ave,i;for(i=0;i<N;i++){printf("请输入第%d个学生的信息(学号、数学成绩、英语成绩):\n",i+1);scanf("%d%d%d",&s[i].num,&s[i].score1,&s[i].score2);}printf("所有学生的信息如下:\n");printf(" 学号\t\t数学成绩\t英语成绩\n");for(i=0;i<N;i++)printf("%5d:\t%10d\t%10d\t\n",s[i].num,s[i].score1,s[i].score2);for(i=0;i<N;i++){sum=sum+s[i].score1+s[i].score2;if(s[i].score1==100||s[i].score2==100){printf("学号为%d的学生有满分成绩\n",s[i].num);printf("其信息为:学号:%d,\t数学成绩:%d,\t英语成绩:%d\n",s[i].num,s[i].score1,s[i].score2);}}ave=sum/(N*2);printf("5名学生2门课程的总平均分为:%d\n",ave);return 0;}3.参考代码如下:#include <stdio.h>#include <malloc.h>#define N 5 /*单链表中结点的个数(不包括头结点)*/typedef struct node{int num;int score1;int score2;struct node *next;}STU;STU* creatList(int n) /*尾插法建立单链表,返回值为单链表的头指针*/ {STU *head,*s,*r; /*head为头指针;s指向当前结点;r指向当前结点的前一个结点*/int i=0;if((head=(STU *)malloc(sizeof(STU)))==NULL)/*为头结点分配内存空间,并检测是否分配成功*/ {printf("error!");return(0);}head->next=NULL; /*将头结点的指针域置空*/r=head;for(i=0;i<n;i++){if((s=(STU *)malloc(sizeof(STU)))==NULL)/*s结点总指向当前处理结点*/{printf("error!");return(0);}printf("请输入第%d个学生的信息(学号、数学成绩、英语成绩):\n",i+1);scanf("%d%d%d",&s->num,&s->score1,&s->score2);/*从键盘读入数据,存入当前结点的数据域*/ r->next=s; /*将r的指针域指向s,形成单链表*/r=s;}r->next=NULL;return head;}void printList(STU *L) /*输出链表元素*/{STU *p;p=L->next;printf("所有同学的信息如下:\n");printf(" 学号\t\t数学成绩\t英语成绩\n");while(p!=NULL){printf("%5d:\t%10d\t%10d\t\n",p->num,p->score1,p->score2);p=p->next;}printf("\n");}int main(){int n=N,x,sum=0,ave;STU *s,*t;s=creatList(n);printList(s);t=s->next;while(t!=NULL){sum=sum+t->score1+t->score2;if(t->score1==100||t->score2==100){printf("学号为%d的学生有满分成绩\n",t->num);printf("其信息为:学号:%d,\t数学成绩:%d,\t英语成绩:%d\n",t->num,t->score1,t->score2);}t=t->next;}ave=sum/(n*2);printf("5名学生2门课程的总平均分为:%d\n",ave);return 0;}4.参考代码如下:#include<stdio.h>struct stu{int num;int mid;int end;int ave;} s[3];int main(){int i;struct stu *p;for(p=s;p<s+3;p++){scanf("%d %d %d",&(p->num),&(p->mid),&(p->end));p->ave=(p->mid+p->end)/2;}for(p=s;p<s+3;p++)printf("%d %d %d %d\n",p->num,p->mid,p->end,p->ave);return 0;}5.参考代码如下:#include <stdio.h>#include <stdlib.h> /*包含动态内存分配函数的头文件*/#define N 5 /*单链表中结点的个数(不包括头结点)*/typedef struct node{int data;struct node *next;}STU;struct node *creatList(int n) /*尾插法建立单链表,返回值为单链表的头指针*/ {struct node *head,*s,*r; /*head为头指针,s指向当前结点,r指向当前结点的前一个结点*/int i=0;if((head=(struct node *)malloc(sizeof(struct node)))==NULL)/*为头结点分配内存空间,并检测是否分配成功*/ {printf("error!");return 0;}head->next=NULL; /*将头结点的指针域置空*/r=head; /*r指向头结点*/for(i=0;i<n;i++){if((s=(struct node *)malloc(sizeof(struct node)))==NULL)/*s结点总指向当前处理结点*/{printf("error!");return 0;}scanf("%d",&s->data); /*从键盘读入数据,存入当前结点的数据域*/r->next=s; /*将r的指针域指向s,形成单链表*/r=s; /*r指向s结点*/}r->next=NULL; /*r为尾结点其next指向NULL*/return head; /*返回单链表的头指针*/}void printList(struct node *L) /*输出链表元素*/{struct node *p;p=L->next; /*p指向第一个结点的next*/while(p!=NULL) /*当p不为NULL时循环*/{printf("%5d",p->data); /*输出p所指的结点的数值*/p=p->next; /*使p后移一个结点*/}printf("\n");}void insert(STU *L,int x) /*将元素x插入链表L的尾部*/{STU *s,*p,*q; /*指针s指向要插入的新结点*/if((s=(STU *) malloc(sizeof(STU)))==NULL)printf("error!");s->data=x; /*将元素x赋给新结点s的数据域*/p=L->next; /*p指针首先指向第一个元素*/while(p!=NULL){q=p;p=p->next;} /*p指针顺着单链表的头指针往后找,直到单链表的末尾,q指针指向单链表的最后一个结点*/s->next=q->next; /*把新结点的指针域指向原来p结点的后继结点*/q->next=s; /*p结点的指针域指向新结点,完成在链表末尾插入结点的工作*/ }int main(){int n=N,x;STU *s; /*s为链表头指针*/printf("请输入%d个整型数,建立单链表:\n",n);s=creatList(n);printf("建立的包含%d个元素的单链表如下:\n",n);printList(s);printf("请输入要插入的元素:\n");scanf("%d",&x);insert(s,x);printf("插入一个元素后的单链表如下:\n");printList(s);return 0;}第12章文件一、选择题1.B 2.C 3.B 4.D 5.B 6.D 7.C 8.C二、填空题1.rewind2.①fgetc(fp)!=EOF ②fclose(fp);三、编程题1.参考代码如下:#include<stdio.h>#include<stdlib.h>int main(){FILE *fp;char c,str1[100],str2[100];int i=0;if((fp=fopen("myfile","r+"))==NULL){printf("Cannot open file!");exit(0);}while(!feof(fp)){c=fgetc(fp);if(c>='A'&&c<'Z')c+=32;str1[i++]=c;}str1[i++]='\0';rewind(fp);fputs(str1,fp);rewind(fp);fgets(str2,i-1,fp);puts(str2);fclose(fp);return 0;}2.参考代码如下:#include<stdio.h>#include <stdlib.h>#define BUFFSIZE 5000void main(){FILE *sfp,*dfp;int i;char buf[BUFFSIZE];if((sfp=fopen("sfile.txt","r"))==NULL) /*以只读方式打开*/{printf("Source file cannot be opened\n");exit(0);}if(!(dfp=fopen("dfile.txt","w"))) /*以只写方式打开*/{printf("Destination file cannot be opened\n");exit(0);}i=0;while(!feof(sfp)) /*判断是否文件尾,不是则循环*/ {buf[i++]=fgetc(sfp); /*读出数据送缓冲区*/if(i>=5000) /*若i超出5000,程序设置的缓冲区不足*/{printf("buffer not enough!");exit(0);}}while(--i>=0) /*控制反序操作*/fputc(buf[i],dfp); /*写入目的文件中*/ fclose(sfp);fclose(dfp);}。

《C语言程序设计》复习思考题

《C语言程序设计》复习思考题

《C语言程序设计》复习思考题第一章复习思考题请说明C语言的主要特点。

何谓标识符?标识符有何限制?C语言可以使用哪些数据类型?*C语言中有哪些算述运算符?C语句有何特点?注释语句的格式和作用是什么?第二章复习思考题2.1.什么叫逻辑表达式?C语言中有哪些逻辑关系运算符?2.2.for, while和do语句有何异同?2.3.if语句有哪些不同的格式?如何使用?2.4.试说明break语句和continue语句功能和用法。

2.5.如何正确使用switch语句?第三章复习思考题3.1.请说明C语言程序结构的一般形式?3.2.函数在C语言程序中的地位和作用是什么?如何定义和说明函数?何谓函数原型法?3.3.何谓局部变量?何谓静态变量?何谓全程变量?如何使用?在程序中,它们应出现在什么位置?可否重名?3.4.函数返回值的类型如何说明?何谓空类型void?试说明return语句的功能和用法。

3.5.何谓形参?何谓实参?如何正确调用函数?何谓递归调用?第四章复习思考题4.1.何谓数组?它有何特点?如何定义说明和使用?数组的下标范围是什么?4.2.如何对全局数组和静态数组进行初始化?何谓变长数组?4.3.整个数组可否作为函数的参数?数组名传递的是何信息?4.4.何谓字符串?何谓字符串常量?如何输入输出字符串?4.5.如何使用标准库中的字符串函数和字符函数?字符类型变量如何取值?第五章复习思考题5.1.何谓结构?它有何特点?如何定义说明?如何访问结构成员变量?5.2.整个结构可否作为函数的参数或返回值?结构变量名传递的是何信息?5.3.如何对全局数组和静态结构变量或结构数组进行初始化?5.4.结构可否嵌套?如何定义说明?一个结构为什么不可嵌套自己?5.5.何谓联合?它有何特点?如何定义说明?如何访问联合成员变量?第六章复习思考题6.1.在计算机中,数据(变量或常量)如何存放?何谓地址空间?每个变量的地址值指是什么*?何谓间接寻址方式存取数据?6.2.何谓指针?它有何特点?如何定义说明?指针的作用是什么?6.3.指针变量取什么数值?指针变量运算符&和*的含义是什么?指针变量为何要初始化?如何初始化?指针有哪些算术运算符和关系运算符?按什么规则进行?6.4.用指针作为参数有何好处?何谓″传址″(或″传名″)的调用?函数如何回送信息?不同的回送信息途径有什么区别?6.5.用指针和用数组访问内存的方式有何共同处?又有何重要的差别?何谓字符串指针或字符指针?它与字符数组有什么异同之处?6.6.何谓指针型函数?函数返回指针类型变量如何定义和使用?malloc()函数功能是什么?如何引用它?6.7.何谓结构指针?如何定义说明和引用?用结构指针作为参数有何好处?6.8.如何构成链表?链表有何用处?如何构成二叉树?如何实现遍历二叉树?*6.9.何谓针型数组?何谓多级针型?何谓函数指针?它们如何定义说明?如何使用它们?第七章复习思考题7.1.何谓枚举?如何定义说明?枚举变量取何值?用枚举变量有何好处?7.2.何谓位域?如何定义说明?有哪些位操作运算符?如何使用?7.3.什么是寄存器变量?它的使用有何限制?7.4.何谓类型定义?其优点是什么?7.5.数据类型自动转换原则是什么?为什么要进行强制的数据类型转换?如何实现?第八章复习思考题8.1.什么是予处理程序?有哪几种予处理语句?8.2.何谓宏定义和宏替换?何谓宏定义类函数?它与真正的函数有何区别?8.3.何谓文件包含?应用文件包含的目的是什么?8.4.何谓条件编译?如何使用?第九章复习思考题9.1.C语言程序的所有输入和输出操作为什么必须通过函数调用来实现?9.2.何谓文件指针?如何取得?9.3.有哪些常用的输入和输出库函数?如何使用?9.4.什么是命令行参数?如何实现?第十章复习思考题10.1.为何要用单独编译?何谓外部变量和外部函数?何谓静态的全局变量?何谓静态函数?10.2.何谓系统调用?如何使用函数system()来实现?10.3.为什么要用自顶向下的方法来开发C语言程序?如何进行?如何使用make文件?10.4.如何考虑提高程序的效率?回顾在编程和调试中曾出现过的错误并总结经验教训。

C语言程序设计答案——清华大学出版社(第二版)

C语言程序设计答案——清华大学出版社(第二版)
double a,b,c,d,sum; scanf("%lf %lf %lf %lf",&a,&b,&c,&d); sum=a+b+c+d; printf("%lf\n",sum/4); }
5、编一程序,从键盘输入一个 5 位正整数,然后分别求出它的个位数、十位数、百位 数、千位数和万位数,并打印出这五位数字的和。如输入 12345,打印出 15(1+2+3+4+5=15)。
4* π *R*R*R
1、下列合法的字符常量是 D.'\n' 2、下列合法的字符串常量是 C."56" 3、合法的C语言标识符是B.sum 4、C语言程序的基本单位是C.函数 5、选出以下语句的输出结果printf("%d",strlen("\t\"\065\xff\n");A.6 6、在C语言中,要求运算数必须是整形的运算符是A.% 7、已知字母A的ASCII码为十进制 65,下面程序的输出是A.67,D
double a,b,max;
答案整理:林子雨 E-mail:ziyulin@ 主页:/linziyu 第 3 页/共 4 页
厦门大学本科生公共课 《C 程序设计基础》 第二版教材习题答案 第二章 C 语言基础
scanf("%lf%lf",&a,&b); max=a>b?a:b; printf("%lf\n",sqrt(max)); }
定义格式为:#define <常量名> <值常量> 变量的定义格式为: 数据类型 变量名 1,变量名 2,…,变量名 n; 或 数据类型 变量名 1=初值 1,变量名 2=初值 2,…,变量名 n=初值 n; 2、 变量的要素有哪些?请用一个例子说明? 名字、类型、值和地址 int a = 1;int 是类型,a 是名字,1 是值,地址是编译器给 a 变量分配的内存空间 3、 变量在整个程序中能有相同的值吗?为什么?请举例说明。 可以,因为变量的值可以被改变,但不是一定被改变。如果程序中没有其它不同的赋值, 变量将保持不变。 4、 为什么程序需要有短整型(short)和长整型(long)? 整型的值集理论上是所有整数,但由于受到计算机存储单元的限制,C 语言的整型只能 表示所有整数的一个有限子集,因此,整数有它的表示范围限制,且不同的 C 语言系统 可表示整数的范围可能不同。不同范围的整型数据所占有的内存空间大小不同。程序开 发人员通过选择能够满足范围要求的类型(short 或 long),可以减少数据存储空间。比 如,当短整型可以满足数据范围要求时,就没有必要选择需要更多存储空间的长整型。 5、 字符’8’和数字 8 有何不同? 字符’8’是字符型,数字 8 是整型 6、 C 语言有字符串变量吗? 没有 7、 C 语言中的运算符“/”和“%”有何区别?C 语言中除法运算符“/”与数学中的运算 符“÷”的用法和功能完全一样吗? “/”是除法,“%”是取余数,“/”与“÷”的用法和功能不完全一样,“÷”得到的是 两数相除后得到的真实值,“/”得到的是两数相除后取整的值。 8、 在 C 语言中,运算符“=”的功能是什么?能用它来判别两个量是否相等吗? “=”是赋值运算符,它将右侧表达式的值赋予左侧变量。不能判别两个量是否相等。 9、 双目运算符两边的操作数可以是不同的类型吗?如果可以,它们如何影响运算的结果? 可以,C 编译器会先对其中一些操作数进行隐式类型转换,使操作数类型一致后进行计 算。转换方向为:char,short->int->unsigned->long->double,float->double 10、描述你所学过的运算符的优先级。 () [] -> . 从左到右

(word完整版)C语言程序设计课后习题1-8参考答案

(word完整版)C语言程序设计课后习题1-8参考答案

C语言程序设计课后习题1—8参考答案习题1参考答案一、简答题1、冯诺依曼计算机模型有哪几个基本组成部分?各部分的主要功能是什么?答:冯诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五大功能部件组成的。

运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。

数据运算包括算术运算和逻辑运算。

控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调工作的.存储器是计算机中具有记忆能力的部件,用来存放程序和数据.输入设备是用来输入程序和数据的部件。

输出设备正好与输入设备相反,是用来输出结果的部件。

2、简述计算机的工作原理。

答:计算机的工作原理可简单地概括为:各种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。

整个过程由控制器进行控制。

3、计算机软件系统分为哪几类?答:软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:系统软件和应用软件。

系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。

这类软件一般与具体应用无关,是在系统一级上提供的服务。

系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。

另一类是面向用户的软件,如各种语言处理程序(像BC、VC等)、实用程序、字处理程序等。

在操作系统的基础上运行。

4、什么叫软件?说明软件与硬件之间的相互关系。

答:软件是指计算机程序及有关程序的技术文档资料。

两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。

在不太严格的情况下,认为程序就是软件。

硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下才能有效地工作.在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身,可以采用更加方便、更加有效地手段使用计算机。

《C语言程序设计》课后习题答案(第四版)

《C语言程序设计》课后习题答案(第四版)

第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

《C语言程序设计》复习题有答案1

《C语言程序设计》复习题有答案1

《C语言程序设计》复习题有答案1《C语言程序设计》复习题一、填空题1、 C 语言的源程序必须通过编译和链接后,才能被计算机执行。

2、 C 语言的源程序必须通过编译和连接后,才能被计算机执行。

3、C语言中的标示符可分为关键字、拥护标示符和预定义标识符3类。

4、C语言中的标示符可分为关键字、用户标识符和预定义标示符3类。

5、在C语言中,用关键字 float 定义单精度实型变量。

6、在C语言中,用关键字 double 定义双精度实型变量。

7、在C语言中,用关键字 char 定义字符型变量。

8、在C语言的赋值表达式中,赋值好左边必须是变量。

9、设C语言中的一个int型数据在内存中占2个字节,则int型数据的取值范围为-32768--32768 。

10、若有定义语句:int s=6;则表达式s%2+(s+1)%2的值为 1 。

11、若a是int型变量,且a的初值为6,则执行表达式a+=a-=a*a后a的值为-60 。

12、若a是int型变量,则执行表达式a=25/3%3后a的值为 2 。

13、在程序运行过程中,其值不能被改变的量称为常量。

14、C程序中定义的变量,代表内存中的一个存储单元。

15、C语言中,int类型数据字符占内存 2 个字节。

16、C语言中,char类型数据占内存 1 个字节。

17、C语言的字符常量是用单引号括起来的一个字符。

18、语句printf(“\n”);的作用是换行输出。

19、10/3的结果是3 。

20、10%3的结果是 1 。

21、C语句的最后用;结束。

22、要使用putchar函数,在#include命令行中应包含的头文件是#include。

23、要使用getchar函数,在#include命令行中应包含的头文件是#include。

24、为表示关系|x|≥9;应使用的C语言表达式是x<=-9 || x>=9 。

25、为表示关系|x|≤9;应使用的C语言表达式是x>=-9&&x<=9 。

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析《程序设计基础》习题参考答案与部分解析第1章 C 语言概述一、填空a) C源程序的基本单位是函数。

b) 一个C程序中至少应包括一个 main函数。

c) 在C语言中,输出操作是有库函数 printf( )函数完成。

二、单选题1、A2、C3、B解析:第1题答案:A 。

因为一个C程序总是从main函数开始执行的,而不论main函数在程序中的位置。

且到main函数结束。

第2题答案:C 。

因为 main函数没有限制必须位于程序的最前面。

C程序书写自由,一行内可写几个语句。

在对一个C 程序进行编译的过程中,无法检查注释当中的拼写错误。

不过C语言本身并没有输入输出语句,输入输出是由函数完成的。

第3题答案:B。

因为一个C语言程序是由若干个函数组成的。

但至少包含一个main 函数,且main函数的位置不限。

三、编程题1、编写一个输出“Welcome to C!”信息的小程序。

解:程序如下#include “stdio.h”main( ){1printf(“Welcome to C!”) ;}2、已知三角形的三边长分别为3,4,5,试用海轮公式编程求其面积。

海伦公式为:S?= ,其中s= (a+b+s)/2 ;解:程序如下#include “math.h”#include “stdio.h”main( ){int a , b , c ; /* a ,b,c 3个整型变量表示三角形的3条边。

*/float s ,s1 ; /* s1作为面积变量,s 作为中间变量是都应该是实形*/a=3 ; b= 4; c=5 ;s= (a+b+c)/2.0 ;s1= sqrt(s*(s-a)*(s-b)*(s-c)); /* sqrt函数完成开平方根功能。

*/printf(“area=%f\n”,s1);}2第2章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A 16、B 17 D解析:1. 答案:C。

《C语言程序设计》习题答案 answer

《C语言程序设计》习题答案 answer

《C语言程序设计》习题答案第1章概述习题1.1单选题1.C 2.B 3.D 4.A 5.C6.B 7.B 8.B 9.C 10.C1.2 简答题1.简述算法的特征。

有穷性,确定性,有效性,有0个或多个输入,有1个或多个输出2.结构化程序的三种基本结构。

顺序、选择和循环三种典型的基本结构3.简述C语言有哪些结构上的特点,书写C程序时应遵循那些规则。

C程序在结构上有如下几个特点:1)一个C语言程序是由一个或多个函数所组成。

这些函数之中,必须有一个主函数,主函数名为main(该名字用户不能更改)。

程序的执行总是从主函数开始(不管它出现在程序的什么地方),其它函数都是在开始执行main函数以后,通过函数调用而得以执行的,最后程序在主函数结束。

在主函数是整个程序的主控部分。

主函数以外的其它函数可以是系统提供的库函数,也可以是用户根据自己的需要而编写的函数。

2)任何一个函数都由两部分组成:函数首部和函数体。

函数首部指明函数的类型、存储属性、函数名字、参数类型和参数名字等。

3)C程序可包含外部说明在函数定义之外还可包含一个说明部分,该说明部分叫外部说明,它可包括编译预处理命令(如上例中的#include)、外部变量的说明等。

4)每一个说明、每一个语句都必须以分号结尾。

但预处理命令,函数首部之后不能加分号。

5)C程序中可以用/*……*/对任何部分作注释,好的程序都要有必要的注释,以提高程序的可读性。

在书写程序应遵循以下规则:1)C语言程序习惯上使用小写英文字母。

如要用到大写字母,则它们常常是作为常量的宏定义或其它特殊用途使用。

2)一个说明或一个语句占一行。

3)用{}括起来的部分,通常表示程序的某一层次结构。

{}一般与该结构语句的第一个字母对齐,并单独占一行。

4)低一层次的语句或说明可比高一层次的语句或说明缩进若干格书写。

以便看起来更加清晰,增加程序的可读性。

5)标识符、关键字之间必须至少加一个空格以示间隔。

若已有明显的间隔符,也可不再加空格来间隔。

c语言程序设计循环结构思考题

c语言程序设计循环结构思考题

C语言程序设计循环结构思考题一、循环结构简介循环结构是C语言中的基本控制结构之一,通过循环结构可以重复执行一段代码,实现对同一段代码的多次执行。

循环结构的三种形式包括`f or`循环、`w hi le`循环和`do-w hi le`循环。

二、循环结构的使用场景循环结构常常用于处理需要反复执行的任务,例如遍历数组、打印输出、计算累加等操作。

三、练习题目1.打印九九乘法表编写一个程序,使用循环结构打印出九九乘法表。

#i nc lu de<s td io.h>i n tm ai n(){i n ti,j;f o r(i=1;i<=9;i++){f o r(j=1;j<=i;j++){p r in tf("%d*%d=%d\t",i,j,i*j);}p r in tf("\n");}r e tu rn0;}2.计算1到100之间的奇数和编写一个程序,使用循环结构计算1到100之间的所有奇数的和。

#i nc lu de<s td io.h>i n tm ai n(){i n ts um=0;i n ti;f o r(i=1;i<=100;i+=2){s u m+=i;}p r in tf("1到100之间的奇数和为:%d\n",s um);r e tu rn0;}3.判断是否为素数编写一个程序,使用循环结构判断一个输入的数是否为素数。

#i nc lu de<s td io.h>#i nc lu de<s td bo ol.h>b o ol is Pr im e(in tn){i f(n<=1){r e tu rn fa ls e;}i n ti;f o r(i=2;i*i<=n;i++){i f(n%i==0){r e tu rn fa ls e;}}r e tu rn tr ue;}i n tm ai n(){i n tn;p r in tf("请输入一个正整数:");s c an f("%d",&n);i f(i sP ri me(n)){p r in tf("%d是素数\n",n);}e ls e{p r in tf("%d不是素数\n",n);}r e tu rn0;}4.求阶乘编写一个程序,使用循环结构计算一个输入的数的阶乘。

《C语言程序设计》作业与思考题答案

《C语言程序设计》作业与思考题答案
4.设m为整数,用逻辑表达式表示:能同时被3与7整除或者被5除余2且小于100的整数。
m%3= =0 && m%7= =0 || m%5= =2 && m<100
作业三
1.华氏温度通过公式C=5/9(f-32)转换成摄氏温度。试编程并上机调试运行:从键盘上输入华氏温度,利用公式计算后输出摄氏温度(要求:保留一位小数;记录调试过程中遇到的问题及解决方法)。
for (i=1。i<10。i++)
for (j=1。j<20。j++)
{k=100-i*10-j*5。
if (k>0) {printf(" i=%-3dj=%-3dk=%-3d",i,j,k)。
m++。
if (m%4==0) putchar('\n')。
}
}
printf("\nm=%d\n",m)。
⑵编写一个函数outdata,用来输出10个学生的记录。
⑶计算每个学生的平均成绩,并按平均成绩由小到大进行排序后输出。
解:
typedef struct student
{ int no。
char name[10]。
int score[3]。
float average。
} stud。
indata(st)/*输入10个学生的数据*/
}
}
outdata(st)/*输出10个学生的数据*/
stud st[]。
{ int i。
printf(“No NameScoreAverage”)。
for(i=0。i<10。i++)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《C语言程序设计》复习思考题
第一章复习思考题
请说明C语言的主要特点。

何谓标识符?标识符有何限制?
C语言可以使用哪些数据类型?*
C语言中有哪些算述运算符?
C语句有何特点?注释语句的格式和作用是什么?
第二章复习思考题
2.1.什么叫逻辑表达式?C语言中有哪些逻辑关系运算符?
2.2.for, while和do语句有何异同?
2.3.if语句有哪些不同的格式?如何使用?
2.4.试说明break语句和continue语句功能和用法。

2.5.如何正确使用switch语句?
第三章复习思考题
3.1.请说明C语言程序结构的一般形式?
3.2.函数在C语言程序中的地位和作用是什么?如何定义和说明函数?何谓函数原型法?
3.3.何谓局部变量?何谓静态变量?何谓全程变量?如何使用?在程序中,它们应出现在什么位置?可否重名?
3.4.函数返回值的类型如何说明?何谓空类型void?试说明return语句的功能和用法。

3.5.何谓形参?何谓实参?如何正确调用函数?何谓递归调用?
第四章复习思考题
4.1.何谓数组?它有何特点?如何定义说明和使用?数组的下标范围是什么?
4.2.如何对全局数组和静态数组进行初始化?何谓变长数组?
4.3.整个数组可否作为函数的参数?数组名传递的是何信息?
4.4.何谓字符串?何谓字符串常量?如何输入输出字符串?
4.5.如何使用标准库中的字符串函数和字符函数?字符类型变量如何取值?
第五章复习思考题
5.1.何谓结构?它有何特点?如何定义说明?如何访问结构成员变量?
5.2.整个结构可否作为函数的参数或返回值?结构变量名传递的是何信息?
5.3.如何对全局数组和静态结构变量或结构数组进行初始化?
5.4.结构可否嵌套?如何定义说明?一个结构为什么不可嵌套自己?
5.5.何谓联合?它有何特点?如何定义说明?如何访问联合成员变量?
第六章复习思考题
6.1.在计算机中,数据(变量或常量)如何存放?何谓地址空间?每个变量的地址值指是什么*?何谓间接寻址方式存取数据?
6.2.何谓指针?它有何特点?如何定义说明?指针的作用是什么?
6.3.指针变量取什么数值?指针变量运算符&和*的含义是什么?指针变量为何要初始化?如何初始化?指针有哪些算术运算符和关系运算符?按什么规则进行?
6.4.用指针作为参数有何好处?何谓″传址″(或″传名″)的调用?函数如何回送信息?不同的回送信息途径有什么区别?
6.5.用指针和用数组访问内存的方式有何共同处?又有何重要的差别?何谓字符串指
针或字符指针?它与字符数组有什么异同之处?
6.6.何谓指针型函数?函数返回指针类型变量如何定义和使用?malloc()函数功能是什么?如何引用它?
6.7.何谓结构指针?如何定义说明和引用?用结构指针作为参数有何好处?
6.8.如何构成链表?链表有何用处?如何构成二叉树?如何实现遍历二叉树?*
6.9.何谓针型数组?何谓多级针型?何谓函数指针?它们如何定义说明?如何使用它们?
第七章复习思考题
7.1.何谓枚举?如何定义说明?枚举变量取何值?用枚举变量有何好处?
7.2.何谓位域?如何定义说明?有哪些位操作运算符?如何使用?
7.3.什么是寄存器变量?它的使用有何限制?
7.4.何谓类型定义?其优点是什么?
7.5.数据类型自动转换原则是什么?为什么要进行强制的数据类型转换?如何实现?
第八章复习思考题
8.1.什么是予处理程序?有哪几种予处理语句?
8.2.何谓宏定义和宏替换?何谓宏定义类函数?它与真正的函数有何区别?
8.3.何谓文件包含?应用文件包含的目的是什么?
8.4.何谓条件编译?如何使用?
第九章复习思考题
9.1.C语言程序的所有输入和输出操作为什么必须通过函数调用来实现?
9.2.何谓文件指针?如何取得?
9.3.有哪些常用的输入和输出库函数?如何使用?
9.4.什么是命令行参数?如何实现?
第十章复习思考题
10.1.为何要用单独编译?何谓外部变量和外部函数?何谓静态的全局变量?何谓静态函数?
10.2.何谓系统调用?如何使用函数system()来实现?
10.3.为什么要用自顶向下的方法来开发C语言程序?如何进行?如何使用make文件?
10.4.如何考虑提高程序的效率?回顾在编程和调试中曾出现过的错误并总结经验教训。

10.5.两个函数int86()和bdos()是在何种系统环境下使用?如何实现访问系统功能?
第十一章复习思考题(考试不作要求)
11.1.为什么说C++是C的继承与发展?为什么C++程序设计应采用自底向上和自顶向下相结合的方法?
11.2.何谓类?如何定义说明?何谓域分辨操作符?如何使用?何谓构造函数?何谓析构函数?
11.3.函数重载和操作符重载含义是什么?请举例说明。

11.4.何谓基类?何谓派生类?有哪些访问修饰符?派生类如何继承基类访问权限?*何谓虚函数?何谓多态性?
11.5.何谓内联函数?它与一般函数有何区别?什么是按引用调用?如何使用?
11.6.什么是输入/输出流?什么是文件流?有哪些打开文件的模式?如何使用?
(复习思考题完)。

相关文档
最新文档