求C语言程序设计学习指导(苏小红) 第3版.pdf

求C语言程序设计学习指导(苏小红) 第3版.pdf,第1张

中文名:C语言程序设计

作者:吴国凤

图书分类:科技

资源格式:PDF

版本:高清文字版

出版社:合肥工业大学出版社

书号:9787565008405

发行时间:2012年8月1日

地区:大陆

语言:简体中文

本书是高清文字版非扫描拒绝模糊享受清晰!

无法下载的用户请到评论区一楼查看网盘地址!

内容介绍:

本文章由第1章 C语言概述、第2章 数据类型、运算符与表达式等组成。

内容截图:

目录:

第1章 C语言概述10

11 程序设计与C语言10

12 C程序初识12

13 程序设计方法与算法16

14 C程序运行环境与学习方法20

15 例题精解24

16 本章小结25

习题25

第2章 数据类型、运算符与表达式27

21 C语言基础27

22 常量30

23 变量32

24 基本运算符与表达式33

25 不同数据类型间的转换和运算39

26 例题精解41

27 本章小结42

习题43

第3章 顺序结构程序设计45

31 C语言中的语句45

32 数据的输入输出47

33 例题精解54

34 本章小结57

习题57

第4章 选择结构程序设计62

41 关系运算和逻辑运算62

42 if语句65

43 switch语句70

44 例题精解72

45 本章小结75

习题75

第5章 循环结构程序设计80

51 概述80

52 while语句80

53 dowhile语句82

54 for语句84

55 循环嵌套88

56 break语句、continue语句和goto语句与标号90

57 例题精解92

58 本章小结97

习题97

第6章 数组105

61 一维数组105

62 二维数组108

63 字符数组和字符串112

64 例题精解117

65 本章小结121

习题122

第7章 指针126

71 指针的基本概念126

72 指针与数组133

73 指针数组和指向指针的指针142

74 例题精解147

75 本章小结149

习题150

第8章 函数154

81 函数的基本概念154

82 函数参数和函数的值155

83 函数的调用157

84 数组作为函数参数158

85 指针作为函数参数161

86 嵌套调用与递归调用163

87 存储类型166

88 命令行参数170

89 例题精解171

810 本章小结175

习题175

第9章 编译预处理181

91 宏定义181

92 文件包含184

93 条件编译185

94 例题精解186

95 本章小结188

习题189

第10章 结构体与共用体192

101 结构体192

102 共用体208

103 枚举211

104 用户定义类型212

105 例题精解213

106 本章小结214

习题215

第11章 位运算219

111 位运算的概念219

112 位运算219

113 位域(位段)223

114 本章小结226

习题226

第12章 文件228

121 文件概念228

122 文件指针229

123 文件的打开与关闭230

124 文件的读写231

125 文件的定位 *** 作238

126 文件的错误检测240

127 本章小结241

习题241

附录243

1 常用字符与ASCII代码对照表243

2 C语言运算符的优先级与结合性244

3 C库函数245

4 常见错误信息表252

下载地址:

C程序设计(第三版)[谭浩强著]课后题答案!!!(2009-06-04 19:57:53)标签:教育 分类:学习

15请参照本章例题,编写一个C程序,输出以下信息:

Very Good!

解:

mian()

{printf(“”);

printf(“\n”);

printf(“Very Good!\n”);

printf(“\n”);

printf(“”);

}

16 编写一个程序,输入a、b、c三个值,输出其中最大值。

解:

mian()

{int a,b,c,max;

printf(“请输入三个数a,b,c:\n”);

scanf(“%d,%d,%d”,&a,&b,&c);

max=a;

if(max<b)

max=b;

if(max<c)

max=c;

printf(“最大数为:“%d”,max);

}

第三章

36写出以下程序运行的结果。

main()

{char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;

printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);

printf(“\t\b%c %c”,c4,c5);

}

解:

aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc

AㄩN

37 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

解:

#include <stdioh>

main()

{ char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;

c1+=4;

c2+=4;

c3+=4;

c4+=4;

c5+=4;

printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);

}

