精通C程序设计教程各章习题Word文档格式.docx

上传人:b****5 文档编号:21778096 上传时间:2023-02-01 格式:DOCX 页数:31 大小:82.05KB
下载 相关 举报
精通C程序设计教程各章习题Word文档格式.docx_第1页
第1页 / 共31页
精通C程序设计教程各章习题Word文档格式.docx_第2页
第2页 / 共31页
精通C程序设计教程各章习题Word文档格式.docx_第3页
第3页 / 共31页
精通C程序设计教程各章习题Word文档格式.docx_第4页
第4页 / 共31页
精通C程序设计教程各章习题Word文档格式.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

精通C程序设计教程各章习题Word文档格式.docx

《精通C程序设计教程各章习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《精通C程序设计教程各章习题Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。

精通C程序设计教程各章习题Word文档格式.docx

(J)1E1(K)'

\'

(L)09E05

(M)0X0AaA(N)15.2000e0(O)abH(P)0110Lu

(Q)1e1f(R)0.1L(S)80h(T)0xAUL

2.10写出以下表达式的求值结果。

设inta=3,b=2,c=4,d=0;

(1)a++;

(2)a+b<

c&

&

(b=d)

(3)!

(d=a)&

(a=b)

(4)!

a+c1||b+c/3

(5)!

!

a+b

(6)012<

<

3+1

(7)sizeof(32L)

(8)sizeof(0.005f)

(9)sizeof(7.0)

(10)sizeof(double)

(11)sizeof('

A'

(12)sizeof('

2)

(13)3<

a<

c

(14)3<

a&

(15)a&

b|c^++d>

>

1

(16)b?

a:

~d

(17)035+0x10/a%b/b

(18)10/3+9%3

(1)/5

(19)10&

6|5&

a

(20)10&

6|!

b||c

2.11若有定义doublex=2.5,y=4.7;

inta=7;

表达式x+a%3(int)(x+y)%2/4的值是。

2.12若有定义inta=2,b=3;

doublex=3.5,y=2.5;

表达式(float)(a+b)/2+(int)x%(int)y的值是。

2.13若有定义inta=3,b=2,c=0;

执行下列表达式,写出变量值和表达式值。

(1)c=ab;

则a=,b=,c=,表达式=

(2)c=++ab;

(3)b=c(b);

2.14若a=10,b=7,写出下列表达式的值和变量a的值。

(1)a/=aa;

(2)a=a;

(3)a/=2+3;

(4)a%=n%=4;

(1)a<

=n++/4(6)a=a,a=b,a++;

2.15写出下列数学表达式对应的C表达式。

(1)

(2)

(3)

(4)

(5)

    (6)

2.16写出以下程序的输出(请上机验证)。

#include<

stdio.h>

voidmain()

{inta=157;

unsignedlongb=0xa8d5b;

charc='

a'

;

doublex=30.57;

printf("

%6d,%08X,%o,%+10d\n"

a,a,a,a);

%lu,b=%10lx,%+5lu,%08lX\n"

b,b,b,b);

c=%3c\nc=%d\nc=%04x\n"

c,c,c);

%f,%g,%e,%E,%10.3f,%.3e\n"

x,x,x,x,x,x);

%.f,%+0d\n"

8,4,x,6,a);

}

2.17如果希望a=15,b=38.7,c='

x=1e6,写出下面程序的正确输入格式(请上机验证)。

#include"

stdio.h"

{inta;

floatb;

charc;

doublex;

scanf("

%d,%f%c,x=%lf"

&

a,&

b,&

c,&

x);

a=%d,b=%.1f,c=%c,x=%.0E\n"

a,b,c,x);

2.18下列程序的输入输出语句虽然不存在任何语法问题,但无法正确输入/输出某些变量,请指出程序中的问题并改正。

{longa;

intb;

floaty;

%d%d%f%f"

a,b,x,y);

a=%o,b=%.0f,x=%0G,y=%Lg\n"

2.19输入圆的半径r,编程计算并输出圆的周长和面积。

