谭浩强c语言配套课件第八章,谭浩强c语言程序设计第三章答案

本文目录一览:

求谭浩强c语言程序设计视频教程打包下载

C语言程序设计

链接:

 提取码:8uar复制这段内容后打开百度网盘手机APP,操作更方便哦!

若资源有问题欢迎追问~

谭浩强主编的《C语言程序设计》,

谭浩强的这本我们老师说只适合考二级证用的,要真想学C,就去买这两部:C程序设计语言 [(美)克尼汉] 和 C Primer Plus

C程序设计语言 [(美)克尼汉]是C的经典书籍,但并不是一本入门书,而是有一定基础后用的全局把握程序设计用的,适合反复看,用本书入门怕是比较困难;C Primer Plus是一本从基础讲起的入门好书。

C学好就继续加强去学习C++ ,C语言是C++的一个子集,C++则更强大

谭浩强主编的内容到底是什么样的?

C程序设计 谭浩强 清华大学出版社

第一章 C语言的结构

1.程序的构成,main函数和其他函数。

2.头文件、数据说明、函数的开始和结束标志。

3.源程序的书写格式。

4.C语言的风格。

第二章 数据类型及其运算

1.C的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。

2.C运算符的种类、运算优先级和结合性。

3.不同类型数据间的转换与运算。

4.C表达式类型(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)和求

值规则。

第三章 基本语句

1.表达式语句,空语句,复合语句。

2.数据的输入与输出,输入输出函数的调用。

3.复合语句。

4.goto语句和语句标号的使用。

第四章 选择结构程序设计

1.用if语句实现选择结构。

2.用switch语句实现多分支选择结构。

3.选择结构的嵌套。

第五章 循环结构程序设计

1.for循环结构。

2.while和do while循环结构。

3.continue语句和break语句。

4.循环的嵌套。

第六章 数组的定义和引用

1.一维数组和多维数组的定义、初始化和引用。

2.字符串与字符数组。

第七章 函数

1.库函数的正确调用。

2.函数的定义方法。

3.函数的类型和返回值。

4.形式参数与实在参数,参数值的传递。

5.函数的正确调用,嵌套调用,递归调用。

6.局部变量和全局变量。

7.变量的存储类别(自动、静态、寄存器、外部),变量的作用域和生存期。

8.内部函数与外部函数。

第八章 编译预处理

1.宏定义:不带参数的宏定义;带参数的宏定义。

2.“文件包含”处理。

第九章 指针

1.指针与指针变量的概念,指针与地址运算符。

2.变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、

函数、结构体的指针变量。通过指针引用以上各类型数据。

3.用指针作函数参数。

4.返回指针值的指针函数。

5.指针数组,指向指针的指针,main函数的命令行参数。

第十章 结构体(即“结构”)与共用体(即“联合”)。

1.结构体和共用体类型数据的定义方法和引用方法。

2.用指针和结构体构成链表,单向链表的建立、输出、删除与插入。

第十一章 位运算

1.位运算符的含义及使用。

2.简单的位运算。

第十二章 文件操作

只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。

1.文件类型指针(FILE类型指针)。

2.文件的打开与关闭(fopen,fclose)。

3.文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数),文件的定位(rewind,fseek函数)。

我要c语言第三版谭浩强8.3的答案

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

************

Very Goodj!

************

解:

main()

{

printf(” ************ \n”);

printf(“\n”);

printf(” Very Good! \n”);

printf(“\n”);

printf(” ************\n”);

}

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

解:main()

{int a,b,c,max;

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

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

max=a;

if(maxb)

max=b;

if(maxc)

max=c;

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

}

第三章

3.3 请将下面各数用八进制数和十六进制数表示:

(1)10 (2)32 (3)75 (4)-617

(5)-111 (6)2483 (7)-28654 (8)21003

解:十 八 十六

(10)=(12)=(a)

(32)=(40)=20

(75)=(113)=4b

(-617)=(176627)=fd97

-111=177621=ff91

2483=4663=963

-28654=110022=9012

21003=51013=520b

3.5字符常量与字符串常量有什么区别?

解:字符常量是一个字符,用单引号括起来。字符串常量是由0个或若干个字符

而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号’\0′.

3.6写出以下程序的运行结果:

#includestdio.h

void main()