运行结果:

密码是Glmre

39求下面算术表达式的值。

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

设x=25,a=7,y=47

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

设a=2,b=3,x=35,y=25

(1)25

(2)35

310写出程序运行的结果。

main()

{int i,j,m,n;

i=8;

j=10;

m=++i;

n=j++;

printf(“%d,%d,%d,%d”,i,j,m,n);

}

解:

9,11,9,10

312 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。

(1)a+=a (2) a-=2 (3) a=2+3 (4)a/=a+a

(5) a%=(n%=2),n的值等于5

(6)a+=a-=a=a

解:

(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0

第四章

4.4若a=3,b=4,c=5,x=12,y=24,z=-36,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。

a=_3_ _b=_4_ _c=_5

x=1200000,y=2400000,z=-3600000

x+y=_3600_ _y+z=-120_ _z+x=-240

c1=ˊaˊ_or_97(ASCII)

c2=ˊbˊ_or_98(ASCII)

main()

{int a=3,b=4,c=5;

long int u=51274,n=128765;

float x=12,y=24,z=36;

char c1=’a’,c2=’b’;

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

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

printf("x+y=%52f y+z=%52f z+x=%52f\n",x+y,y+z,z+x);

printf("u=%6ld n=%9ld\n",u,n);

printf("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)");

printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)");

}

4.7用scanf下面的函数输入数据,使a=3,b=7,x=85,y=7182,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?

main()

{

int a,b;float x,y;char c1c2;

scanf("a=%d_b=%d",&a,&b);

scanf("_x=%f_y=%e",&x,&y);

scanf("_c1=%c_c2=%c",&c1,&c2);

}

a=3_b=7

_x=85_y=7182

_c1=A_c2=a

4.8设圆半径r=15,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。

main()

{float r,h,C1,Sa,Sb,Va,Vb;

scanf("%f,%f",&r,&h);

C1=2314r;

Sa=314rr;

Sb=4Sa;

Va=4314rrr/3;

Vb=Sah;

printf("C1=%2f\n",C1);

printf("Sa=%2f\nSb=%2f\nVa=%2f\nVb=%2f\n",Sa,Sb,Va,Vb);

}

4.9输入一个华氏温度,要求输出摄氏温度。公式为

c=5(F-32)/9

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

main()

{float F,c;

scanf("%f",&F);

c=5(F-32)/9;

printf("c=%2f",c);

}

4.10编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:

char c1,c2;

int c1,c2;

是否无条件的等价?

#include"stdioh"

main()

{char c1,c2;

c1=getchar();c2=getchar();

putchar(c1);putchar(’\n’);putchar(c2);putchar(’\n’);

}

#include"stdioh"

main()

{char c1,c2;

c1=getchar();c2=getchar();

printf("c1=%d c2=%d\n",c1,c2);

printf("c1=%c c2=%c\n",c1,c2);

}

第五章

51 什么是算术运算?什么是关系运算?什么是逻辑运算?

解:略。

52 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?

解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。例如3&&5的值为“真”,系统给出3&&5的值为1。

53 写出下面各逻辑表达式的值。设a=3,b=4,c=5。