2.20输入三角形的三边长a,b,c,编程计算并输出三角形的面积。

(注意:

输入a,b,c时,应保证三角形两边之和大于第三边)三角形面积计算公式如下:

  

2.21购房按揭贷款:

设贷款本金为a,贷款期数为n(以月为单位),贷款月利率为p,采用等额本息法还款,问每月还款额是多少?

编程输入a,n,p,输出每月还款额。

比如,输入a=100000,n=120,p=0.004,表示本金10万元,贷款期限为10年(120个月,月利率为0.4%。

(程序假设月利率在贷款期限内恒定不变)。

提示:

首先从数学上分析每月固定还款额x与a,n,p的关系式,然后求解,分析方法提示如下:

  设第i个月开始时,还有本金ai,则第i个月结束时,剩余本金即第i+1月开始时的本金ai+1=ai(1+p)x。

i=1,2,3,…,n

显然,有a1=a,an+1=0。

第三章习题

3.1C语言的三种循环语句是什么?

它们各自有什么特点?

3.2break、continue语句与goto语句有何区别?

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

if(a>

b)a=b;

if(b>

c)b=c;

elsec=b;

c=a;

3.4执行下列程序后,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.5写出以下程序的输出结果。

main()

{intc='

a=0,k=1;

while((k+=2)<

8)

{putchar(++c);

a+=k;

printf("

%d\n"

a);

return1;

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

{intm,n;

m=10;

n=1;

do{m;

n+=5;

if(!

(n%3))printf("

%4d%4d\n"

m,n);

}while(m>

n);

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

{charch,n;

for(n=0;

(ch=getchar())!

=10;

n++)putchar(ch+32);

n);

3.8若a,n,i,j,k都是int型变量,且n值大于0。

执行下面的程序后,变量a的值是多少?

(用n表达变量a的值)

a=0;

for(i=1;

i<

n;

i++)

for(j=1;

j<

=i;

j++)

fo(k=1;

k<

=j;

k++)

a++;

3.9假设变量已有正确定义,以下程序能够正确计算p=n!

的有。

(A)for(p=1,k=0;

=n;

p=k);

(B)p=1;

k=n;

while(p=k,k);

(C)p=0;

do{k=1;

p=k++;

}while(k<

=n);

(D)p=k=1;

dop=k;

while(++k>

(E)p=0;

for(k=1;

k++)p=k;

(F)for(p=1,k=0;

p=++k);

3.10以下程序的功能是输入10个字符,如果输入的是数字字符0,则输出字符;

如果是数字字符1-9,则原样输出;

如果输入的是其它字符则不输出,但要求用变量s累加计算它们的ASCII码平方和。

全部字符输入结束后,输出s的值。

有同学写了一个程序,编译完全正确,但无法得到所要求的结果,请帮助这位同学改正程序中的问题。

{charc,i,s;

10;

i++);

{c=getchar();

if('

1'

=c<

='

9'

)putchar(c);

if(c='

0'

)putchar('

'

);

elses=cc;

\ns=%d\n"

s);

3.11编写一个程序,使它能够将用户输入的四个整数按大小次序排列。

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

设企业的利润为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,计算输出提成金额。

3.13用switch语句和if语句两种方法描述以下计算要求:

0≤t<

y=t²

11≤t<

2

2t+12≤t<

3

3.14编程输出一个周期的余弦函数cosx的值,要求每隔/20输出一个函数值。

3.15编程输出以下计算结果。

  0.020.220.420.620.821.021.221.421.621.821.922.02

3.16输入一个实数a和一个整数m,不使用系统库函数,计算并输出am。

比如:

输入a值为3,m值为3,则输出27.0000;

输入a值为2,m值为3,则输出0.1250。

3.17编程求出一个长整数的十进制位数。

比如,输入35076,输出为5;

   输入为24,输出为2。

3.18输入一个正长整数,按相反次序输出该整数的各位数字。

比如,输入为35076,输出是67053。

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

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

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

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

B平均成绩在80到89分

C平均成绩在70到79分

D平均成绩在60到69分

F平均成绩在60分以下

程序在显示了一个学生的字母成绩后,将继续对下一个学生的成绩进行处理,直到用户输入的学生成绩为负数时停止。

3.20编程输入两个日期y1,m1,d1和y2,m2,d2,计算并输出这两个日期相距的天数。

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

4.2输入10个实数,输出这10个数的平均值。

4.3计算s=

要求n值由用户输入。

4.4根据本章打印杨辉三角形例题中组合数的递推计算方法计算组合数

,要求输入n、m值,输出组合数。

程序中应对输入的n,m有效性进行检查。

4.5输入x值,计算

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

4.6用公式

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

4.7计算

的前n1项和。

要求x和n值由键盘输入。

4.8输入x值(|x|<

1),计算

要求计算到最一项绝对值小于106时停止。

4.9一个小球从高度为h米处自由落下,每次落地后反弹回原高度的一半再落下。

求小球第k次落地时,总共走过了多少米?

第k次落地反弹后,可以反弹到多高?

4.10输入自然数n,输出其和等于n的所有不增的正整数和式。

如n=4,程序将输出:

4=4

4=3+1

4=2+2

4=2+1+1

4=1+1+1+1

要求程序完成一次输出后,继续提示用户输入n值,直到用户输入0或负数时才停止运行。

4.11编写程序,输入一个自然数n,将n分解成质因子连乘形式。

要求程序完成一次输出后,继续提示用户输入自然数,只有当输入的自然数是0或负数时,程序才停止运行。

4.12“有物不知何数,三三数剩二,五五数剩三,七七数剩二”问物有多少?

(引自《孙子算经》)编程输出1000以内所有的解。

4.13韩信点兵:

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

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

问男、女、小孩各多少?

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

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

  10566(475349)16=416354

4.17打印如下图形。

要求把图形放到屏幕中央并且打印行数n(n=1,2,…,9)由用户输入。

121

12321

1234321

123454321

4.18打印如下图形。

打印行数n由有户输入。

要求把图形放在屏幕中央。

aba

abcba

abcdcba

            abcdedcba

4.19打印如下图形。

要求总行数n由键盘输入。

注意:

n必须是奇数。

4.20打印如下图形。

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

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

 A

B-B

 C―――C

D―――――D

B-B

 A

4.21打印如下图形。

要求打印行数n由用户输入。

124711

235812

4571014

78101317

1112141721

4.22自拟格式,打印九九乘法表。

4.23p和q都是素数,若q=p2,那么p,q对被称为双素数。

例如,3,5就是双素数。

编程求1000以内所有的双素数。

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

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

要求输出格式如下:

28=1+2+4+7+14

4.25输入若干个自然数,直到输入0时停止,求所有自然数的最大公约数与最小公倍数。

4.26求2-10000中的守形数。

所谓守形数,是指某数平方的低位就是该数本身。

比如,52=25, 5是25的低位,因此5就是守形数;

762=5776,76是5776的低位,因此76也是守形数。

要求输出格式形如:

76:

7676=5776

4.27两个自然数a,b(ab),若a的因子和等于b,b的因子和等于a,称a,b为亲密数对,求1000以内

第五章习题

5.1建立一个N元实型数组,输出最大值与最小值元素的下标。

5.2编写程序,输入N个学生的成绩并用一维数组保存。

计算并输出平均成绩、最高分以及最低分。

5.3编程建立并输出一个N阶单位矩阵。

5.4建立一个整型一维数组,然后重排数组元素,使得所有奇数排在偶数前面。

5.5用一维数组存储素数,求1000以内的素数。

为了提高算法效率,在判断整数m是否是素数时,只需要用已经找到并存入数组中的素数去试除m。

5.6输入最多不超过15个正整数,求这些整数的最大公约数与最小公倍数。

要求用数组求解。

5.7写一个程序,输入一个N阶实数方阵,实现矩阵转置并输出。

5.8在屏幕上打印出以下杨辉三角形,要求打印出的行数n由用户输入。

1  1

1  2  1

1  3  3  1

1  4  6  4  1

1  5  10 10  5  1

  (用二维数组求解)

5.9删除数组中小于0的所有元素,要求不另辟数组空间实现算法。

数组原来为:

529311071263

则删除小于0的元素后,数组变为93126

5.10输出一个二维数组中的鞍点(i0,j0)。

鞍点满足两个条件,一是在i0行它是最大元,二是在j0列它是最小元。

如果没有鞍点,输出提示信息。

5.11编程判断一个N阶方阵是否为对称矩阵。

5.12以下程序的功能是重新排列数组a[N]的元素,使相等元素放在一起,并且保持它们在数组中第一次出现的相对次序。

例如:

重排前:

4,3,4,2,4,5,2,4,3,1,5,4

重排后:

4,4,4,4,4,3,3,2,2,5,5,1

程序采用的算法是先删去重复元素,并统计各不同元素出现的次数,再按照各元素重复次数写回到数组a中。

#defineN20

{inta[N],b[N],c[N],i,j,k,t;

for(j=0;

N;

++j)

{b[j]=c[j]=1;

%d"

a[j]);

for(i=0;

if()

{a[++k]=;

for(j=i+1;

j++)if(a[j]==a[k]){b[j]=0;

;

t=N1;

for(i=k;

i>

=0;

i)

j;

j++)=a[i];

for(j=0;

j++)printf("

%5d"

a[j]);

第六章习题

6.1指针的三个属性是什么?

6.2指出下面程序中的指针常量标识符,并说明含义。

math.h>

{doublex,y;

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

intp=NULL;

scanf("

%lf"

y);

x=fabs(y);

p=&

a[1];

x=%.2f\n"

x);

6.3若有定义floata[7],p=a+3;

写出以下表达式代表的数组元素。

(1)a;

  

(2)p;

  (3)(a+2);

  (4)(p2);

(5)(p2);

 (6)p[1];

(7)p[1];

(8)p[3];

6.4若有定义longa[10],i,p;

以下程序能够正确输入数组元素的是。

(A)i=0;

while(i<

10)scanf("

a[i++]);

(B)for(i=0,p=a;

%ld"

p[i]);

(C)for(p=a;

p<

=a+9;

p++)scanf("

p);

(D)p=a;

doscanf("

p++);

while(pa>

=10);

6.5以下程序能够安全正确地建立字符串的是。

(A)main(){chars[41];

%s"

s[0]);

(B)main(){chars[41];

%c"

(C)main(){chars;

(D)main(){chars[41],p=s;

p);

6.6定义三个变量用于存储读入的三个整数,另定义三个指向整型量的指针变量,并利用它们实现将读入的三个整数按值从小到大顺序输出。

6.7利用指针编写一个程序,使它能够从键盘读入4个数,并找出它们的平均值、最大值和最小值,然后将结果显示到屏幕上。

要求不能使用数组。

6.8编写一个程序,要求当用户输入两个字符串后,程序将这两个字符串连接起来输出。

6.9由用户输入一串字符,将其中大写字母变成小写字母,小写字母变成大写字母,并按倒序输出。

要求用下标和指针两种方法求解。

6.10编写一个程序,使它能够统计用户输入的字符串中的数字字符数目。

6.11编写程序,实现N元数组元素循环左移m次。

N=8,输入8个元素为12345678

则循环左移三次的输出结果是45678123

(要求用下标和指针两种方法求解)

6.12编写一个程序,使它能够模拟摩斯译码,即

将字母ABCDEFGHIJKLMNOPQRSTUVWXYZ

翻译成ZYXWVUTSRQPONMLKJIHGFEDCBA

例如,输入如下密码:

NZWZN,RZNZWZN

将译码为:

MADAM,IAMADAM

该程序要求用户从键盘输入一个按照以上密码规定编写的字符串,然后对其进行译码并输出结果。

6.13编写一个程序,输入一个字符串,删除字符

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

当前位置:首页 > 初中教育

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

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