{

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

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

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

解:程序的运行结果为:

aabb cc abc

A N

3.7将”China”译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母,

例如,字母”A”后面第4个字母是”E”,用”E”代替”A”.因此,”China”应译为”Glmre”.

请编一程序,用赋初值的议程使c1,c2,c3,c4,c5分别变成’G’,’1′,’m’,’r’,’e’,并

输出.

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);

}

3.8例3.6能否改成如下:

#includestdio.h

void main()

{

int c1,c2;(原为 char c1,c2)

c1=97;

c2=98;

printf(“%c%c\n”,c1,c2);

printf(“%d%d\n”,c1,c2);

}

解:可以.因为在可输出的字符范围内,用整型和字符型作用相同.

3.9求下面算术表达式的值.

(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)

(2)(float)(a+b)/2+(int)x%(int)y=3.5(设a=2,b=3,x=3.5,y=2.5)

3.10写出下面程序的运行结果:

#includestdio.h

void main()

{

int i,j,m,n;

i=8;

j=10;

m=++i;

n=j++;

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

}

解:结果: 9,11,9,10

第4章

4.4.a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’.想得

到以下的输出格式和结果,请写出程序要求输出的结果如下:

a= 3 b= 4 c= 5

x=1.200000,y=2.400000,z=-3.600000

x+y= 3.60 y+z=-1.20 z+x=-2.40

u= 51274 n= 128765

c1=’a’ or 97(ASCII)

c2=’B’ or 98(ASCII)

解:

main()

{

int a,b,c;

long int u,n;

float x,y,z;

char c1,c2;

a=3;b=4;c=5;

x=1.2;y=2.4;z=-3.6;

u=51274;n=128765;

c1=’a’;c2=’b’;

printf(“\n”);

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

printf(“x=%8.6f,y=%8.6f,z=%9.6f\n”,x,y,z);

printf(“x+y=%5.2f y=z=%5.2f z+x=%5.2f\n”,x+y,y+z,z+x);

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

printf(“c1=’%c’ or %d(ASCII)\n”,c1,c2);

printf(“c2=’%c’ or %d(ASCII)\n”,c2,c2);

}

4.5请写出下面程序的输出结果.

结果:

57

5 7

67.856400,-789.123962

67.856400 ,-789.123962

67.86,-789.12,67.856400,-789.123962,67.856400,-789.123962

6.785640e+001,-7.89e+002

A,65,101,41

1234567,4553207,d687

65535,17777,ffff,-1

COMPUTER, COM

4.6用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’,

问在键盘上如何输入?

main()

{

int a,b;

float x,y;

char c1,c2;

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=8.5 y=71.82

c1=A c2=a

说明:在边疆使用一个或多个scnaf函数时,第一个输入行末尾输入的”回车”被第二

个scanf函数吸收,因此在第二\三个scanf函数的双引号后设一个空格以抵消上行

入的”回车”.如果没有这个空格,按上面输入数据会出错,读者目前对此只留有一

初步概念即可,以后再进一步深入理解.

4.7用下面的scanf函数输入数据使a=10,b=20,c1=’A’,c2=’a’,x=1.5,y=-3.75,z=57.8,请问

在键盘上如何输入数据?

scanf(“%5d%5d%c%c%f%f%*f %f”,a,b,c1,c2,y,z);

解:

main()

{

int a,b;

float x,y,z;

char c1,c2;

scanf(“%5d%5d%c%c%f%f”,a,b,c1,c2,x,y,z);

}

运行时输入:

10 20Aa1.5 -3.75 +1.5,67.8

注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再打入10与20。%*f是用来禁止赋值的。在输入时,对应于%*f的地方,随意打入了一个数1.5,该值不会赋给任何变量。

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

解:main()

{

float pi,h,r,l,s,sq,vq,vz;

pi=3.1415926;

printf(“请输入圆半径r圆柱高h:\n”);

scanf(“%f,%f”,r,h);

l=2*pi*r;

s=r*r*pi;

sq=4*pi*r*r;

vq=4.0/3.0*pi*r*r*r;

vz=pi*r*r*h;

printf(“圆周长为: =%6.2f\n”,l);

printf(“圆面积为: =%6.2f\n”,s);

printf(“圆球表面积为: =%6.2f\n”,sq);

printf(“圆球体积为: =%6.2f\n”,vz);

}

4.9输入一个华氏温度,要求输出摄氏温度,公式为C=5/9(F-32),输出要有文字说明,取两位小数.

解: main()

{

float c,f;

printf(“请输入一个华氏温度:\n”);

scanf(“%f”,f);

c=(5.0/9.0)*(f-32);

printf(“摄氏温度为:%5.2f\n”,c);

}

第五章 逻辑运算和判断选取结构

5.4有三个整数a,b,c,由键盘输入,输出其中最大的数.

main()

{

int a,b,c;

printf(“请输入三个数:”);

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

if(ab)

if(bc)

printf(“max=%d\n”,c);

else

printf(“max=%d\n”,b);

else if(ac)

printf(“max=%d\n”,c);

else

printf(“max-%d\n”,a);

}

方法2:使用条件表达式.

main()

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

printf(” 请输入 A,B,C: “);

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

printf(“A=%d,B=%d,C=%d\n”,a,b,c);

temp=(ab)?a:b;

max=(tempc)? temp:c;

printf(” A,B,C中最大数是%d,”,max);

}