(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

解:

(1) 0

(2) 1

(3) 1

(4) 0

(5) 1

54 有3个整数a、b、c,由键盘输入,输出其中最大的数。

解:

方法一

#include <stdioh>

main()

{ int a,b,c;

printf("请输入3个整数:");

scanf("%d,%d,%d",&a,&b,&c);

if(a<b)

if(b<c) printf("max=%d\n",c);

else printf("max=%d\n",b);

else if(a<c) printf("max=%d\n",c);

else printf("max=%d\n",a);

}

方法二:使用条件表达式,可以使程序更加简明、清晰。

程序如下:

#include <stdioh>

main()

{ int a,b,c,temp,max;

printf("请输入3个整数:");

scanf("%d,%d,%d",&a,&b,&c);

temp=(a>b)a:b;

max=(temp>c)temp:c;

printf("3个整数的最大数是%d\n”,max);

}

55 有一函数:

写一程序,输入x值,输出y值。

解:

#include <stdioh>

main()

{int x,y;

printf("输入x:");

scanf("%d",&x);

if(x<1)

{ y=x;

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

}

else if (x<10)

{ y=2x-1;

printf("x=%3d, y=2x-1=%d\n",x,y);

}

else

{ y=3x-11;

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

}

}

56 给一个百分制成绩,要求输出等级’A’、’B’、’C’、’D’、’E’。90分以上为’A’,80~90分为’B’,70~79分为’C’,60分以下为’D’。

解:

程序如下:

#include <stdioh>

main()

{ float score;

char grade;

case 2:

printf("请输入学生成绩:");

scanf("%f",&score);

while(score>100||(score<0)

{ printf("\n输入有误,请重新输入:");

scanf("%f",&score);

}

switch((int)(score/10))

{ case 10:

case 9: grade=’A’;break;

case 8: grade=’B’;break;

case 7: grade=’C’;break;

case 6: grade=’D’;break;

case 5:

case 4:

case 3:

case 1:

case 0: grade=’E’;

}

printf("成绩是%51f,相应的等级是%c。\n",score,grade);

}

说明:对输入的数据进行检查,如小于0或大于100,要求重新输入。(int)(score/10)的作用是将 (score/10) 的值进行强制类型转换,得到一个整型值。

57 给定一个不多于5位的正整数,要求:① 求它是几位数;② 分别打印出每一位数字;③ 按逆序打印出各位数字。例如原数为321,应输出123。

解:

#include <stdioh>

main()

{ long int num;

int indiv,ten,hundred,thousand,ten_thousand,place;

printf("请输入一个整数(0~99999):");

scanf("%ld",&num);

if (num>9999) place=5;

else if(num>999) place=4;

else if(num>99) place=3;

else if(num>9) place=2;

else place=1;

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

ten_thousand=num/10000;

thousand=num/1000%10;

hundred=num/100%10;

ten=num%100/10;

indiv=num%10;

switch(place)

{ case 5: printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);

printf("\n反序数字为;");

printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);

break;

case 4: printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);

printf("\n反序数字为:");

printf("%d%d%d%d\n",indiv,ten,hundred,thousand);

break;

case 3: printf("%d,%d,%d",hundred,ten,indiv);

printf("\n反序数字为:");

printf("%d%d%d\n",indiv,ten,hundred);

break;

case 2: printf("%d,%d",ten,indiv);

printf("\n反序数字为:");

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

break;

case 1: printf("%d",indiv);

printf("\n反序数字为:");

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

break;

}

}

58 企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10% ;利润高于10万元,低于20万元(100000<I≤200000)时,其中10万元按10%提成,高于10万元的部分,可提成75% ;200000<I≤400000时,其中20万元仍按上述办法提成(下同),高于20万元的部分按5%提成;400000<I≤600000时,高于40万元的部分按3%提成;600000〈I≤1000000时,高于60万的部分按15%提成;I>1000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。

解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按75%提成。

(1) 用if语句编程序。

#include <stdioh>

main()

