c语言课后答案.docx

上传人:b****9 文档编号:25432577 上传时间:2023-06-08 格式:DOCX 页数:42 大小:51.11KB
下载 相关 举报
c语言课后答案.docx_第1页
第1页 / 共42页
c语言课后答案.docx_第2页
第2页 / 共42页
c语言课后答案.docx_第3页
第3页 / 共42页
c语言课后答案.docx_第4页
第4页 / 共42页
c语言课后答案.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

c语言课后答案.docx

《c语言课后答案.docx》由会员分享,可在线阅读,更多相关《c语言课后答案.docx(42页珍藏版)》请在冰豆网上搜索。

c语言课后答案.docx

c语言课后答案

《C程序设计》课外作业及参考答案

说明:

 

(1)章节顺序按照PowerPoint电子教案;

    

(2)教材上的作业注明了章节和题号;

    (3)所用教材是《C程序设计(第二版)》 谭浩强 清华大学出版社;

    

第一章C语言概述

1.1简答题:

写出C语言的主要特点(教材习题1.1)。

1.2填空题:

1.C语言与操作系统并称“栾生兄弟”。

2.C语言俗称为形式。

3.C源程序文件经过处理后产生目标文件,目标文件经处理后生成可执行文件。

1.3单项选择题

1.以下说法中正确的是。

(A)C语言程序总是从第一个定义的函数开始执行

 (B)在C语言程序中,要调用的函数必须在main函数中定义

 (C)C语言程序总是main函数开始

 (D)C语言程序中的main函数必须放在程序的开始部分

2.以下正确的C标识符是。

 (A)_125(B)C#(C)C++(D)A$

1.4多项选择题

1.以下关于C语言的说法中,错误的是。

(A)俗称为“低级语言的高级形式”,因此功能简单

(B)不是结构化程序设计语言

(C)可能直接访问内存

(D)语法限制不严

2.以下标识符属于C语言关键字的有。

(A)integer(B)else(C)include(D)while

第二章C语言基本数据类型、变量、常量与表达式

2.1简答题

1.求下面算术表达式的值。

(教材习题3.9)

a)x+a%3*(int)(x+y)%2/4

设x=2.5,a=7,y=4.7

b)(float)(a+b)/2+(int)x%(int)y

设a=2,b=3,x=3.5,y=2.5

2.写出下面程序的运行结果。

(教材习题3.10)

main()

{inti,j,m,n;

i=8;j=10;m=++i;n=j++;

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

}

3.写出下面表达式运算后a的值,设原来a=12。

设a和n已定义为整型变量。

(教材习题3.12)

a)a+=ab)a-=2c)a*=2+3

b)d)a/=a+ae)a%=(n%=2),n的值等于5f)a+=a-=a*=a

4.C语言中如何表示“真”和“假”?

系统如何判断一个量的“真”和“假”?

2.2填空题

1.写出下面各逻辑表达式的值。

设a=3,b=4,c=5。

(教材习题5.3)

(1)a+b>c&&b==c

(2)a||b+c&&b-c

(3)!

(a>b)&&!

c||1(4)!

(x=a)&&(y=b)&&0

(5)!

(a+b)+c-1&&b+c/2

2.

(1)5<<2

(2)0!

=1(3)!

!

3

(4)105%10(5)3/2*2(6)5^3

(7)1<2<0(8)1%2*2

3.已知inta=1,b=2,c;执行下列语句后,写出各变量的值。

c=++b―a++;变量

(1)a=,

(2)b=,(3)c=

4.数学式

对应的C语言表达式是。

5.当算术表达式中出现了float型变量时,系统自动将该型变量值转换为   

(1)   类型,然后参与运算,如果出现char型变量时,直接转换为

(2)型参与运算。

2.3单项选择题

1.C语言中,常量0.5F在内存需占用字节存储。

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

2.下列符号中,合法的C常量是。

(A)097(B)0.5e+1.0(C)0x5FH(D)'\\'

3.C语言没有专门的逻辑变量,它表示逻辑真的方法是。

(A)TRUE(B)0(C)1     (D)一切非零数值

4.以下C常量错误的是。

(A)'\xX0d'(B)-1U(C)1e-2F(D)

5.以下不正确的字符串常量是。

(A)"12'12"(B)'abc'(C)"\\0"(D)""

6.逻辑运算符两侧运算对象的数据类型。

(A)只能是0或非0正数(B)可以是任何类型的数据。

(C)只能是整型或字符型数据。

(D)只能是0或1

7.下列符号中,合法的C常量是。

(A)‘\t’(B)079(C)3.5e2.1(D)0xch

2.4多项选择题