5.5 main()

{int x,y;

printf(“输入x:”);

scanf(“%d”,x);

if(x1)

{y=x;

printf(“X-%d,Y=X=%d \n”,x,y);

}

else if(x10)

{y=2*x-1;

printf(” X=%d, Y=2*X-1=%d\n”,x,y);

}

else

{y=3*x-11;

printf(“X=5d, Y=3*x-11=%d \n”,x,y);

}

}

5.7给一个不多于5位的正整数,要求:1.求它是几位数2.分别打印出每一位数字3.按逆序打印出各位数字.例如原数为321,应输出123.

main()

{

long int num;

int indiv,ten,hundred,housand,tenthousand,place;

printf(“请输入一个整数(0-99999):”);

scanf(“%ld”,num);

if(num9999)

place=5;

else if(num999)

place=4;

else if(num99)

place=3;

else if(num9)

place=2;

else place=1;

printf(“place=%d\n”,place);

printf(“每位数字为:”);

ten_thousand=num/10000;

thousand=(num-tenthousand*10000)/1000;

hundred=(num-tenthousand*10000-thousand*1000)/100;

ten=(num-tenthousand*10000-thousand*1000-hundred*100)/10;

indiv=num-tenthousand*10000-thousand*1000-hundred*100-ten*10;

switch(place)

{case 5:printf(“%d,%d,%d,%d,%d”,tenthousand,thousand,hundred,ten,indiv);

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

printf(“%d%d%d%d%d\n”,indiv,ten,hundred,thousand,tenthousand);

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\n”,hundred,ten,indiv);

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

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

case 2:printf(“%d,%d\n”,ten,indiv);

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

printf(“%d%d\n”,indiv,ten);

case 1:printf(“%d\n”,indiv);

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

printf(“%d\n”,indiv);

}

}

5.8 1.if语句

main()

{long i;

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

/*初始化变量*/

bon1=100000*0.1;

bon2=100000*0.075+bon1;

bon4=200000*0.05+bon2;

bon6=200000*0.03+bon4;

bon10=400000*0.015+bon6;

printf(“请输入利润”);

scanf(“%ld”,i);

/*计算*/

if(i=le5)

bonus=i*0.1;

else if(i2e5)

bonus=bon1+(1-100000)*0.075;

else if(i=4e5)

bonus=bon2+(i-200000)*0.05;

else if(i=6e5)

bonus=bon4+(i-400000)*0.03;

else if(i=le6)

bonus=bon6+(i-600000)*0.015;

else

bonus=bon10+(i-1000000)*0.01;

printf(“奖金是 %10.2f”,bonus);

}

用switch语句编程序

main()

{long i;

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

int branch;

/*初始化变量*/

bon1=100000*0.1;

bon2=bon1+100000*0.075

bon4=bon2+200000*0.05;

bon6=bon4+200000*0.03;

bon10=bon6+400000*0.015;

printf(“请输入利润:”);

scanf(“%ld”,i);

branch=i/100000;

if(branch10)

branch=10;

/*计算*/

switch(branch)

{case 0:bonus=i*0.1;break;

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

case 2:

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

case 4:

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

case 6:

case 7:

case 8:

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

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

}

printf(” 奖金是 %10.2f”,bonus);

}