{ long i;

float bonus,bon1,bon2,bon4,bon6,bon10;

bon1=10000001;

bon2=bon1+1000000075;

bon4=bon2+200000005;

bon6=bon4+200000003;

bon10=bon6+4000000015;

printf("请输入利润i:");

scanf("%ld",&i);

if(i<=100000)

bonus=i01;

else if(i<=200000)

bonus=bon1+(i-100000)0075;

else if(i<=400000)

bonus=bon2+(i-200000)005;

else if(i<=600000)

bonus=bon4+(i-400000)003;

else if(i<=1000000)

bonus=bon6+(i-600000)0015;

else

bonus=bon10+(i-1000000)001;

printf(”奖金是%102f\n",bonus);

}

此题的关键在于正确写出每一区间的奖金计算公式。例如利润在10万元至20万时,奖金应由两部分组成:①利润为10万元时应得的奖金。即100000ⅹ01;②10万元以上部分应得的奖金。即(num-100000)ⅹ0075。同理,20万~40万这个区间的奖金也应由两部分组成:①利润为20万元时应得的奖金,即100000ⅹ01ⅹ10万ⅹ0075;②20万元以上部分应得的奖金,即(num-200000)ⅹ005。程序中先把10万、20万、40万、60万、100万各关键点的奖金计算出来,即bon1、bon2、bon4、bon6、hon10;然后再加上各区间附加部分的奖金。

(2) 用switch语句编程序。

输入利润i,确定相应的提成等级branch

根据branch确定奖金值

0 奖金=i01

1 奖金=bon1+(i-105)0075

2 奖金=bon2+(i-2105)005

3

4 奖金=bon4+(i-4105)003

5

6 奖金=bon6+(i-6105)0015

7

8

9

10 奖金=bon10+(i-106)001

输出奖金

#include <stdioh>

main()

{ long i;

float bonus, bon1, bon2, bon4, bon6, bon10;

int c;

bon1=10000001;

bon2=bon1+1000000075;

bon4=bon2+200000005;

bon6=bon4+200000003;

bon10=bon6+4000000015;

printf("请输入利润i:");

scanf("%ld",&i);

c=i/100000;

if(c>10) c=10;

switch(c)

{ case 0: bonus=101;break;

case 1: bonus=bon1+(i-100000)0075;break;

case 2 :

case 3: bonus=bon2+(i-200000)005; break;

case 4:

case 5: bonus=bon4+(i-400000)003;break;

case 6:

case 7:

case 8:

case 9: bonus=bon6+(i-600000)0015;break;

case 10: bonus=bon10+(i-1000000)001;

}

printf("奖金是%102f",bonus);

}

59 输入4个整数,要求按由大到小的顺序输出。

解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。

#include <stdioh>

main()

{ int t,a,b,c,d;

printf("请输入4个整数:");

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

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

if(a>b) {t=a; a=b; b=t;}

if(a>c) {t=a; a=c; c=t;}

if(a>d) {t=a; a=d; d=t;}

if(b>c) {t=a; b=c; c=t;}

if(b>d) {t=b; b=d; d=t;}

if(c>d) {t=c; c=d; d=t;}

printf("排序结果如下:\n");

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

}

510 有4个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1。这4个塔的高度分别为10m。塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。

程序如下:

#include <stdioh>

main()

{ int h=10;

float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4;

printf("请输入一个点(x,y):");

scanf("%f,%f",&x,&y);

d1=(x-x1)(x-x1)+(y-y1)(y-y1);

d2=(x-x2)(x-x2)+(y+y2)(y+y2);

d3=(x+x3)(x+x3)+(y-y3)(y-y3);

d4=(x+x4)(x-x4)(y+y4)(y+y4);

if(d1>1&&d2>1&&d3>1&&d4>1) h=0;

printf("该点高度为%d\n",h);

}

第六章

第六章 循环控制

61输入两个正整数m和n,求其最大公约数和最小公倍数。

main()

{long m,n,i=1,j,s;

scanf("%ld,%ld",&m,&n);

for(;i<=m&&i<=n;i++)

{if(m%i==0&&n%i==0) s=i;}

if(m>=n) j=m;

else j=n;

for(;!(j%m==0&&j%n==0);j++);

printf("s=%ld,j=%ld\n",s,j);

}

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

#include"stdioh"

main()

{char c;int i=0,j=0,k=0,l=0;

while((c=getchar())!=’\n’)

{if(c>=65&&c<=90||c>=97&&c<=122) i++;

else if(c>=48&&c<=57) j++;

else if(c==32) k++;

else l++;}

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

}

63求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。

#include"mathh"

main()

{int n,sum=0,i=1,s=2;

scanf("%d",&n);

while(i<=n)

{sum=sum+s;s=s+2pow(10,i);

i++;}

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

}

64 求 ,(即求1!+2!+3!+4!+5!+…+20!)

main()

{int n,i=1;long sum=0,s=1;

scanf("%d",&n);

while(i<=n) {s=si;sum=sum+s;i++;}

printf("sum=%ld\n",sum);

}

65 求

main()

{double i=1,j=1,k=1,s1=0,s2=0,s3=0,sum;

for(;i<=100;i++) s1=s1+i;

for(;j<=50;j++) s2=s2+jj;

for(;k<=10;k++) s3=s3+1/k;

sum=s1+s2+s3;

printf("sum=%f\n",sum);

}

66打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。

#include"mathh"

main()

{int x=100,a,b,c;

while(x>=100&&x<1000) {a=001x;b=10(001x-a);c=x-100a-10b;

if(x==(pow(a,3)+pow(b,3)+pow(c,3))) printf("%5d",x);x++;}

}

67一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。编程序找出1000之内的所有完数,并按下面格式输出其因子:

6 its factors are 1、2、3

main()

{int m,i,j,s;

for(m=6;m<10000;m++)

{s=1;

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

if(m%i==0) s=s+i;

if(m-s==0)

{printf("%5d its fastors are 1 ",m);for(j=2;j<m;j++) if(m%j==0)

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

}

}

main()

{int m,i,j,s;

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

{s=m-1;

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

if(m%i==0) s=s-i;

if(s==0)

{printf("%5d its fastors are 1 ",m);for(j=2;j<m;j++) if(m%j==0)

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

}

}

68有一分数序列:

求出这个数列的前20项之和。

main()

{int i=1,n;double t,x=1,y=2,s,sum=0;

scanf("%ld",&n);

while(i<=n) {s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}

printf("%f\n",sum);

}

69一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反d多高?

main()

{int i,n;double h=100,s=100;

scanf("%d",&n);

for(i=1;i<=n;i++)

{h=05;if(i==1) continue;s=2h+s;}

printf("h=%f,s=%f\n",h,s);

}

610猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。

main()

{int i=1,sum=0;

for(;i<=10;sum=2sum+1,i++);

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

}

611用迭代法求 。求平方根的迭代公式为:

要求前后两次求出的得差的绝对值少于000001。

#include"mathh"

main()

{float x0,x1,a;

scanf("%f",&a);

x1=a/2;

do

{x0=x1;x1=(x0+a/x0)/2;}

while(fabs(x0-x1)>=000001);

printf("%3f\n",x1);

}

612 用牛顿迭代法求方程在15附近的根。

main()

{double x,y;x=15;

do{y=2xxx-4xx+3x-6;

x=x-y/(6xx-8x+3);}

while(y!=0);

printf("x=%3f\n",x);

}

613用二分法求方程在(-10,10)之间的根

main()

{double x1,x2,y1,y2;x1=-10;x2=10;

do{y1=2x1x1x1-4x1x1+3x1-6;

x1=x1-y1/(6x1x1-8x1+3);}

while(y1!=0);

do

{y2=2x2x2x2-4x2x2+3x2-6;

x2=x2-y2/(6x2x2-8x2+3);}

while(y2!=0);

printf("x1=%3f,x2=%3f\n",x1,x2);

}

614打印以下图案

#include"mathh"

main()

{int i,j,k;

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

{for(j=0;j<=2-i;j++)

printf(" ");

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

printf("");

printf("\n");

}

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

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

printf(" ");

for(k=0;k<=4-2i;k++)

printf("");

printf("\n");

}

}

第七章

第七章 数组

71 用筛法求之内的素数。

main()

{ int i,j,a[100];

for(i=2;i<100;i++)

{ a[i]=i;

for(j=2;j<=i;j++)

{if(j<i)

if(a[i]%j==0)

break;

if(a[i]-j==0)

printf("%5d",a[i]);

}

}

printf("\n");

}

#include"mathh"

main()

{static int i,j,k,a[98];

for(i=2;i<100;i++)

{a[i]=i;k=sqrt(i);

for(j=2;j<=a[i];j++)

if(j<k) if(a[i]%j==0)

break;

if(j>=k+1)

printf("%5d",a[i]);

}

printf("\n");

}

72用选择法对10个整数从小到大排序。

main()

{ int i,j,a[10],t;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

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

for(i=0;i<=9-j;i++)

if(a[i]>a[i+1])

{t=a[i+1];a[i+1]=a[i];a[i]=t;}

for(i=0;i<10;i++)

printf("%5d",a[i]);

}

main()

{static int a[10],i,j,k,t;

for(i=1;i<11;i++)

scanf("%d",&a[i]);

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

for(i=1;i<=10-j;j++)

if (a[i]>a[i+1])

{t=a[i+1];a[i+1]=a[i];a[i]=t;}

for(i=1;i<11;i++)

printf("%d",a[i]);

printf("\n");

}

73求一个3×3矩阵对角线元素之和。

main()

{int i=0,j=0,a[3][3],s1,s2;

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

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

scanf("%d",&a[i][j]);

s1=a[0][0]+a[1][1]+a[2][2];

s2=a[0][2]+a[1][1]+a[2][0];

printf("s1=%d,s2=%d\n",s1,s2);

}

main()

{

static int i,j,s1,s2,a[3][3];

for(i=1;i<=3;i++)

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

scanf("%d",&a[i][j]);

s1=a[1][1]+a[2][2]+a[3][3];

s2=a[1][3]+a[2][2]+a[3][1];

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

}

74已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。

main()

{ static int a[10]={1,7,8,17,23,24,59,62,101};int i,j,t;

scanf("%d",&a[9]);

for(i=9;i>0;i--)

if(a[i]<a[i-1])

{t=a[i-1];a[i-1]=a[i];a[i]=t;}

for(i=0;i<10;i++)

printf("%5d",a[i]);printf("\n");

}

main()

{

static int a[5]={1,4,5,6,7};

int i,t,b;

scanf("%d",&b);

for(i=0;i<5;i++)

{if(b<=a[i])

{t=a[i];a[i]=b;b=t;}

printf("%d ",a[i]);}

printf("%d",b);

}

75将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。

main()

{ int i,b[10];

for(i=0;i<10;i++)

scanf("%d",&b[i]);

for(i=9;i>-1;i--)

printf("%5d",b[i]);

printf("\n");}

76打印出以下杨辉三角形(要求打印出10行)。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

main()

{ static int m,n,k,b[15][15];

b[0][1]=1;

for(m=1;m<15;m++)

{for(n=1;n<=m;n++)

{ b[m][n]=b[m-1][n-1]+b[m-1][n];

printf("%-5d",b[m][n]);}printf("\n");

}

}

}

main()

{ int i,j,n,k,a[10][10];

static a[][1]={{1},{1},{1},{1},{1},{1},{1},{1},{1},{1}};

a[1][1]=1;

for(k=2,k<11;k++)

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

for(j=2;j<=i;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(k=1;k<11;k++)

for(i=1;i<=k;i++)

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

printf("%d",a[i][j]);

}

77 打印“魔方阵”,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为

8 1 6

3 5 7

4 9 2

要求打印出由1~n2的自然数构成的魔方阵。

解:

#include <stdioh>

main()

{ int a[16][16],i,i,k,p,m,n;

p=1;

while(p==1)

{ printf("Enter n(n=1~15):");

scanf("%d",&n);

if((n!=0)&&(n<=15)&&(n%2!=0)) p=0;

}

for(i=1;i<=n;i++)

for(j=1;j<=n;j++) a[i][j]=0

谭浩强《C语言程序设计》第三版和《 c primer》都可以,其实只要专心看就行,不会的可以在c语言群里求助,或百度也可以,好多方法,最主要的是把算法看会,还有一些单词的用法,就差不多了

以上就是关于求C语言程序设计学习指导(苏小红) 第3版.pdf全部的内容,包括:求C语言程序设计学习指导(苏小红) 第3版.pdf、谁有谭浩强的C程序设计第三版课后习题答案、打算看完C语言程序设计(第三版),就看C语言三剑客,不知道应该先看哪本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9357370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存