文档库 最新最全的文档下载
当前位置:文档库 › 06-07第2学期C程序设计补考试卷及参考答案

06-07第2学期C程序设计补考试卷及参考答案

06-07第2学期C程序设计补考试卷及参考答案
06-07第2学期C程序设计补考试卷及参考答案

《C语言程序设计》

专业 __________________ 班级________________________ 学号___________________ 姓名___________ 成绩______

一、选择题(50分,每题2分)

(1)以下选项中可作为C语言合法常量的是()。

(A)-80. (B)-080 (C)-8e1.0 (D)-80.0e

(2)以下叙述中正确的是()。

(A)用C语言编写的程序必须要有输入和输出操作

(B)用C语言编写的程序可以没有输出但必须要有输入

(C)用C语言编写的程序可以没有输入但必须要有输出

(D)用C语言编写的程序可以既没有输入也没有输出

(3)以下不能定义为用户标识符是()。

(A)Main (B)_0 (C)_int (D)sizeof

(4)数字字符0的ASCII值为48,若有以下程序

main()

{

char a='1',b='2';

printf("%c,",b++);

printf("%d\n",b-a);

}

程序运行后的输出结果是()。

(A)3,2 (B)50,2 (C)2,2 (D)2,50

(5)有以下程序

main()

{

int m=12,n=34;

printf("%d%d",m++,++n);

printf("%d%d\n",n++,++m);

}

程序运行后的输出结果是()。

(A)12353514 (B)12353513 (C)12343514 (D)12343513

(6)有以下语句:int b;char c[10];,则正确的输入语句是()。(A)scanf("%d%s",&b,&c); (B) scanf("%d%s",&b,c);

(B)scanf("%d%s",b,c); (D)scanf("%d%s",b,&c);

main()

{

int m,n,p;

scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p);

}

若想从键盘上输入数据,使变量M中的值为123,N中的值为456,P中的值为789,则正确的输入是()。

(A)m=123n=456p=789 (B)m=123 n=456 p=789 (C)m=123,n=456,p=789 (D)123 456 789

(8)有以下程序

main()

{

int a,b,d=25;

a=d/10%9;b=a&&(-1);

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

}

程序运行后的输出结果是()。

(A)6,1 (B)2,1 (C)6,0 (D)2,0

(9)有以下程序

main()

{

int i=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k);

}

程序运行后的输出结果是()。

(A)1 2 3 (B)2 3 4 (C)2 2 3 (D)2 3 3

(10)有以下程序

main()

{

int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;

while(i++<7)

if(p[i]%2) j+=p[i];

printf("%d\n",j);

}

程序运行后的输出结果是()。

(A)42 (B)45 (C)56 (D)60

main()

{

char a[7]="a0\0a0\0"; int i,j;

i=sizeof(a); j=strlen(a);

printf("%d %d\n",i,j);

}

程序运行后的输出结果是()。

(A)2 2 (B)7 6 (C)7 2 (D)6 2

(12)以下能正确定义一维数组的选项是()。

(A)int a[5]={0,1,2,3,4,5}; (B)char a[]={0,1,2,3,4,5};

(C)char a={'A','B','C'}; (D)int a[5]="0123";

(13)有以下程序

int f1(int x,int y){return x>y?x:y;}

int f2(int x,int y){return x>y?y:x;}

main()

{

int a=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d,%d\n",e,f,g);

}

程序运行后的输出结果是()。

(A)4,3,7 (B)3,4,7 (C)5,2,7 (D)2,5,7

(14)已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是()。

(A)数组a和b的长度相同(B)a数组长度小于b数组长度

(C)a数组长度大于b数组长度(D)上述说法都不对

(15)有以下程序

void f(int *x,int *y)

{ int t; t=*x;*x=*y;*y=t; }

main()