5.9 输入四个整数,按大小顺序输出.

main()

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

printf(“请输入四个数:”);

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

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

if(ab)

{t=a;a=b;b=t;}

if(ac)

{t=a;a=c;c=t;}

if(ad)

{t=a;a=d;d=t;}

if(bc)

{t=b;b=c;c=t;}

if(bd)

{t=b;b=d;d=t;}

if(cd)

{t=c;c=d;d=t;}

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

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

}

5.10塔

main()

{

int h=10;

float x,y,x0=2,y0=2,d1,d2,d3,d4;

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

scanf(“%f,%f”,x,y);

d1=(x-x0)*(x-x0)+(y-y0)(y-y0);

d2=(x-x0)*(x-x0)+(y+y0)(y+y0);

d3=(x+x0)*(x+x0)+(y-y0)*(y-y0);

d4=(x+x0)*(x+x0)+(y+y0)*(y+y0);

if(d11 d21 d31 d41)

h=0;

printf(“该点高度为%d”,h);

}

第六章 循环语句

6.1输入两个正数,求最大公约数最小公倍数.

main()

{

int a,b,num1,num2,temp;

printf(“请输入两个正整数:\n”);

scanf(“%d,%d”,num1,num2);

if(num1num2)

{

temp=num1;

num1=num2;

num2=temp;

}

a=num1,b=num2;

while(b!=0)

{

temp=a%b;

a=b;

b=temp;

}

printf(“它们的最大公约数为:%d\n”,a);

printf(“它们的最小公倍数为:%d\n”,num1*num2/2);

}

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

解:

#include stdio.h

main()

{

char c;

int letters=0,space=0,degit=0,other=0;

printf(“请输入一行字符:\n”);

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

{

if(c=’a’c=’z’||c’A’c=’Z’)

letters++;

else if(c==’ ‘)

space++;

else if(c=’0’c=’9′)

digit++;

else

other++;

}

printf(“其中:字母数=%d 空格数=%d 数字数=%d 其它字符数=%d\n”,letters,space,

digit,other);

}

6.3求s(n)=a+aa+aaa+…+aa…a之值,其中工是一个数字.

解:

main()

{

int a,n,count=1,sn=0,tn=0;

printf(“请输入a和n的值:\n”);

scanf(“%d,%d”,a,n);

printf(“a=%d n=%d \n”,a,n);

while(count=n)

{

tn=tn+a;

sn=sn+tn;

a=a*10;

++count;

}

printf(“a+aa+aaa+…=%d\n”,sn);

}

6.4 求1+2!+3!+4!+…+20!.

main()

{

float n,s=0,t=1;

for(n=1;n=20;n++)

{

t=t*n;

s=s+t;

}

printf(“1!+2!+…+20!=%e\n”,s);

}

6.5 main()

{

int N1=100,N2=50,N3=10;

float k;

float s1=0,s2=0,s3=0;

for(k=1;k=N1;k++)/*计算1到100的和*/

{

s1=s1+k;

}

for(k=1;k=N2;k++)/*计算1到50各数平方和*/

{

s2=s2+k*k;

}

for(k=1;k=N3;k++)

{

s3=s3+1/k;

}

printf(“总和=%8.2f\n”,s1+s2+s3);

}

6.6水仙开花

main()

{

int i,j,k,n;

printf(” ‘水仙花’数是:”);

for(n=100;n1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

{

printf(“%d”,n);

}

}

printf(“\n”);

}

6.7完数

main()

#include M 1000/*定义寻找范围*/

main()

