文档库 最新最全的文档下载
当前位置:文档库 › C语言程序设计第二版第四章第七章课后答案

C语言程序设计第二版第四章第七章课后答案

C语言程序设计第二版第四章第七章课后答案
C语言程序设计第二版第四章第七章课后答案

1、输入函数scanf的参数错误,应该为:scanf("%f",&k);

2、|1234 1234 |

3、ff10

4、1,3,1

5、原字符串左边加空格再加字符串本省,字符个数总和为5个

6、scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2);

7、

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

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

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

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

printf("(float)a/b=%f\n",(float)a/b);

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

8、

void main()

{ float r; float s,c;

printf("please input the number:");

scanf("%f",&r);

if(r>=0)

{ s = 3.14*r*r;

c = 2*3.14*r;

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

}

else

printf("you input number is error!");

}

9

void main()

{int n;

printf("please input the number:");

scanf("%d",&n);

if(n>=100 && n <= 999)

printf("%d%d%d",n%10,(n/10)%10,n/100);

else

printf("you input number is error!");

}

10、

void main()

{ int i,j,k;

scanf("%d,%d,%d",&i,&j,&k);

((i%2 != 0?1:0) + (j%2 != 0?1:0)+(k%2 != 0?1:0)) == 2?printf("YES\n"):printf("NO\n"); }

11、

void main()

scanf("%c",&a);

printf("%c,%c,%c",a-1,a,a+1);

printf("%d,%d,%d",a-1,a,a+1);

}

12、void main()

{float a,b,c,s,Area;

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

if(a+b > c || a+c > b || b+c >a)

{ s = (a+b+c)/2;

Area = sqrt(s*(s-a)*(s-b)*(s-c));

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

}

else

printf("you input the number is error!\n"); }

习题4

1:0

2:20

3:(x<30&&x>20)||(x<-100)

4: ***a=25,b=14,c=16***

5: 37

6: if(a<=b) printf("1");

else printf("2");

7、

#include

void main()

{ char a,b,t1,t2;

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

t1=a>b?a:b;

t2=a

if((t1-t2)%2==0)printf("%c,%c",a+1,b+1); else

printf("%c,%c",a-1,b-1);

getch();

}

8、#include

void main()

{ int temp1=0,temp2=0,x,y,i=1;

printf("Please input (x,y): ");

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

while((i*y)<=x)

{ if(x==(i*y)) {temp1=1;break;}

temp2=i; i++; }

printf("%d / %d = %d",x,y,i);

else

printf("%d / %d---> shang=%d,yushu=%d",x,y,temp2,x-y*temp2); getch();

}

9、#include

void main()

{ float x,y,m=0,n=0;

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

n=(x-2)*(x-2);

m=(y-2)*(y-2);

if((m+n)<=1)

printf("(%.3f,%.3f)In the yuan",x,y);

else

printf("(%.3f,%.3f)out of the yuan",x,y);

getch();

}

10、#include

void main()

{

int temp=0,month,year;

printf("Please input (year,month): ");

scanf("%d,%d",&year,&month);

if((year%400==0)||(year%4==0&&year%100!=0))

temp=1;

if(month==2)

{ if(temp)printf("%d year %d month have 29 ",year,month);

else printf("%d year %d month have 28 ",year,month);

}

else if(month%2==0)

printf("%d year %d month have 30 ",year,month);

else printf("%d year %d month have 31 ",year,month);

getch();

}

11、switch(a/10)

{ case 5:m=4;break;

case 4:m=3;break;

case 3:m=2;break;

case 2:m=1;break;

default:m=5;

}

12、方法一:

#include

{ int x,y;

scanf("%d",&x);

if(x<0&&x>-5)

y=x-1;

else if(x==0)

y=x;

else if(x>0&&x<8)

y=x+1;

printf("%d",y);

getch();

}

方法二:

#include

void main()