1.以下变量在内存中占2个字节的是。

(只考虑TC2.0)

(A)inta;(B)intb[2];(C)charc[2];(D)floatd[2];

2.C语言中,与常量'A'等效的常量表达式有

(A)65(B)'\x41'(C)'a'-32(D)0101

第三章简单C程序设计

3.1程序设计题

1.输入一个华氏温度,要求输出摄氏温度。

公式为

要求输出要有文字说明,取2位小数。

(教材习题4.9)

2.输入年增长率p,编程计算并输出经过多少年后,生产总值会翻一翻。

3.2单项选择题

1.已知实型变量a存贮的是一个0~1之间的实数,将a以两位小数百分比形式输出(如:

a=0.,则输出为34.75%)正确的打印语句是。

(A)printf(“%.2f%%”,a*100);(B)printf(“%.2f%”,a);

(C)printf(“%.2f%%”,a/100);(D)printf(“%.2f%%”,100*(a+0.5));

2.能正确输出字符A的语句是。

(A)putchar(‘\41’);(B)puthcar(“A”);(C)printf(“%d”,‘A’);(D)putchar(‘\101’);

第四章C语言的控制语句及基本程序设计技术(统计/计数、递推/迭代、数论问题、字符图形、搜索/穷举求解)

4.1程序分析题

1.若a=3,b=2,c=1,则执行下列if语句后,依次写出a、b、c的值。

if(a>b)a=b;

if(b>c)b=c;

elsec=b;c=a;

2.执行下列程序后,x和y的值分别是多少。

intx,y;

for(y=1,x=1;y<=50;y++)

{if(x>=10)break;

if(x%2==1)

{x+=5;continue;}

x-=3;

}

3.写出以下程序的输出结果。

#include

main()

{intc='A',a=0,k=1;

while((k+=2)<8)

{putchar(++c);a+=k;

}

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

return1;

}

4.下面程序的循环体共执行了多少次,输出的结果是什么?

#include"stdio.h"

voidmain()

{intm,n;

m=10;n=-1;

do{m++;n+=5;

if(!

(n%3))printf("%4d%4d\n",m,n);

}while(m>n);

}

5.若输入为ABCD↵,下面程序的输出是什么?

#include

voidmain()

{charch,n;

for(n=0;(ch=getchar())!

=10;n++)putchar(ch+32);

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

}

4.2单项选择题

1.以下程序的输出结果是  。

  x=0;doprintf(“%d”,x++);while(x<1);

 (A)0  (B)01  (C)012  (D)无任何显示

2.以下能正确计算10!

的程序段是。

(A)do{i=1;s=1;s=s*i;i++;}while(i<=10);

(B)do{i=1;s=0;s=s*i;i++;}while(i<=10);

(C)i=1;s=1;do{s=s*i;i++;}while(i<=10);

(D)i=1;s=0;do{s=s*i;i++;}while(i<=10);

3.若变量已有正确定义,程序a=0;for(i=1;i<=n;i++)for(j=0;j<=i;j++)a++;执行后,变量a的值是。

(A)n(n+1)/2(B)(n+1)(n+2)/2

(C)n(n-1)/2(D)n(n+3)/2

4.与语句if(a!

=0)…等效的语句是。

(A)if(!

a)… (B)if(a)… (C)if(a==0)…(D)if(a>=0||a<=0)…

5.break语句的作用是()。

(A)中止函数的执行(B)立即中止循环

(C)中止本次循环,直接开始下一次循环(D)从一个循环体直接跳转至另一个循环体内

4.3程序填空题

#include"stdio.h"

#include"

(1)"

main()