{

int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;

p=a;q=&a[7];

while(p

for(i=0;i<8;i++)printf("%d,",a[i]);

}

程序运行后的输出结果是()。

(A)8,2,3,4,5,6,7,1, (B)5,6,7,8,1,2,3,4,

(C)1,2,3,4,5,6,7,8, (D)8,7,6,5,4,3,2,1,

(16)有以下程序

main()

{

int a[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i;

for(i=0;i<3;i++)printf("%d",a[1][i]);

}

程序运行后的输出结果是()。

(A)0 1 2 (B)1 2 3 (C)2 3 4 (D)3 4 5

(17)以下叙述中错误的是()。

(A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出(B)数组名代表的是数组所占存储区的首地址,其值不可改变

(C)在编译源程序过程中,若数组元素的下标超出所定义的下标范围时,编译系统将给出"下标越界"的出错信息

(D)可以通过赋初值的方式确定数组元素的个数

(18)有以下程序

#define N 20

fun(int a[],int n,int m)

{int i,j;

for(i=m;i>=n;i--)a[i+1]=a[i];

}

main()

{

int i,a[N]={1,2,3,4,5,6,7,8,9,10};

fun(a,2,9);

for(i=0;i<5;i++)printf("%d",a[i]);

}

程序运行后的输出结果是()。

(A)10234 (B)12344 (C)12334 (D)12234

(19)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是()。

(A)feof(fp) (B)ftell(fp) (C)fgetc(fp) (D)rewind(fp)

(20)有以下程序

#define P 3

void F(int x){return(P*x*x);}

main()

{printf("%d\n",F(3+5));}

程序运行后的输出结果是()。

(A)192 (B)29 (C)25 (D)编译出错

(21)有以下程序

main()

{int c=35;printf("%d\n",c&c);}

程序运行后的输出结果是()。

(A)0 (B)70 (C)35 (D)1

(22)以下叙述中正确的是()。

(A)预处理命令行必须位于源文件的开头(B)在源文件的一行上可以有多条预处理命令

(C)宏名必须用大写字母表示(D)宏替换不占用程序的运行时间

(23)若有以下说明和定义

union dt

{int a;char b;double c;}data;

以下叙述中错误的是()。

(A)data的每个成员起始地址都相同

(B)变量data所占的内存字节数与成员c所占字节数相等

(C)程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000 (D)data可以作为函数的实参

(24)以下语句或语句组中,能正确进行字符串赋值的是()。

(A)char *sp;*sp="right!"; (B)char s[10];s="right!";

(C)char s[10];*s="right!"; (D)char *sp="right!";

(25)设有如下说明

typedef struct ST

{long a;int b;char c[2];}NEW;

则下面叙述中正确的是()。

(A)以上的说明形式非法(B)ST是一个结构体类型

(C)NEW是一个结构体类型(D)NEW是一个结构体变量

二、填空题(30分,第1-3小题,每空2分,第4小题6分)

1. 以下程序输入两个字符串,通过调用函数fun()比较它们的大小并将比较结果输出,请在划线处填空,完成程序的功能。

____(1) __

main()

{

char s1[80],__(2)__;

scanf("%s",s1);

scanf("%s",s2);

if(fun(s1,s2)>0) printf("%s>%s",s1,s2);

if(fun(s1,s2)<0) printf("%s<%s",s1,s2);

else printf("%s=%s",s1,s2);

getch();

}

int fun(char *a,char *b)

{

while((*a!='\0')&&(*b!='\0')&&( (3) ) )

{a++;b++;}

__(4)_

}

2.下面的程序按以下形式输出数组num的右上半三角元素,请填空完成程序。

1 2 3 4

6 7 8

11 12

16

main()

{

int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j; for(i=0;i<4;i++){

for(j=0; (1) ;j++) printf("%4c",' ');

for( (2) ;j<4;j++) printf("%4d",num[i][j]);

(3)

}

getch();

}

3.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,

函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即

正向与反向的拼写都一样,例如:adgda.请填空.

char *huiwen(char *str)

{

char *p1,*p2;int i,t=0;

(1) ; p2=str+(strlen(str)-1);

for(i=0; (2) ;i++)

if(*p1++!=*p2--){t=1; (3) ;}

if(!t) return("yes!");

else return("no!");

}

main()

{

char str[50];

printf("Input:");

scanf("%s", (4) );

printf("%s\n", (5) );

getch();

}

4.给出以下程序的运行结果。(6分)

struct NODE

{

int k;

struct NODE *link;

};

main()

{

struct NODE m[5],*p=m,*q=m+4;

int i=0;

while(p!=q){

p->k=++i;p++;

q->k=i++;q--;

}

q->k=i;

for(i=0;i<5;i++) printf("%d",m[i].k);

printf("\n");

getch();

}

三、编程题(20分)

1. 在主程序中提示输入整数n,编写函数sum( )用递归的方法求1+2+…+n的值。(8分)

#include

int sum(int);

void main()

{

int n;

printf("Please input n:"); scanf(“%d”,&n);

printf(“The result is:%d\n”, sum(n) );

}

int sum(int n)

{

?

}

2.下面程序中,函数fun()的功能是求3行4列数组每行元素中的最大值,

并将每行的最大值存储在数组bar中。请完成函数fun()。(12分)

void fun(int,int(*)[4],int *);

void main()

{

int k;

int a[3][4]={{-1,2,3,4},{5,6,-7,8},{9,10,11,-12}};

int b[3]={0};

fun(3,a,b);

for(k=0;k<3;k++)

printf("The max of line%d is %d\n",k+1,b[k]);

getch();

}

void fun(int m,int a[][4],int *bar)

{

}

华大06-07第2学期《C语言程序设计》补考试卷参考答案

一、选择题(50分,每题2分)

(1)A (2)D (3)D (4) C (5)A (6)B (7)A (8)B (9)D (10)B (11)C (12)B (13)A (14)C (15)D (16)D (17)C (18)C (19)D (20)D (21)C (22)D (23)C (24)C (25) C

二、填空题(30分,第1-3小题,每空2分,第4小题6分)

1. (1)int fun(char*,char*); (2)char s2[80] (3)*a==*b (4)return(*a-*b);

2.(1) j<=i (2) j=i (3) printf("\n");

3. (1) p1=str (2) i<=strlen(str)/2 (3) break (4) str (5)huiwen(str) 4.(6分)13431

三、编程题(20分)

1. 在主程序中提示输入整数n,编写函数sum( )用递归的方法求1+2+…+n的值。(8分)

int sum(int n)

{

if(n==1) r eturn 1;

else return (n+sum(n-1));

}

2.下面程序中,函数fun()的功能是求3行4列数组每行元素中的最大值,并将每行的最大值存储在数组bar中。请完成函数fun()。(12分)

void fun(int m,int a[][4],int *bar)

{

int i,j;

for(i=0;i

bar[i]=a[i][0];

for(j=1;j<4;j++)

if(bar[i]

}

}

void main()

{

int k;

int a[3][4]={{-1,2,3,4},{5,6,-7,8},{9,10,11,-12}};

int b[3]={0};

fun(3,a,b);

for(k=0;k<3;k++)

printf("The max of line%d is %d\n",k+1,b[k]);

getch();

}

C语言程序设计(第二版)课后答案 丁亚涛

习题二 一、选择题 二、填空题 1.18 2.int float double 3.10 11 4.8 16 10 5.% 三、阅读题 1. 10,10,9,10 2. j=1, i=2 k=3,i=3 i=3,i=2 k=1,i=1 习题三 一、选择题 二、填空题 1. 从键盘上读入一个字符在屏幕上输出一个字符 #include 2. 按十进制整数形式输出,有符号 按16进制整数形式输出,没有符号 按十进制小数形式输出,输出的数据长度为7位,有2位小数 按字符形式输出一个字符 3. 按十进制整数形式输入数据 按十进制整数形式输入三位数据 跳过3位十进制数据 按字符形式输入一个字符 4. 分程序;; 5. 大写字母L 6. -1 三、阅读题 1. 6 6 6.00 6.00

2. x=127,x= 127,x=177,x=7f y=123.4567,y= 123.46,y=123,45670 3. 2,1 4. 1234 5. 4,3 6. -6,-6 习题四一、选择题 二、填空题 1. 非0 0 、 2. k==0 3. n%7==0&&n%==0 else 三、阅读题 1. a=1,b=0 2. c=1 习题五一、选择题 二、填空题 1. for语句 do-while 语句 while 语句 2. a=14,y=26 3. k=14,n=-1 4. 39 5. s=19 6. 22222 7. 10 8. 7 9. 8 10. 5,5 三、改错题

1. for( i=0;i<5;i++);for控制部分用分号分隔 2. int j=0;while(j<10){j++;i=j} 分号是多余的,否则会造成死循环 3. int s=1,i=1; while(i<5) {s*=i; i++; } 两条语句需要加上花括号 4. while(j<10);(分号不能少) 5. continue改为break 习题六 一、选择题 二、填空题 1. 20 0 19 2. 数组名 3. 越界 4. 6 5. j==k a[j][k]=1; a[j][k]=0; 三、阅读题 1. 6 5 4 3 2 1 2. aaa bbb ccc ddd 3. 2,2,1 习题七 一、选择题 二、填空题 1. 整个函数体内局部 2. 整型 3. k<=b return y;

第5章-C语言程序设计(第2版)教材习题答案

【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。2011年10月第二版。ISBN:978-7-302-26972-4。售价:35元。 【答案版本】本习题答案为2012年2月修订版本。 一、选择题 1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。 A. while循环执行10次 B. 循环是无限循环 C. 循环体语句执行一次 D. 循环体语句一次也不执行 2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。 A. 运行程序段后输出1 B. 程序段执行无限次 C. 运行程序段后输出0 D. 程序段中的控制表达式是非法的 3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。 A. int a=1,b=2; while(b--); B. int a=1,b=2; do a++; while(a==b); C. int a=1,b=2; while(a=3); D. int a=1,b=2; do b-- while(b==0); 4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。 do{ printf(“%d\n”,i--); } while(i!=0); A. 0 B. 1 C. 5 D. 无限 5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。 A. 0 B. 5 C. 10 D. 无限 6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。 A. break语句用于循环体内,它将结束该循环 B. break语句用于开关语句,它结束该开关语句 C. break语句用于if语句的内嵌语句内,它结束该if语句 D. break语句在一个循环体内可使用多次 7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。 A. 循环体内可以包含有循环语句 B. 循环体内必须同时出现break语句和continue语句 C. 循环体内可以出现选择语句 D. 循环体可以是空语句 8. 以下不是死循环的是D)for(;(c=getchar()!=’\n’);)printf(“%c”,c);。 A. for(; ; x+=i); B. while(1) { x++; } C. for( i=10; ; i--) sum+=i; D. for( ; (c=getchar() )!=’\n’ ; ) printf( “%c”,c); 9. 执行语句”for(i=0;i++<3;);”后,变量i的值为C) 4。 A.2 B. 3 C. 4 D. 5 10.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C)循环4次。 A. 无限循环 B. 循环次数不定 C. 循环4次 D. 循环3次

程序设计基础——基于C语言(第2版) 课后习题参考答案汇总

习题1参考答案 1.1解释以下术语 (1)计算机软件:计算机软件是一系列按照特定结构组织的程序、数据(Data)和文档(Document)的集合。 (2)计算机程序:用计算机语言所编写的一系列指令的集合。 (3)数据:数据是程序加工和处理的对象。 (4)算法:算法是一组有穷的规则,它们规定了为解决某一特定问题而采取的一系列运算步骤。 (5)数据结构:数据结构是存在一种或多种特定关系的数据元素的集合,其外在表现为数据的组织形式。 (6)数据类型:数据类型是一个值的集合和定义在这个值集上的操作的总称。 (7)程序设计:程序设计是给出解决特定问题程序的方法和过程,是软件构造活动中的重要组成部分。 1.2 简答题 (1)简述内存的组织结构形式? 计算机系统把内存看作是由若干个连续的存储单元(Storage Location)组成的,每个存储单元的大小为一个字节(Byte)。为了能唯一标志每个存储单元,在计算机系统中给每个存储单元指定一个唯一的编号,该编号被称为存储单元的地址(Address),计算机在读写内存时就是按照存储单元的地址进行的。 (2)为什么计算机系统是一个通用的计算系统? 在计算机硬件相对固定不变的前提下,计算机的通用性主要表现在通过运行不同的程序来完成不同的计算任务。 (3)简述结构化程序设计的基本思想? 在程序设计过程中,如果仅仅使用顺序、选择和循环这三种基本控制结构,并且使每个代码块只有一个入口和一个出口,则这样的程序设计方法被称为结构化程序设计(Structured Programming)。 (4)简述计算机语言的发展史? 程序设计语言经历了从机器语言、汇编语言、高级语言到超高级语言的发展历程。(5)简述利用计算机进行问题求解的过程? 1、理解问题特征 2、设想解决方案 3、优化解决方案 4、描述解决方案 5、执行并分析解决方案 (6)简述各个程序质量要素的含义? 1、正确性(Correctness):正确性是指一个计算机程序的正确程度,即程序在预定的

《C语言程序设计教程(第二版)》习题答案

2 第1章程序设计基础知识 一、单项选择题(第23页) 1-4.CBBC 5-8.DACA 二、填空题(第24页) 1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分 三、应用题(第24页) 2.源程序: main() {int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */ printf("cock hen chick\n"); for(i=1;i<=20;i++) for(j=1;j<=33;j++) for(k=1;k<=33;k++) if (i+j+k*3==100&&i*5+j*3+k==100) printf(" %d %d %d\n",i,j,k*3);} 执行结果: cock hen chick 4 18 78 8 11 81 12 4 84 3.现计算斐波那契数列的前20项。 递推法源程序: main() {long a,b;int i; a=b=1; for(i=1;i<=10;i++) /*要计算前30项,把10改为15。*/ {printf("%8ld%8ld",a,b); a=a+b;b=b+a;}} 递归法源程序: main() {int i; for(i=0;i<=19;i++) printf("%8d",fib(i));} fib(int i) {return(i<=1?1:fib(i-1)+fib(i-2));} 执行结果: 1 1 2 3 5 8 13 21 3 4 55 89 144 233 377 610 987 1597 2584 4181 6765

C语言程序的设计习题参考答案(第二版_杜友福)

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 4. 求1×2×3×…×10的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

课后题答案-C语言程序设计(第2版)

《C语言程序设计能力教程(第二版)》课后作业及实训题 参考答案 第1章进入C语言程序世界 二、 1. I love China! printf("we are students.\n") 2. 6 项目实训题参考答案 1.编写一个C程序,输出以下信息: * * * * * * * * * * * * * * * * * * * * I am a student! * * * * * * * * * * * * * * * * * * * * main() { printf("********************\n"); printf(" I am a student!\n "); printf("********************\n"); } 2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。 解: main() { int a,b,c,v; a=10; b=20; c=15; v=a*b*c; printf("v=%d",v); } 本程序运行结果为: v=3000 第2章编制C程序的基础知识 一选择题 C B A B A C C 二操作题

,2,-8,2 3.000000,2.500000,-8.000000 2. ABC DE FGH why is 21+35 equal 52 3. 3 1 4 3 2 3 1 2 4. aa bb cc abc A N 项目实训题 1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。 #define M 5 main() { int n,c; n=2; c=M*n; printf("%d\n",c); } 2.编程求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7; (2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。 (1)main() { int a=7; float x=2.5,y=4.7; printf("%f\n",x+a%3*(int)(x+y)%2/4); } (2)main() { int a=2,b=3; float x=3.5,y=2.5; printf("%f\n",(float)(a+b)/2+(int)x%(int)y); } 第三章顺序结构程序设计 一选择题 A C D C C 二操作题 1. x=3,a=2,b=3 2. z=12.700000

C程序设计语言 (第二版) 课后答案第一章

Chapter 1 Exercise 1-1 Run the “hello world” program on your system. Experiment with leaving out parts of the program, to see what error message you get. #include int main() { printf("hello, "); printf("world"); printf("\n"); return 0; } Exercise 1-2 Experiment to find out what happens when printf’s argument string contains \c, where c is some character not list above. Exercise 1-3 Modify the temperature conversion program to print a heading above the table. #include int main() { float fahr, celsius; float lower, upper, step; lower = 0; upper = 300; step = 20; fahr = lower; printf("Fahrenheit temperatures and their centigrade or Celsius equivalents\n"); while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32.0); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; } return 0; }

c语言程序设计(科学出版社)课后习题解答

第3章习题解答 第1章 1.C 语言程序主要由预处理命令、函数、注释等组成。 2.填空 (1)分号 (2)main (3)stdio.h 3. 源程序: #include main( ) { printf(“*************************\n”); printf(“Hello World!\n”); printf(“*************************”); } 4. 源程序: #include main( ) { int a, b, c; /* 定义变量*/ scanf(“%d”, &a); /* 输入第一个整数*/ scanf(“%d”, &b); /* 输入第二个整数*/ c=a-b; /* 计算差*/ printf(“%d-%d=%d”,a,b,c); /* 输出结果*/ } 5. (1) (2)x=10; (3)printf(“s=%d\n”,s); 第2章 1. (1) c (2) a (3) b g (4) a d e (5) d 2. a. 5 b. 295 c. 4 d. 29 e. 9 3. a.x=4,y=6

b. x=4,y=3 f.x=3,y=6 4. 16 5. #include main() { int a,b,c; scanf("%d%d",&a,&b); c=a*b; printf("%d*%d=%d",a,b,c); } 第3章 1. (1) b (2) b (3) d (4) a (5) b 2. (1)&a,&b (2)l,s 3. printf(“x=%.2f,y=%.2f\n”,x,y); 4. #include 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 main() { int hour,minute,second,total; /* 定义变量代表时、分、秒和总秒数*/ scanf("%d",&total); hour=total/3600; minute=total%3600/60; second=total%3600%60;

c语言(第二版朱鸣华)课后编程题答案

第五章 1 2、#include #include int main() { char a; scanf("%c",&a); if(a>'A'&&a<'Z') printf("%c,%c\n",a-1,a+1); else if(a=='A') printf("没有前面字母"); else if(a=='Z') printf("没有后面字母\n"); return 0; } 3、#include #include int main() { int a; scanf("%d",&a); if(a>=90&&a<=100) printf("A\n"); else if(a>=80&&a<=89) printf("B\n"); else if(a>=70&&a<=79) printf("C\n"); else if(a>=60&&a<=69) printf("D\n");

else printf("E\n"); return 0; } 4、#include int main() { int year,month,day; int maxdays[]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入年月日,中间用空格隔开!\n"); scanf("%d %d %d",&year,&month,&day); if(year%400==0 || (year%4==0 && year%100!=0)) maxdays[1]=29; if(month>12 || month<1) { printf("日期不合法!\n"); return 0; } if(day>maxdays[month-1]) { printf("日期不合法!\n"); return 0; } day++; if(day==maxdays[month-1]) { day=1; month++; if(month==12) { month=1; year++; } } printf("明天的日期是:%d-%d-%d\n",year,month,day); return 0; } 5、#include int main() { double a,b,c; scanf("%lf%lf%lf",&a,&b,&c); if((a+b)>c&&(a+c)>b&&(b+c)>a) if(a==b&&b==c&&c==a) printf("等边三角形\n"); else if((a==b)||(a==c)||(b==c))