{ int x,y;

scanf("%d",&x);

if(x<8&&x>-5)

if(x==0)y=x;

{

float x,y,t;

printf("Enter two number (x,y): "); scanf("%f,%f",&x,&y);

SWAP(x,y);

printf("\n\nExchanged:x=%f,y=%f",x,y); getch();

}

5、

#include

int fib(int n)

{int p;

if(n==0) p=0;

else if(n==1) p=1;

else p=fib(n-1)+fib(n-2);

return p;

}

void main()

{int n;

printf("Please input fib: ");

scanf("%d",&n);

printf("\n\nfibonacci=%d",fib(n));

}

6、

#include

{long f;

if(n==0)

f=1;

else

f=n*fac(n-1);

return f;

}

void main()

{int m,n;long f;

printf("Please input (m,n): "); scanf("%ld,%ld",&m,&n);

f=fac(n+m)+fac(n);

printf("\n\nfibonacci=%ld",f);

}

7、

#include

void list()

{int i,j;

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

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

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

}

}

void main()

{list();}

8、

#include

int he(int n)

{int i,s=0;

for(i=1;i

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

return s;

}

void main()

{

int i,j;

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

{for(j=1;j<30000;j++)

if((he(i)==j)&&(he(j)==i)&&(i!=j)) printf("%d<--->%d ",i,j);

}

}

#include

#define max 100

struct work

{

long sid;

char name[15];

}worker[max];

int size=0;

struct work *set_list()

{

do

{

printf("\n\nPlease input (sid,name): ");

scanf("%ld,%s",&worker[size].sid,worker[size].name);

size++;

}while(worker[size-1].sid!=0);

return worker;

}

void paixu(struct work a[])

{

int i,j,k;long t;char v[15];

for(i=0;i

{k=i;

for(j=i;j

if(a[i].sid>a[j].sid)k=j;

if(k!=i)

{t=a[i].sid; a[i].sid=a[j].sid; a[j].sid=t;

strcpy(v,a[i].name);strcpy(a[i].name,a[j].name);strcpy(a[j].name,v); }

}

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

printf("sid: %ld\tname:%s\n\n",a[i].sid,a[i].name);

getch();

}

void select(struct work a[])

{int i=0,found=1;long num;

printf("Input select sid: ");

scanf("%ld",&num);

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

{

if(a[i].sid==num)

{ found=0;

printf("%ld: %s",num,a[i].name);

}

}

if(found)printf("\n\nNO this sid!!!");

getch();

}

void main()

{struct work *p;

p=set_list();

paixu(p);

select(p);

}

10、

#include

float jiecheng(int n)

{

long s=1;int i;

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

s=s*i;

return s;

}

float chengfang(float x,int n)

{

float s=1;int i;

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

s=s*x;

return s;

}

float f(float x,int n)

{

float s=1,t=0;int i=1,j=-1;

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

{

t=j*chengfang(x,2*i)/jiecheng(2*i);

s+=t;

j=j*j;

}

return s;

}

main()

{

float s1=0,s2=0,s3=0,s4=0,x=5.6;int n=7; s1=f(x,n);

s2=f(x+2.3,n);

s3=f(x-3.2,n+3);

s4=s1/(s2+s3);

printf("%f",s4);

getch();

}

习题7

1:(1)D(2)A(3)D(4)B(5)D

2:(1)1 5 4 46 7 82 34(2)6333

3:(1)a[8]=data; k>=0 a[k]=temp break k<=8

(2) "%s" str[i]<='Z' c[str[i]+26-'a']++ i+'a'

4、/*题目:求一组成绩的平均分数以及高于平均分的成绩。*/

#include

#define max 100

void main()

{float a[max],s=0,average=0;

int i,n;

printf("Please input N: "); /*输入要处理元素的个数*/

scanf("%d",&n);

printf("\nPlease input %d ge shu: ",n); /*输入90,85,92,77,80,62*/ for(i=0;i

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

s+=a[i];

}

average = s / n;

printf("\naverage = %.2f\n",average); /*输出81.00*/

for(i=0;i

if(a[i]>average)

printf("%.2f ",a[i]); /*输出90.00,85.00,92.00*/

}

5、/*题目:编写程序,输入一组整数,将他们排序后由小到大输出。*/ #include

#define max 100

void main()

{

int a[max],j,i,k=0,t=0,n=0;

printf("Please input N: "); /*输入要处理元素的个数*/

scanf("%d",&n);

for(i=0;i

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

for(i=0;i

{

k=i;

for(j=i+1;j

if(a[k]>a[j])

k=j;

if(k!=i) /*元素排序前下标与排序后下标不符,则交换其值*/

{ t=a[i];

a[i]=a[k];

a[k]=t;

}

}

printf("\n\n");

for(i=0;i

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

}

6、/*题目:从键盘输入一个4x4的整数矩阵,以主对角线(\)为对称轴*/

/*将左下角元素中较大者替换右上角元素,并将右上角含对称轴输出。*/

#include

#include

void main()

{

int d[4][4]={{0,0,0,0}},i,j;

clrscr();

printf("\nPlease input 16 num: ");

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

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

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

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

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

if(d[i][j]>d[j][i]) /*左下角元素大于右上角元素则交换*/

d[j][i]=d[i][j];

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

{

printf("\n\n\n\n\n");/*为了保持每行的间隔与每列的相同*/

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

if(j>=i)

printf("\t%d",d[i][j]);/*为了使位数不同的数输出依然保持三角型*/

else

printf("\t");

}

}

7、*题目:输入一个3x4的二维数组,然后分别按行和按列输出。*/ #include

#include

void main()

{

int d[3][4]={{0,0,0,0}},i,j;

printf("Please input 12 num: ");

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

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

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

printf("\n\nAn hang: ");

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

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

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

printf("\n\nAn lie: ");

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

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

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

}

8、/*题目:编写程序,将两个字符串连接起来,不用strcat函数。*/ #include

#include

void main()

{

char s1[50],s2[50];

int i=0,j=0,t=0;

printf("Input one: ");

gets(s1);

while(s1[i]!='\0') i++; /*统计s1中字符个数*/

printf("\n\nInput second: ");

gets(s2);

while(s2[j]!='\0') j++; /*统计s2中字符个数*/

for(t=0;t<=j;t++) /*把s2中字符连接到s1后面*/

{ s1[i]=s2[t]; i++;}

printf("\n\none + second: ");

puts(s1);

}

9、/*输入一行字符串,统计字符对ab的个数。*/

#include

#include

#define MAX 100

void main()

{

char str[MAX];

int i=0,flage=0;

int count=0;

printf("\nPlease input a string: ");

gets(str);

while(str[i])

{

if(str[i]=='a')

else if(str[i]=='b')

{

if(flage==1)

{ count++;flage=0;}

}

else flage=0;

i++;

}

printf("the double char \"ab\" count is %d\n",count);

}

10、#include /*相对于第一种方法,这种方法能把同为最大的字符串全部打印出来。*/

#include

int paixu(int a[],int n) /*构造对长度为n的数组排序的函数*/

{ int i,j,t,k,temp;

for(i=0;i

{

k=i;

for(j=i+1;j

if(a[k]>a[j])

k=j;

if(k!=i)

{ t=a[i];

a[i]=a[k];

a[k]=t;

}

}

temp=a[n-1];

return temp; /*返回最大字符串的长度的值*/

}

void main()

{

char str1[50],str2[50],str3[50],str4[50],str5[50],str6[50];

char str7[50],str8[50],str9[50],str10[50];

int count[10]={0},temp[10]={0},i,j;

int paixu(int a[],int n);

for(i=1;i<=10;i++) /*输入10个字符串*/

{

printf("\nPlease input %d string: ",i);

if(i==1)

{ gets(str1);while(str1[count[0]]){count[0]++;temp[0]++; }}

if(i==2)

{ gets(str2);while(str2[count[1]]){count[1]++;temp[1]++;}}

{ gets(str3);while(str3[count[2]]){count[2]++;temp[2]++; }} if(i==4)

{ gets(str4);while(str4[count[3]]){count[3]++; temp[3]++;}} if(i==5)

{ gets(str5);while(str5[count[4]]){count[4]++; temp[4]++;}} if(i==6)

{ gets(str6);while(str6[count[5]]){count[5]++; temp[5]++;}} if(i==7)

{ gets(str7);while(str7[count[6]]){count[6]++; temp[6]++;}} if(i==8)

{ gets(str8);while(str8[count[7]]){count[7]++; temp[7]++;}} if(i==9)

{ gets(str9);while(str9[count[8]]){count[8]++; temp[8]++;}} if(i==10)

{ gets(str10);while(str10[count[9]]){count[9]++;temp[9]++;}} }

j=paixu(temp,10);

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

{

if(count[i-1]==j)

{

/*只要字符串长度与最大长度相等就打印出来*/

switch(i)

{ case 1:puts(str1);

printf("\n"); break;

case 2:puts(str2);

printf("\n"); break;

case 3:puts(str3);

printf("\n"); break;

case 4:puts(str4);

printf("\n"); break;

case 5:puts(str5);

printf("\n"); break;

case 6:puts(str6);

printf("\n"); break;

case 7:puts(str7);

printf("\n"); break;

case 8:puts(str8);

printf("\n"); break;

case 9:puts(str9);

printf("\n"); break;

case 10:puts(str10);

printf("\n"); break;

11、/*给数组a输入m个按升序排列的数,给数组b输入n个按降序排列的数*/ /*将a与b中的元素按降序排列存在数组c中。*/

#include

void main()

{

int a[100],b[100],c[100],i,m,n,j,k,temp=0,s;

printf("\nm = ");scanf("%d",&m); /*确定M的个数*/

printf("\nn = ");scanf("%d",&n); /*确定N的个数*/

printf("\nPlease input m ge shu: ");

for(s=0;s

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

printf("\nPlease input n ge shu: ");

for(s=0;s

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

i=m-1;j=0;k=0; /*i,j,分别标记a[]与b[]且都是从最大元素开始做标记*/

for(;;)

{ if(i==0) /*a[]中只有一个数或者a[]处理到了最后一个元素*/

{ if(a[i]<=b[j]) /*如果a[]的最后一个元素<=b[]中当前元素*/

{ c[k]=b[j]; k++; j++; }

else

{ c[k]=a[i];

k++;

for(;;) /*把b[]数组接到c[]后面*/

{ c[k]=b[j];

j++;

k++;

if(j==n) /*如果b[]处理完,结束。并做标记temp=1*/

{ temp=1;break; }

} } }

if(temp==1)break; /*标记temp=1,全部处理结束*/

if((a[i]<=b[j])&&(i!=0)&&(j!=n))

{ c[k]=b[j]; j++; k++; }

if((a[i]>b[j])&&(i!=0)&&(j!=n))

{ c[k]=a[i]; i--; k++; }

if(j==n) /*b[]处理到完*/

{ for(;;) /*把b[]数组接到c[]后面*/

{ if(i==0) /*如果a[]处理完,结束。并做标记temp=1*/

{ c[k]=a[i];temp=1;break; }

c[k]=a[i];

i--;

k++;

}

}if(temp==1) break;/*标记temp=1,全部处理结束*/

}

for(s=0;s

printf("%d ",c[s]);

getch();

}

/21

C语言程序设计第四版第六章答案-谭浩强

1、用筛选法求100之内的素数。解: #include #include int main() {int i,j,n,a[101]; for (i=1;i<=100;i++) a[i]=i; a[1]=0; for (i=2;i int main() {int i,j,min,temp,a[11]; printf("enter data:\n"); for (i=1;i<=10;i++)

{printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include int main() { int a[3][3],sum=0; int i,j; printf("enter data:\n"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf("%3d",&a[i][j]); for (i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum);

C语言程序设计第三版谭浩强课后习题答案完整版

1.6 编写一个程序,输入a、b、c 三个值,输出其中最大值。 课后习题答案完整版 第一章 1.5 请参照本章例题,编写一个C 程序,输出以下信息: ************************** Very Good! ************************** 解:mian() {int a,b,c,max; printf( “请输入三个数a,b,c:\n ” ); scanf( “%d,%d,%”d ,&a,&b,&c); C语言程序设计第三版谭浩强 解: mian() {printf( ”); “************************** printf( “”X “ n” ); printf( “Very Good!” \ n”); printf( “”X “ n” ); printf( “************************** ); max=a; if(max

{char #include c1='a',c2='b',c3= 'c',c4= ' \101 ',c5= ' 116'; printf( “a%cb%c n”,c1,c2,c 3); printf( “ b%c %c” ,c4,c5); } 解: aa 口bb 口口口cc 口口口口口口abc A 口N 3.7 要将"China" 译成密码,译码规律是:用原来字母后面的第 4 个字母代替原来的字母.例如,字母"A" 后面第 4 个字母是"E" . "E"代替"A"。因此,"China"应译为"Glmre" 。请编一程序,用赋初值的方法使cl 、c2、c3、c4、c5 五个变量的值分别为, ' C'、h'、i '、n'、a'经过运算,使cl、c2、c3、c4、c5分别变为'G'、' I '、' m >' r'、’ e',并输出。main() { char c1=' C' ,c2=' h' ,c3= ' i ' ,c4= ' n' ,c 5=' a' ; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf(" 密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是GImre 3.9 求下面算术表达式的值。 解: 1 )x+a%3*(int)(x+y)%2/4

c语言第二版第七章答案

7.1 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 参考程序如下: #include int aa(int m,int n) //求最大公约数 { int k; if(m int aa(int n) { int i; int flag; // flag标志 for(i=2;i<=sqrt(n);i++) { if(n%i==0) break; } if(i>sqrt(n)) flag=1; else flag=0;

return(flag); } main() { int n,flag; // flag标志 printf("\nInput n:"); scanf("%d",&n); flag=aa(n); if(flag==1) printf("%d is a prime number.\n",n); else printf("%d is not a prime number.\n",n); } 7.4 写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。 参考程序如下: #include main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int b[3][3],i,j; printf("array a:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",a[i][j]); printf("\n"); } printf("After switch:\n"); aa(a,b); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",b[i][j]); printf("\n"); } } void aa(int a[3][3],int b[3][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[j][i]=a[i][j]; } 说明:当数组名作函数参数时,形参也必须是同类型的数组名,形参数组名的实质是一个指针变量,存放的第0行第0列的元素的地址;这样,子函数中a[i][j]就是主函数中的a[i][j]; 7.11写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列 参考程序如下: main()

C语言第六章习题带答案

练习6-1答案 一、选择题 1.已知函数abc的定义为: void abc() {……} 则函数定义中void的含义是( A )。 A.执行函数abc后,函数没有返回值B.执行函数abc后,函数不再返回C.执行函数abc后,可以返回任意类型 D.以上三个答案全是错误的 2.已知:int p();,p是( C )。 A.int型变量 B.函数p的调用 C.一个函数声明,该函数的返回值是int型的值 D.强制类型转换表达式中的变量 3.以下正确的函数形式是( D )。 A.double fun(int x, int y) B.fun(int x, y) { z=x+y; return z; } { int z; return z; } C.fun(x, y) D.double fun(int x, int y) { int x, y; double z; z=x+y; return z; } { double z; z=x+y; return z; } 4.以下说法正确的是( C )。 A.定义函数时,形参的类型说明可以放在函数体内 B.return后边的值不能为表达式 C.如果函数值的类型与返回值表达式的类型不一致,以函数值类型为准 D.如果形参与实参的类型不一致,以实参类型为准 5.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )。 A.float 型B.int型C.long型D.double型6.下面函数调用语句含有实参的个数为( B )。 func((exp1, exp2), (exp3, exp4, exp5)); A.1 B.2 C.4 D.5 7.以下程序的功能是计算函数F(x, y, z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。 #include #include float f(float, float); main() {float x, y, z, sum; scanf("%f%f%f", &x, &y, &z); sum=f( ①B )+f( ②C ); (注:或者选择sum=f( ①C )+f( ②B )) printf("sum=%f\n", sum); } float f(float a, float b) {float value; value=a/b;

C语言程序设计(谭浩强)第四版-课后答案

第一章程序设计和C语言【第15页】 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6 #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; }

3-2-1 #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和 return 0; } 3-2-2 #include #include int main() {double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78 习题82 3-1 #include #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } 3-2-1 #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;

C语言第七章习题答案

7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 hcf(u,v) int u,v; { int a,b,t,r; if(u>v) { 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=%dn",h); l=lcd(u,v,h); printf("L.C.d=%dn",l); return(u*v/h); } #include

void main() { int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%dn",h); l=lcd(u,v,h); printf("L.C.D=%dn",l); } 7.2 求方程根 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);

q=sqrt(disc)/(2*a); } main() { float a,b,c; printf("n输入方程的系数a,b,c:n"); scanf("%f,%f,%f",&a,&b,&c); printf("n 方程是:% 5.2f*x*x+%5.2f*x+%5.2f=0n",a,b,c); disc=b*b-4*a*c; printf("方程的解是:n"); if(disc>0) { great_than_zero(a,b); printf("X1=%5.2ftX2=%5.2fnn",x1,x2); } else if(disc==0) { zero(a,b); printf("X1=%5.2ftX2=%5.2fnn",x1,x2); } else { small_than_zero(a,b,c); printf("X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin",p,q,p,q);

C语言程序设计第四版第七章答案-谭浩强

第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } main() {int a,b,max,min; printf("enter two number is: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); }

C语言程序设计教程第三版(李凤霞)习题答案

教材习题答案 第一章 习题 一、单项选择题 1. C 2. B 3. B 4. C 5. D 6. A 7. C 8. A 二、填空题 1. 判断条件 2. 面向过程编程 3. 结构化 4. 程序 5. 面向对象的程序设计语言 6. 基本功能操作、控制结构 7. 有穷性 8. 直到型循环结构 9. 算法 10.可读性 11.模块化 12.对问题的分解和模块的划分

习题 一、单项选择题 1. B 2. D 3. C 4. B 5. A 6. A 7. B 8.C 二、填空题 1. 主 2. C编译系统 3. 函数、函数 4. 输入输出 5. 头 6. .OBJ 7. 库函数 8. 文本 第三章 习题 一、单项选择题 1. D 2. B 3. A

5. C 6. D 7. D 8. B 9. B 10.C 11.A 12.D 13.C 14.C 15.C 16.A 17.C 18.C 19.C 20.D 21.A 22.D 23.D 24.D,A 25.D 26.A 27.B 二、填空题 1. 补码 2. 308 10 - ±

~)308 10 ,15 —6 2. 308 10 - ± (~)308 10 ,15

6 3. 逻辑 4. 单目,自右向左 5. 函数调用 6. a 或 b ( 题目有错 , 小括号后面的 c<=98 改成( c>=97&&c<=98 )就可以得到所给的答案了) 7.

8. 65 , 89 第四章 习题 一、单项选择题 1. D 2. C 3. D 4. A 5. D 6. B 7. A 8. C 9. B 10.B 二、填空题 1. 一

大学生C语言程序设计(第四版 谭洪强)实验5答案

实验四参考答案(参考答案) (1) 设计程序sy5-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。 算法分析: 对角线上的元素,1维和2维下标相同,反对角线元素,如果行下标为i,列下标就为2-i; 参考答案: #include int main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j,sum=0; for(i=0;i<3;i++) sum=sum+a[i][i]+a[i][2-i]; //a[i][i]当前行的主对角线元素 //a[i][2-i]当前行的反对角线元素printf("矩阵的正、反对角线元素之和为:%d\n",sum); return 0; } 运行结果: (2) 设计程序sy5-2.c,找出一个3×4的矩阵中的最小值及其位置。 算法分析: 首先把二维数组中的第一个数即a[0][0]看成最小值,然后逐行逐列的去遍历每个元素,逐一判断每一个元素是否比最小值还好小,如果是,就改写最小值,并记录他的下标。 参考答案: #include #include int main() { int a[3][4]={{10,21,41,5},{12,15,46,35},{40,21,26,30}}; int i,j,row,colum,min; printf("数组a:\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%5d",a[i][j]);

printf("\n"); } min=a[0][0];row=0;colum=0; //首先把第一个数a[0][0]看成最小数 for(i=0;i<3;i++) //双重循环逐一遍历每个元素a[i][j] for(j=0;j<4;j++) if(min>a[i][j]) //如果当前值a[i][j]比最小值还要小 {min=a[i][j];row=i;colum=j;} //用a[i][j]改写最小值,并记下他们的下标printf("矩阵中最小元素是:%d,行下标是:%d,列下标是%d\n",min,row,colum); return 0; } 运行结果: (3) 设计程序sy5-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。然后输入一个整数n,使数组左下三角(含对角线元素)元素中的值乘以n 。例如:若n的值为3,a 数组中的值为 | 1 9 7 |则程序运行后a数组中的值应为| 3 9 7 | | 2 3 8 | | 6 9 8 | | 4 5 6 | | 12 15 18 | 算法分析: 主要理解到对角线即以下元素包含哪些元素,即他们的下标变化。对每一行i来说,对角线以下的元素,他们的列下标是0,1,2,---,i;所以用外循环i遍历行,内循环j(从0到i),逐一遍历每一个a[i][j],并给a[i][j]赋值为他的n倍。最后输出矩阵。 参考答案: #include #include int main() { int a[3][3]; int i,j,n; printf("原来a的值:"); for(i=0;i<3;i++) //生成数组元素,并按矩阵形式输出 { for(j=0;j<3;j++) {a[i][j]=rand()%20; //rand()参看教材385页 //rand()%20 产生一个20以内的整数

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入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 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 3.9求下面算术表达式的值。 (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)2.5 (2)3.5 3.10写出程序运行的结果。 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 3.12 写出下面表达式运算后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=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.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII)

C语言第七章复习题(不含答案)

1.下列对C语言字符数组的描述中错误的是( )。 (A)字符数组可以存放字符串 (B)字符数组中的字符串可以整体输入、输出 (C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 (D)不可以用关系运算符对字符数组中的字符串进行比较 2.不能把字符串:Hello!赋给数组b的语句是( )。 (A)char b[10]={'H','e','l','l','o','!'}; (B)char b[10];b="Hello!"; (C)char b[10];strcpy(b,"Hello!"); (D)char b[10]="Hello!"; 3.若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是( )。 (A)a[g-c] (B)a[4] (C)a['d'-'c'] (D)a['d'-c] 4.以下程序的输出结果是( ) (A) 20 (B) 21 (C) 22 (D)23 main() { int i, k, a[10], p[3]; k=5; for (i=0;i<10;i++) a[i ]=i; for (i=0;i<3;i++) p[i ]=a[i *(i+1)]; for (i=0;i<3;i++) k+=p[i] *2; printf("%d\n",k); 5.以下程序的输出结果是( )。 (A) 1,5,9 (B) 1,4,7 (C) 3,5,7 (D)3,6,9 main() { int i, x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); 6.下面程序运行的结果是( )。 (A) 2ba56 (B) 6521 (C) 6 (D) 62 main() { char ch[7]={“65ab21“}; int i,s=0 for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); } 7.合法的数组定义是( )。 (A)int a[]="string"; (B)int a[5]={0,1,2,3,4,5}; (C)char s[6]="string"; (D)char a[]={0,1,2,3,4,5}; 8.函数调用:strcat(strcpy(str1,str2),str3)的功能是( )。 (A)将串str1复制到串str2中后再连接到串str3之后 (B)将串str1连接到串str2之后再复制到串str3之后 (C)将串str2复制到串str1中后再将串str3连接到串str1之后

C语言课后习题

习题 第三章 #include #include int main() { int d,p; double r,a,m; scanf("%d %d %lf",&d,&p,&r); a=(p/(p-d*r)); m=log(a)/log(1+r); if(p>0&&d>0) { if(d<=m*p) printf("%.1f",m); else printf("God"); } else printf("0.0"); return 0; } 勾股数 #include int main() { int a,b,c,n; scanf("%d",&n); for(a=1;a<=n;a++) { for(b=1;b<=n;b++) { for(c=1;c<=n;c++) { if(c*c==a*a+b*b) { if(a<=b) { printf("%d %d %d\n",a,b,c); } }

} } } return 0; } 第四章 计算分段函数值 #include int main() { float x,y; scanf("%f",&x); if(x<1) y=x; else if(x>=1&&x<10) y=2*x-1; else if(x>=10) y=3*x-11; printf("%.2f",y); return 0; } 找出三个数中最大的数 #include int main() { int a,b,c,max; scanf("%d%d%d",&a,&b,&c); max=a>b?a:b; if(c>max) max=c; printf("%d",max); return 0; } 10844成绩等级评分 #include int main() { int x; scanf("%d",&x); if(x>=0&&x<=100) { switch(x/10) { case 10:

C语言第六章数组习题

C语言第六章数组习题 第六章数组 6.1 选择题 [题]在C语言中,引用数组元素时,其数组下标的数据类型允许是_____. A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 [题]以下对一维整型数组a的正确说明是_____。 A)int a(10);B)int n=10,a[n]; C)int n;D)#define SIZE 10 scanf(\%d,&n);int a[SIZE]; int a[n]; [题]若有说明:int a[l0];则对a数组元素的正确引用是_____。 A) a[10] B)a[3.5] C)a(5) D)a[10-10] [题]在C 语言中,一维数组的定义方式为:类型说明符数组名_____。 A)[常量表达式] B)[整型表达式] C)[整型常量]或[整型表达式] D)[整型常量] [题]以下能对一维数组a进行正确初始化的语句是_____。 A)int a[l0]=(0,0,0,0,0); B)int a[l0]={}; C)int a={0};D)int a[10]={10*1}; [题]以下对二维数组a的正确说明是_____。

1 A)int a[3]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); [题]若有说明:int a[3][4];则对a数组元素的正确引用是_____。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) [题]若有说明:int a[3][4];则对a数组元素的非法引用是_____。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] [题]以下不能对二维数组a进行正确初始化的语句是_____。 A)int a[2][3]={0}; B)int a[3]={{1,2},{0}}; C)int a[2][3]={{l,2},{3,4},{5,6}}; D)int a[3]={1,2,3,4,5,6}; [题]若有说明:int a[3][4]={0};则下面正确的叙述是_____。 A)只有元素a[0][0]可得到初值0 B)此说明语句不正确 C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0 [题]若有说明:int a[3][4];则数组a中各元素_____。 2

c语言 第6章作业

书面作业8 专业理科学号3120101717 姓名马凌浩 习题6 一、选择题 1.设float x=2.5, y=4.7; int a=7;,printf(“%.1f”, x+a%3*(int)(x+y)%2/4)的结果为 A 。 A.2.5 B.2.8 C.3.5 D.3.8 2.执行下列程序段的输出结果是 C 。 int a = 2; a += a *= a -= a *= 3; printf("%d", a); A.-6 B.12 C.0 D.2 3.设字符型变量x 的值是064,表达式“~ x ^ x << 2 & x”的值是 A 。 A.0333 B.333 C.0x333 D.020 4.设a 为整型变量,不能正确表达数学关系:1010 && a<15 D.!(a<=10) && !(a>=15) 5.设以下变量均为int 类型,表达式的值不为9 的是 C 。 A.(x=y=8,x+y,x+1) B.(x=y=8,x+y,y+1) C.(x=8,x+1,y=8,x+y) D.(y=8,y+1,x=y,x+1) 二.填空题 1 .-127 的原码为11111111 、反码为10000000 、补码为10000001 。 2.逻辑表达式x && 1 等价于关系表达式if(x==0) 表达式的值为0;else 表达式的值为1;。3.设int a=5, b=6; 则表达式(++a==b--)? ++a : --b 的值是7 。 4.设c = 'w', a = 1, b = 2, d = -5, 则表达式'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==(a=2)的值 分别为 1 、0 、 1 、 1 。 5.运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为c1=2,c2=5 。 #include int main(void) { int c1 = 0, c2 = 0; char ch; while((ch = getchar()) !=?#?) switch(ch){ case …a?: case …h?: c1++; default: c2++; } printf(“c1=%d,c2=%d\n”, c1, c2); return 0; }

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