{intm,i,k;

for(m=2;m<=1000;m++)

{k=(int)sqrt(m)+1;

for(i=2;i<=k;i++)if(

(2))break;

if((3))printf("%5d",m);

}

4.4程序设计题

1.企业放发的奖金根据利润提成。

设企业的利润为I,提成标准如下:

I<10万元时,提成10%;

10万元<I≤20万元时,低于10万元部分仍按10%提成,高于10万元部分按7.5%提成;

20万元<I≤40万元时,低于20万元部分按前面方法提成,高于20万元部分按5%提成;

40万元<I≤60万元时,低于40万元部分按前面方法提成,高于40万元部分按3%提成;

60万元<I≤100万元时,低于60万部分按前面方法提成,高于60万部分按1.5%提成;

100万元<I时,低于100万元部分按前面方法提成,高于100万元部分按1%提成。

编程输入利润I,计算输出提成金额。

(教材习题5.8)

2.编写一个决定学生成绩的程序。

这个程序将读入一个学生的三次考试成绩(0-100),然后计算其平均值,并根据这个平均值决定学生的总成绩(用字母A,B,C,D,E来表示)。

字母成绩按如下规定来确定:

A平均成绩在90或90分以上

B平均成绩在80到89分

C平均成绩在70到79分

D平均成绩在60到69分

E平均成绩在60分以下。

(教材习题5.6)

输入若干整数,直到输入0时停止,统计并输出奇数的数目和偶数的数目。

3.输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。

(教材习题6.2)

4.计算s=

要求n值由用户输入。

(教材习题6.4)

5.打印水仙花数(教材习题6.6)。

6.输入x值,计算

,要求最后一项绝对值小于10-6时停止计算。

7.用公式

计算π的近似值,计算时取1000个因子。

8.韩信点兵:

有兵一队,五伍剩一,六伍剩五,七伍剩四,十一伍剩十,问兵几何?

9.有30个男女小孩同在一家饭馆进餐,共花了50元,其中每男宾3元,女宾2元,小孩1元。

问男、女、小孩各多少?

10.将一张面值100元的人民币兑换为5元、2元、1元和5角的零钞,要求零钞总数不超过40张且每种至少1张,求所有兑换方案。

11.有一个算式缺少了四个数字(如下所示),请编程找出这四个数字。

  10566+(475-349)*16=

12.打印如下图形。

要求输入最大的字母来控制打印行数。

比如,下图应该输入字母D。

 A

B-B

 C―――C

D―――――D

 C―――C

B-B

 A

13.如果一个自然数的所有因子之和等于该数本身,称这个数为“完数”。

编程输出1000以内的全部完数。

要求输出格式如下:

(教材习题6.7)

28=1+2+4+7+14

第五章数组

5.1单项选择题

1.C语言的数组下标默认从开始。

(A)1(B)0(C)任意整数(D)有时为1,有时为0

2.若有定义inta[5],k=4;以下表达式没有安全隐患的是。

(A)a[k-1](B)a[-1](C)a[++k];(D)a[5]

5.2多项选择题

1.以下能对二维数组a正确定义并进行初始化的语句有。

(A)inta[2][3]={{1,1},{2}};(B)inta[3][]={{1},{2},{3}};

(C)inta[][]={1,2,3,4,5,6};(D)inta[][3]={{1,1,1},{2,2},{3}};

5.3程序设计题

1.求一个3⨯3矩阵对角线元素之和。

(教材习题7.3)

2.一个数组中的值按逆序重新存放。

(教材习题7.5)

3.用二维数组实现如下格式杨辉三角形的打印。

(教材习题7.6)

4.有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。

(教材习题10.5)

第六章指针初步

6.1程序分析题

1.写出下面程序的运行结果。

#include"stdio.h"

inta[4]={1,2,3,4};

voidmain()

{int*p=a,m,n;

for(m=3;m>=0;m--)

for(n=0;n<=m;n++)printf("%d",*(p+n));

}

2.#include“stdio.h”

#defineN8

voidmain()

{inta[N],k,*p;

for(k=0;k

p=a;

for(k=0;k

if(a[k]>0)*p++=a[k];

while(p>a)printf(“%d”,――*p);

若该程序的输入为0-96-14543-521,则程序的输出是什么?

6.2单项选择题

1.有定义staticinta[]={0,1,2,3,4},*p=a+2;表达式*++p的值为。

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

2.已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是。

(A)k=*ptr1+*ptr2;(B)ptr2=k;

(C)ptr1=ptr2;(D)k=*ptr1*(*ptr2);

3.若有定义:

inta[10],*p=a;,则p+5表示(8)。

(A)元素a[5]的地址(B)元素a[5]的值(C)元素a[6]的地址(D)元素a[6]的值

第七章函数(含习题课)

7.1程序分析题

1.下面程序的运行结果是。

voidfl(void)

{intx=1;

staticy=2;

x++;

y++;

printf("%d,%d\n",x,y);

}

main()

{intk;

for(k=1;k<=3;k++)fl();

}

2.下列程序的运行结果是。

intd=1;

voidfl(intp)

{intd=2;

d+=p++;

printf("%d",d);

}

main()

{inta=3;

fl(a);

d+=a++;

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

}

3.下列程序的运行结果是。

#include

inta=10,c=5;

main()

{inta=1,b=2,d=4,e=5;

printf("%d\n",func((a+b,b*c,c%d),(d,e/b)));

}

intfunc(intx,inty)

{

returnx+y;

}

4.下面程序的运行结果是什么?

#include

staticintx=150;

voidshow(intx,inty)

{printf("x=%d,y=%d\n",x,y);

x=300;y=400;

}

voidmain()

{intx=100,y=200;

show(y,x);

printf("x=%d,y=%d\n",x,y);

}

5.下面程序的运行结果是。

voidfl(void)

{intx=1;

staticy=2;

x++;

y++;

printf("%d,%d\n",x,y);

}

voidmain()

{intk;

for(k=1;k<=3;k++)fl();

}

7.2程序填空题

1.以下函数f的功能是实现N⨯N阶方阵转置,请填空。

#defineN8

voidswap()

{inttemp=*p;

*p=*q;*q=temp;

}

voidf(int)

{inti,j;

for(i=0;i

for(j=0;j<;j++)swap(&a[i][j],);

}

2.下程序的功能是求M行N列矩阵的最大值元素,请填空。

#include"stdio.h"

#defineM5

#defineN4

float*getmax()

{inti,j;float*pmax;

pmax=;

for(i=0;i*pmax)pmax=;

return();

}

floata[M][N];

voidmain()

{inti,j;

for(i=0;i

printf("max=%.2f\n",*getmax());

}

3.bubsort函数的功能是实现对N元整型数组冒泡排序(由大到小),请填空使之完善。

#defineN10

inta[N];

voidbubsort()

{inti,j,t;

for(i=1;i

for(j=0;j<;j++)

if(a[j]a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=;}

}

7.3填空题

1.C语言中变量有4种存储类型,即extern、static、register和。

2.在结构化程序设计中,只需使用三种程序结构,分别是顺序结构、    

(1)   结构和   

(2)    结构。

7.4单项选择题

1.C语言中,形参与实参之间的数据传递方式是。

(A)只能按值传递(B)只能按地址传递

(C)由使用者指定传递方式(D)既可以按值传递也可以按地址传递

2.若有函数声明为:

voidfunc(double*p);则以下函数调用正确的是。

(A)doublex;f(x);(B)doublex;f(*x);(C)doublex;f(&x);(D)intx;f(&x);

3.以下语句用于函数返回的是。

(A)break;(B)continue;(C)return;(D)quit;

4.以下关于C语言static型变量的说法正确的是。

(A)都是局部变量(B)都是全局变量(C)存储在动态数据区(D)初值自动为0

5.定义C函数时,不给出返回值类型,则默认的返回值类型是。

(A)float(B)void(C)int(D)NULL指针

7.5多项选择题

1.若有函数原型voidf(inta[]);和数组定义intb[10];则以下函数调用正确的是。

(A)f(b[0]);(B)f(&b[0]);(C)f(b);(D)f(b+2);

2.若定义交换实型变量值的函数swap如下,以下函数调用正确的是。

 voidswap(float*p,float*q){floatt=*p;*p=*q;*q=t;}

main(){floata[4],x,y;…}

(A)swap(x,y);(B)swap(&x,&y);

(C)swap(a+1,a+2);(D)swap(*a,*(a+1));

7.6程序设计题

1.写两个函数,分别求两个整数的最大公约数与最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。

(教材习题8.1)

2.写一个判素数的函数,在主函数输入一个整数,输出是否是素数的信息。

(教材习题8.3)

3.写一个函数,实现N个整数的由小到大排序,要求用改进冒泡排序方法。

4.实现长整数按数位分解打印,如:

输入34289,输出34289。

(要求用递归函数实现)

 

字符串处理专题

7_1.程序分析题

1.#include”stdio.h”

voidmain()

{chara[61],*s;intn;

gets(a);

for(s=a;*s;s++)if(*s>=’A’&&*s<=’Z’)*s+=32;

puts(a);

}

若程序的输入为SWJTU,则输出结果为。

2.若程序输入为ABCD,下面程序的输出结果是。

#include"stdio.h"

#include"string.h"

voidmain()

{chars[81],*p,*q,t;

gets(s);

p=s;q=s+strlen(s)-1;

while(p

puts(s);

}

3.下面程序的输出是。

#include"stdio.h"

  voidmain()

{chara[40]="administrators",*p;

for(p=a;*p!

='i';p++)putchar(*p-32);

} 

7_2.单项选择题

1.以下语句,没有语法错误的是。

(A)a*=3+2++;(B)inta[5];++a;

(C)chars[10];strcpy(s,""); (D)ifa>0a=1;elsea=0;

2.C语言存贮字符串时,用特殊字符()表示字符串结束。

(A)’\x0d’(B)’0’(C)’\n’(D)’\0’

3.以下选项中,不能正确赋值的是。

(A)chars[10];s="Hello";(B)chars[]={'H','e','l','l','o','\0'};

(C)chars[10]="Hello";(D)char*s="Hello\n";

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1