{

int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9;

int i,j,n,s;

for(j=2;j=M;j++)

{

n=0;

s=j;

for(i=1;ij;i++)

{

if((j%i)==0)

{

if((j%i)==0)

{

n++;

s=s-i;

switch(n)/*将每个因子赋给k0,k1…k9*/

{

case 1:

k0=i;

break;

case 2:

k1=i;

break;

case 3:

k2=i;

break;

case 4:

k3=i;

break;

case 5:

k4=i;

break;

case 6:

k5=i;

break;

case 7:

k6=i;

break;

case 8:

k7=i;

break;

case 9:

k8=i;

break;

case 10:

k9=i;

break;

}

}

}

if(s==0)

{

printf(“%d是一个’完数’,它的因子是”,j);

if(n1)

printf(“%d,%d”,k0,k1);

if(n2)

printf(“,%d”,k2);

if(n3)

printf(“,%d”,k3);

if(n4)

printf(“,%d”,k4);

if(n5)

printf(“,%d”,k5);

if(n6)

printf(“,%d”,k6);

if(n7)

printf(“,%d”,k7);

if(n8)

printf(“,%d”,k8);

if(n9)

printf(“,%d”,k9);

printf(“\n”);

}

}

方法二:此题用数组方法更为简单.

main()

{

static int k[10];

int i,j,n,s;

for(j=2;j=1000;j++)

{

n=-1;

s=j;

for(i=1;ij;i++)

{

if((j%i)==0)

{

n++;

s=s-i;

k[n]=i;/*将每个因子赋给k0,k1…k9*/

}

}

if(s==0)

{

printf(“%d是一个完数,它的因子是:”,j);

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

printf(“%d,”,k[i]);

printf(“%d\n”,k[n]);

}

}

5.8 有一个分数序列:2/1,3/2,5/3,8/5……求出这个数列的前20项之和.

解: main()

{

int n,t,number=20;

float a=2,b=1,s=0;

for(n=1;n=number;n++)

{

s=s+a/b;

t=a,a=a+b,b=t;

}

printf(“总和=%9.6f\n”,s);

}

6.9球反弹问题

main()

{

float sn=100.0,hn=sn/2;

int n;

for(n=2;n=10;n++)

{

sn=sn+2*hn;/*第n次落地时共经过的米数*/

hn=hn/2;/*第n次反跳高度*/

}

printf(“第10次落地时共经过%f米 \n”,sn);

printf(“第10次反弹%f米.\n”,hn);

}

6.10猴子吃桃

main()

{

int day,x1,x2;

day=9;

x2=1;

while(day0)

{

x1=(x2+1)*2;

x2=x1;

day–;

}

printf(“桃子总数=%d\n”,x1);

}

6.14打印图案

main()

{

int i,j,k;

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

{

for(j=0;j=2-1;j++)

printf(” “);

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

printf(“*”);

printf(“\n”);

}

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

{

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

printf(” “);

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

printf(“*”);

printf(“\n”);

}

6.15乒乓比赛

main()

{

char i,j,k;/*i是a是对手;j是b是对手;k是c的对手*/

for(i=’x’;i=’z’;i++)

for(j=’x’;j=’z’;j++)

{

if(i!=j)

for(k=’x’;k=’z’;k++)

{

if(i!=kj!=k)

{if(i!=’x’ k!=’x’ k! =’z’)

printf(“顺序为:\na-%c\tb–%c\tc–%c\n”,i,j,k);

}

}

}

}

7.1用筛选法求100之内的素数.

/*用筛选法求100之内的素数*/

#includemath.h

#define N 101

main()

{

int i,j,line,a[N];

for(i=2;iN;i++) a[i]=i;

for(i=2;isqrl(N);i++)

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

{

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

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

a[j]=0;

printf(“\n”);

for(i=2,line=0;iN;i++)

{

if(a[i]!=0)

{

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

line++;

if(line==10)

{

printf(“\n”);

line=0;}

}

}

7.2用选择法对10个数排序.

/*选择法排序.*/

#define N 10

main()

{ int i,j,min,temp,a[N];

/*输入数据*/

printf(“请输入十个数:\n”);

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

{ printf(“a[%d]=”,i);

scanf(“%d”,a[i]);

}

printf(“\n”);

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

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

printf(“\n”);

/*排序*/

for (i=0;iN-1;i++)

{ min=i;

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

if(a[min]a[j]) min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

/*输出*/

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

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

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

}

7.3对角线和:

/*计算矩阵对角线元素之和*/

main()

{

float a[3][3],sum=0;

int i,j;

printf(“请输入矩阵元素:\n”);

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

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

scanf(“%f”,a[i][j]);

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

sum=sum+a[i][i];

printf(“对角元素之和=6.2f”,sum);

}

7.4插入数据到数组

/*插入数据到数组*/

main()

{int a[11]={1,4,6,9,13,16,19,28,40,100};

int temp1,temp2,number,end,i,j;

printf(“初始数组如下:”);

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

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

printf(“\n”);

printf(“输入插入数据:”);

scanf(“%d”,number);

end=a[9];

if(numberend)

a[10]=number;

else

{for(i=0;i10;i++)

{ if(a[i]number)

{temp1=a[i];

a[i]=number;

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

{temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

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

printf(“a%6d”,a[i]);

}

7.5将一个数组逆序存放。

/*数组逆序存放*/

#define N 5

main()

{ int a[N]={8,6,5,4,1},i,temp;

printf(“\n 初始数组:\n”);

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

printf(“%4d”,a[i]);

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

{ temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf(“\n 交换后的数组:\n”);

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

printf(“%4d”,a[i]);

}

7.6杨辉三角

/*打印杨辉三角形*/

#define N 11

main()

{ int i,j,a[N][N];

for(i=1;iN;i++)

{a[i][i]=1;

a[i][1]=1;

}

for(i=3;iN;i++)

for(j=2;j=i-1;j++)

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

for(i=1;iN;i++)

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

printf(“%6d”,a[i][j];

printf(“\n”);

}

printf(“\n”);

}

7.8鞍点

/*查找鞍点*/

#define N 10

#define M 10

main()

{ int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj;

printf(“\n输入行数n:”);

scanf(“%d”,n);

printf(“\n输入列数m:”);

scanf(“%d”,m);

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

{ printf(“第%d行?\n”,i);

for(j=0;jm,j++);

scanf(“%d”,a[i][j];

}

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

{ for(j=0;jm;j++)

printf(“%5d”,a[i][j]);

pritf(“\n”);

}

flag2=0;

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

{ max=a[i][0];

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

if(a[i][j]max)

{ max=a[i][j];

maxj=j;

}

for (k=0,flag1=1;kn flag1;k++)

if(maxa[k][max])

flag1=0;

if(flag1)

{ printf(“\n第%d行,第%d列的%d是鞍点\n”,i,maxj,max);

flag2=1;

}

}

if(!flag2)

printf(“\n 矩阵中无鞍点! \n”);

}

7.9变量说明:top,bott:查找区间两端点的下标;loca:查找成功与否的开关变量.

/*折半查找*/

#includestdio.h

#define N 15

main()

{ int i,j,number,top,bott,min,loca,a[N],flag;

char c;

printf(“输入15个数(a[i][i-1])\n);

scanf(“%d”,a[0]);

i=1;

while(iN)

{ scanf(“%d”,a[i]);

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

i++;

esle

{printf(“请重输入a[i]”);

printf(“必须大于%d\n”,a[i-1]);

}

}

printf(“\n”);

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

printf(“%4d”,a[i]);

printf(“\n”);

flag=1;

while(flag)

{

printf(“请输入查找数据:”);

scanf(“%d”,number);

loca=0;

top=0;

bott=N-1;

if((numbera[0])||(numbera[N-1]))

loca=-1;

while((loca==0)(top=bott))

{ min=(bott+top)/2;

if(number==a[min])

{ loca=min;

printf(“%d位于表中第%d个数\n”,number,loca+1);

}

else if(numbera[min])

bott=min-1;

else

top=min+1;

}

if(loca==0||loca==-1)

printf(“%d不在表中\n”,number);

printf(“是否继续查找?Y/N!\n”);

c=getchar();

if(c==’N’||c==’n’)

flag=0;

}

}

7.10/*统计字符数*/

main()

{ int i,j,uppn,lown,dign,span,othn;

char text[3][80];

uppn=lown=dign=span=othn=0;

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

{ printf(“\n请输入第%d行:\n”,i);

gets(text[i]);

for(j=0;j80 text[i][j]!=’\0′;j++)

{if(text[i][j]=’A’ text[i][j]=’Z’)

uppn+=1;

else if(text[i][j]=’a’ text[i][j]=’z’)

lown+=1;

else if(text[i][j]=’1′ text[i][j]=’9′)

dign+=1;

else if(text[i][j]=’ ‘)

span+=1;

else

othn+=1;

}

}

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

printf(“%s=n”,text[i]);

printf(“大写字母数:%d\n”,uppn);

printf(“小写字母数:%d\n”,lown);

printf(“数字个数:%d\n”,dign);

printf(“空格个数:%d\n”,span);

printf(“其它字符:%d\n”,othn);

}

7.11/*打印图案*/

main()

{static char a[5]={‘*’,’*’,’*’,’*’,’*’};

int i,j,k;

char space=’ ‘;

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

{printf(“\n”);

for(j=1;j=3*i;j++)

printf(“%lc”,space);

for(k=0;k=5;k++)

printf(“%3c”,a[k];

}

}

7.12/*译电文*/

#includestdio.h

main()

{int i,n;

char ch[80],tran[80];

printf(“请输入字符:”);

gets(ch);

printf(“\n密码是%c”,ch);

i=0;

while(ch[i]!=’\0′)

{if((ch[i]=’A’)(ch[i]=’Z’))

tran[i]=26+64-ch[i]+1+64;

else if((ch[i]=’a’)(ch[i]=’z’))

tran[i]=26+96-ch[i]+1+96;

else

tran[i]=ch[i];

i++;

}

n=i;

printf(“\n原文是:”);

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

putchar(tran[i]);

}

7.13/*连接两个字符串(不用’stract’)*/

main()

{

char s1[80],s2[40];

int i=0,j=0;

printf(“\n请输入字符串1:”);

scanf(“%s”,s1);

printf(“\n请输入字符串2:”);

scanf(“%s”,s2);

while(s1[i]!=’\0′)

i++;

while(s2[j]!=’\0′)

s1[i++]=s2[j++];

s1[i]=’\0′;

printf(“\n连接后字符串为:%s”,s1);

}

7.14/*字符串比较*/

#includestdio.h

main()

{int i,resu;

char s1[100],s2[100];

printf(“请输入字符串1:\n”);

gets(s1);

printf(“\n 请输入字符串2:\n”);

gets(s2);

i=0;

while((s1[i]==s2[i]) (s1[i]!=’\0′))i++;

if(s1[i]==’\0′ s2[i]==’\0′)resu=0;

else

resu=s1[i]-s2[i];

printf(” %s与%s比较结果是%d”,s1,s2,resu);

}

7.15/*字符串复制*/

#includestdio.h

main()

{

char from[80],to[80];

int i;

printf(“请输入字符串”);

scanf(“%s”,from);

for(i=0;i=strlen(from);i++)

to[i]=from[i];

printf(“复制字符串为:%s\n”,to);

}

第八章 函数

8.1(最小公倍数=u*v/最大公约数.)

hcf(u,v)

int u,v;

(int a,b,t,r;

if(uv)

{t=u;u=v;v=t;}

a=u;b=v;

while((r=b%a)!=0)

{b=a;a=r;}

return(a);

}

lcd(u,v,h)

int u,v,h;

{int u,v,h,l;

scanf(“%d,%d”,u,v);

h=hcf(u,v);

printf(“H.C.F=%d\n”,h);

l=lcd(u,v,h);

printf(“L.C.d=%d\n”,l);

}

{return(u*v/h);}

main()

{int u,v,h,l;

scanf(“%d,%d”,u,v);

h=hcf(u,v);

printf(“H.C.F=%d\n”,h);

l=lcd(u,v,h);

printf(“L.C.D=%d\n”,l);

}

8.2求方程根

#includemath.h

float x1,x2,disc,p,q;

greater_than_zero(a,b)

float a,b;

{

x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

}

equal_to_zero(a,b)

float a,b;

{x1=x2=(-b)/(2*a);}

smaller_than_zero(a,b)

float a,b;

{p=-b/(2*a);

最多就到8.2.。。。。。。

谭浩强C语言课本第八章的一道课后题,程序有错误,编译不能通过,请高人指教,谢谢。

#include stdio.h

#includestring.h

#define N 10

void input(int num[],char name[N][8])

{

int i;

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

{

printf(“\nInput NO.:”);

scanf(“%d”,num[i]);

printf(“Input name:”);

getchar();

gets(name[i]);

}

}

void sort(int num[],char name[N][8])

{

int i,j,min,temp1;

char temp2[8]={0};

for(i=0;iN-1;i++)

{

min=i;

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

if(num[min]num[i])

min=j;

temp1=num[i];

strcpy(temp2,name[i]);

num[i]=num[min];

strcpy(name[i],name[min]);

num[min]=temp1;

strcpy(name[min],temp2);

}

printf(“\nresult:\n”);

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

printf(“\n%5d%10s”,num[i],name[i]);

}

void search(int sign,int num[],char name[N][8])

{

int top,bott,mid,loca;

loca=0;

top=0;

bott=N-1;

if((signnum[0])||(signnum[N-1]))

loca=-1;

while((sign==1)(top=bott))

{

mid=(bott+top)/2;

if(sign==num[mid])

{

loca=mid;

printf(“NO. %d, his name is %s。\n”,sign,name[loca]);

sign=-1;

}

else if(signnum[mid])

bott=mid-1;

else

top=mid+1;

}

if(sign==1loca==-1)

printf(“Can not fine %d.\n”,sign);

}

void main()

{

int num[N],number,flag=1,c,n;

char name[N][8];

input(num,name);

sort(num,name);

while(flag==1)

{

printf(“\nInput number to look for:”);

scanf(“%d”,number);

search(number,num,name);

printf(“Continue or not(Y/N)?”);

getchar();

c=getchar();

if(c==’N’||c==’n’)

flag=0;

}

}

少包含头文件了,包含进去就差不多了,另外处理逻辑上有点问题,在仔细跟踪下代码看看逻辑那里有问题了 ,输入要查询的号码,没有输出结果。

原创文章,作者:HKQW,如若转载,请注明出处:https://www.506064.com/n/144086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HKQW的头像HKQW
上一篇 2024-10-24 15:27
下一篇 2024-10-24 15:27

相关推荐

  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • 学堂云Python语言程序设计答案

    学堂云Python语言程序设计是一门重要的计算机专业课程。它涵盖了Python语言及其应用,包括基础语法、函数、文件处理、数据结构、图形界面和网络编程等内容。在学习中,我们经常会需…

    编程 2025-04-29
  • 南京邮电大学Python慕课答案

    本文将详细阐述南京邮电大学Python慕课答案,为大家提供学习Python课程的参考。 一、应用范围 Python是一种高级通用编程语言,应用范围广泛,包括Web开发、数据分析与科…

    编程 2025-04-28
  • 大学化学科学出版社教材答案

    本文将从以下几个方面对大学化学科学出版社教材答案进行详细阐述,帮助您更好地应对学习中的问题: 一、获取教材答案的渠道 学习过程中,有时候会遇到难以解答的问题,这时候就需要查看教材答…

    编程 2025-04-28
  • Python初探答案第七关——解题指南

    Python初探答案第七关是一道典型的Python编程题目,涉及字符串的判断和操作。下面我们将从多个方面详细阐述这道题目的解题方法。 一、题目分析 首先,我们需要仔细研究题目要求以…

    编程 2025-04-28
  • 小甲鱼Python课后作业及答案百度云

    小甲鱼课程是一门 Python 开发的视频课程,自 2008 年以来一直广受欢迎。本文主要介绍小甲鱼 Python 课后作业及答案所在的百度云地址。以下是详细内容: 一、百度云地址…

    编程 2025-04-27
  • Python第二版课后答案用法介绍

    本篇文章主要从以下几个方面对Python第二版课后答案做详细的阐述: 一、Python第二版的重要性 Python是一种高级编程语言,被广泛应用于科学计算、Web开发、人工智能等领…

    编程 2025-04-27
  • 北京大学python语言基础与应用超星答案解析

    北京大学python语言基础与应用是一门涵盖了python语言基础知识、数据处理、web开发等方面的课程。其中超星在线学习平台为学生提供了练习和试卷答题功能。本文将从试卷中常见的知…

    编程 2025-04-27
  • Python智能测评系统答案解析

    Python智能测评系统是一款用于自动批改Python代码的工具,它通过较为底层的方法对代码进行分析,在编译和执行代码时自动判断正确性,从而评估代码的得分情况。下面将从多个方面对P…

    编程 2025-04-27
  • Python开发基础戴歆作业答案解析

    本文将从基础语法、函数方法、常用模块三个方面对Python开发基础戴歆作业答案进行详细的解析与阐述。 一、基础语法 Python的基础语法相对简单易懂,但也有一些需要特别注意的地方…

    编程 2025-04-27

发表回复

登录后才能评论