C程序设计语言 (第二版) 课后答案第二章

Exercise 2-1 Write a program to determine the ranges of char , short , int , and long variables, both signed and unsigned , by printing appropriate values from standard headers and by direct computation. Harder if you compute them: determine the ranges of the various floating-point types. #include #include int main () { printf("Size of Char %d\n", CHAR_BIT); printf("Size of Char Max %d\n", CHAR_MAX); printf("Size of Char Min %d\n", CHAR_MIN); printf("Size of int min %d\n", INT_MIN); printf("Size of int max %d\n", INT_MAX); printf("Size of long min %ld\n", LONG_MIN); printf("Size of long max %ld\n", LONG_MAX); printf("Size of short min %d\n", SHRT_MIN); printf("Size of short max %d\n", SHRT_MAX); printf("Size of unsigned char %u\n", UCHAR_MAX); printf("Size of unsigned long %lu\n", ULONG_MAX); printf("Size of unsigned int %u\n", UINT_MAX); printf("Size of unsigned short %u\n", USHRT_MAX); return 0; } Exercise 2-2 Write a loop equivalent to the for loop above without using && or || . #include #define lim 100 void main() { int i=0, c; char s[lim]; while(i

大学C语言程序设计第2版(电子工业出版社)1-7章参考答案

习题答案 习题1(参考答案) 1.计算的本质是什么? 计算的本质就是基于规则的符号串变换。 2.三大科学思维是指什么? 理论思维、实验思维、计算思维 3.什么是计算思维?计算思维的基本特征有哪些? 计算思维是指运用计算机科学的思想、方法和技术进行问题求解、系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。 从计算科学的角度分析,计算思维包括6个方面的特征:抽象性、数字化、构造性、系统化、虚拟化和网络化。 4.什么是算法?算法的基本特征有哪些? 算法(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地讲,就是计算机解题的步骤。 一个算法应该具有以下五个重要特征。 (1)有穷性:一个算法必须保证执行有限步之后结束。 (2)确定性:算法的每一步骤必须有确定的定义。 (3)输入:一个算法有0个或多个输入,以刻画运算对象的初始情况。0个输入是指算法本身给定了初始条件。 (4)输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。 (5)可行性:算法上描述的操作在计算机上都是可以实现的。 5.算法的复杂度分为哪两种? 算法的复杂性用复杂度来说明,分为时间复杂度和空间复杂度。 时间复杂度:执行该算法所需要的计算工作量,一般用所需基本运算的执行次数来度量。空间复杂度:执行该算法所需的内存空间,一般用算法程序本身占的空间+输入的初始数据占的空间+算法执行过程中所需的额外空间的总和来表示。 6.什么是程序?程序与算法的区别是什么 程序是为了实现特定目标或解决特定问题而用计算机语言编写的指令序列,它由算法和数据结构组成。

算法与程序的区别:计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。 7.简述程序设计语言发展的过程。 计算机程序设计语言从最初的机器代码到今天接近自然语言的表达,经过了四代演变。一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面向对象的高级语言为第四代。 8.程序执行过程中,有哪些基本步骤? 习题2(参考答案)p35 一、选择题 1 2 3 4 5 6 7 8 9 10 C A C C C C ? C B B D 11 12 13 14 15 16 17 18 19 20 C C D A B B B A D ? B 21 22 23 24 25 26 27 28 29 30 C D A D B C C C A D 31 32 33 34 35 36 37 38 39 40 C C B ? C A D B C D A 41 42 43 44 45 46 47 48 49 50 B D B B A B B A C D 51 52 53 54 55 C A A D B 二、填空题

C程序设计语言(第二版)

第一章基本概念 第二章类型、运算符与表达式 一个对象的类型决定着该对象可取值的集合以及可以对该对象施行的运算。 2.2 数据类型与大小 1. 在C语言中只有如下几个基本数据类型: char 单字节,可以存放字符集中一个字符。 int 整数,一般反映了宿主机上整数的自然大小。 Float 单精度浮点数。 Double 双精度浮点数。 此外,还有一些可用于限定这些基本类型的限定符。 2.3 常量 1.诸如1234一类的整数常量是int常量。Long常量要以字母l或L结尾。无符号常量以字母u或U结尾,后缀ul或UL用于表示unsigned long常量。(这里的常量其实就是指直接指定的一般数字或是字符字符串什么的) 浮点常量必须包含一个小数点或指数(如1e-1)或两者都包含,在没有后缀时类型为double。后缀f与F用于指定float常量,而后缀l或L则用于指定 字符常量是一个整数,写成用单引号括住单个字符的形式,如‘x’。字符常量的值是该字符在机器字符集中的数值。 常量表达式时其中只涉及到常量的表达式。这种表达式可以在编译时计算而不必推迟到运算时,因而可以用在常量可以出现的任何位置,例如由define定义的宏。 字符串常量也叫字符串字面值,是用双引号括住的由0个或多个字符组成的字符序列。从技术绝度看,字符串常量就是字符数组。在内部表示字符串时要用一个空字符’\0’来结尾,故用于存储字符串的物理存储单元数比括在双引号中的字符数多一个。这种表示发意味着,C语言对字符串的长度没有限制,但是程序必须扫描完整个字符串才能决定这个字符串的长度。 枚举常量。枚举是常量整数值的列表。不同的枚举中的名字必须各不相同,同一枚举中各个名字的值不要求不同。枚举是使常量值与名字相关联的又一种方便的方法,其相对于#define语句的优势是常量值可以由自己控制。 2.4 说明 其实就是声明。如果所涉及的变量不是自动变量(就是局部变量),那么只初始化一次,而且从概念上讲应该在程序开始执行之前进行,此时要求初始化符必须为常量表达式。显示初始化的自动变量每当进入其所在的函数或分程序时就进行一次初始化,其初始化符可以是任何表达式。外部变量与静态变量的缺省值为0。未经显式初始化的自动变量的值为未定义值(即垃圾)。 2.5 算术运算符 2.6 关系运算符与逻辑运算符 2.7 类型转换 1. 当一个运算符的几个运算分量的类型不同时,要根据一些规则把它们转换成某个共同的类型。一般而言,只能把“比较窄的”运算分量自动转换成“比较宽的”运算分量,这样才能不丢失信息。 2. char类型就是小整数类型,在算术表达式中可以自由地使用char类型的变量或常量。这就使得在某些字符转换中有了很大的灵活性。但是在将字符转换成整数时有一点微妙。C 语言没有指定char类型变量时无符号还是有符号量。当把一个char类型的值转换成int类型的值时,其结果是不是负整数?结果视机器的不同而有所变化,反映了不同机器结构之间

C程序设计语言 (第二版) 课后答案第三章

Exercise 3-1 Our binary search makes two tests inside the loop, when one would suffice (at the price of more tests outside). Write a version with only one test inside the loop and measure the difference in run-time. int binsearch(int x, int v[], int n) { int low, high, mid; low = 0; high = n - 1; mid = (low+high) / 2; while ( low <= high && x != v[mid] ) { if ( x < v[mid] ) high = mid - 1; else low = mid + 1; mid = (low+high) / 2; } if ( x == v[mid] ) return mid; else return -1; } Exercise 3-2 Write a function escape(s,t) that converts characters like newline and tab into visible escape sequences like \n and \t as it copies the string t to s . Use a switch . Write a function for the other direction as well, converting escape sequences into the real characters. void escape(char * s, char * t) { int i, j; i = j = 0; while ( t[i] ) { switch( t[i] ) { case '\n': s[j++] = '\\'; s[j] = 'n'; break; case '\t': s[j++] = '\\'; s[j] = 't'; break; case '\a': s[j++] = '\\'; s[j] = 'a';

相关文档
相关文档 最新文档