您好,欢迎来到东饰资讯网。
搜索
您的当前位置:首页C语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]

C语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]

来源:东饰资讯网
第1章习题参

1.单项选择题

(1)A (2)C (3)D (4)C (5)B 2.填空题 (1)函数

(2)主函数(main) (3)printf() , scanf() 第2章习题参 1.单项选择题

1-5 CBCCC 6-10 CDCDC 11-13 DBB 2.填空题

(10)11(11)((m/10)%10)*100+(m/100)*10+m%10(12)0 (

13

10

,9

,11

15

(x<0&&y<0)||(x<0&&z<0)||(y<0||z<0)(16)double (17)x==0(18)sqrt(fabs(a-b))/(3*(a+b))(19)sqrt((x*x+y*y)/(a+b)) 第3章习题参 1.单项选择题

1-5 CCCDD 6-10 BCDBC 11-15 BCBBB 16 A 2.填空题

(1)用;暗示停止(2){ }(3)y=x<0?1:x==0?0:-1 (4)y%4==0&&y%100!=0||y%400==0(5)上面未配对(6)default标号

(7)while , do while , for(8)do while(9)本次(10)本层

3.浏览程序,指出成果

(1)yes(2)*&(3)ABother(4)28 70(5)2,0(6)8(7)36

(8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12(11)i=6,k=4 (12)1,-2 4.程序填空 (1)x:y, u:z

(2)m=n , m!=0 ,m=m/10

(3)t(4)m%5==0 , printf(“%d\\n”,k)

(5)cx=getchar() , cx!=front , cx (6)double s=0 , 1.0/k , %lf (7)s>=0 , s

(1).

#include int main() {

double x,y; scanf(\"%lf\ if(x<1) y=x;

else if(x>=1.0&&x<10) y=2*x-11; else

y=3*x-11;

printf(\"%lf\\n\ return 0; }

(2).

#include int main() {

double x,y,z,min;

scanf(\"%lf%lf%lf\ if(x>y) min=y; else min=x; if(min>z) min=z;

printf(\"min=%lf\\n\ return 0; } 编

(3).

#include int main() {

int y,m,d,flag,s=0,w,i;

scanf(\"%d%d%d\

flag=(y%4==0&&y%100!=0||y%400==0);

w=((y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400)%7; for(i=1;i<=m;i++) {

switch(i) {

case 1:s=d;break; case 2:s=31+d;break; case 3:s=59+d;break; case 4:s=90+d;break; case 5:s=120+d;break; case 6:s=151+d;break; case 7:s=181+d;break; case 8:s=212+d;break; case 9:s=243+d;break; case 10:s=273+d;break; case 11:s=304+d;break; case 12:s=334+d;break;

} }

if(flag==1&&m>2)

s=s+1;

s=(w+s)%7; if(s==0)

printf(\"礼拜日\\n\"); else

printf(\"礼拜%d\\n\ return 0; }

(4).

#include int main() {

float p,r;

scanf(\"%f\ if(p<=10) r=p*0.1;

else if(p>10&&p<=20) r=10*0.1+(p-10)*0.075; else if(p>20&&p<=40)

r=10*0.1+10*0.075+(p-20)*0.05; else if(p>40&&p<=60)

r=10*0.1+10*0.075+20*0.05+(p-40)*0.03;

else if(p>60&&p<=100)

r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015; else if(p>100)

r=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(p-100)*0.01; printf(\"%f\\n\ return 0; }

(5).

#include int main() { char c;

while((c=getchar())!='\\n') {

if(c>='a'&&c<='z') c=c-32; putchar(c); }

return 0; }

(6).

#include int main() {

int m,k=2;

printf(\"输入一个正整数:\\n\"); scanf(\"%d\ while(kprintf(\"%4d\ m=m/k; } else k++;

printf(\"%4d\\n\ return 0; }

(7).

#include int main() {

int a,n,s=0,p=0,i;

scanf(\"%d %d\ for(i=1;i<=n;i++) {

p=p*10+a; s=s+p; }

printf(\"%d\\n\ return 0; }

(8).

#include int main() {

int i,j,k;

for(i=1;i<=9;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++)

printf(\"%5d\ return 0; }

(9).

#include #include int main() {

float a=-10,b=10,x,f1,f2,f; f1=(((2*a-4)*a+3)*a)-6; f2=(((2*b-4)*b+3)*b)-6; do {

x=(a+b)/2;

f=(((2*x-4)*x+3)*x)-6; if(f*f1<0) { b=x; f2=f; } else { a=x; f1=f; }

}while(fabs(f)>=1e-6); printf(\"%6.2f\\n\

return 0; }

(10).

#include #include int main() {

int n=2;

double eps,t,s=0,x;

scanf(\"%lf %lf\ t=x; s=t;

while(fabs(t)>=eps) {

t=-t*(2*n-3)*x*x/(2*n-2); s=s+t/(2*n); n++; }

printf(\"%d,%lf\\n\ return 0; }

(11).

#include int main() {

unsigned long s,t=0,p=1; scanf(\"%u\ while(s!=0) {

if((s%10)%2!=0) {

t=t+(s%10)*p; p=p*10; }

s=s/10; }

printf(\"%u\\n\ return 0;

}

第4章习题参

1.单项选择题

1-5 DDDBD 6-10 BADCD 11-14 BDAB 2.填空题

(1)2(2)嵌套 , 递归

(3)全局变量 , 局部变量 , 静态变量 , 动态变量 (4)auto , static , register , extern (5)外部变量(6)编译 ,运行 3.浏览程序,指出成果 (1)15(2)5(3)5,4,3 (4)i=5 i=2 i=2 i=4 i=2

(5)求水仙花数(6)-5*5*5(7)30 (8)0 10 1 11 2 12

4.程序填空

(1)float fun(float , float) , x+y,x-y , z+y,z-y (2)x , x*x+1 (3)s=0 , a=a+b 5.编程

(1).

unsigned int p=0; #include while(s!=0) unsigned int fun(unsigned int); { int main() p=p+s%10; { s=s/10; unsigned int s; } scanf(\"%u\ return p; printf(\"%u\\n\} return 0; (2). } #include unsigned int fun(unsigned int s) #include { #include

void f1(float,float,float,float); void f2(float,float,float,float); void f3(float,float,float,float);int main() {

float a,b,c,d;

scanf(\"%f %f %f\ if(a==0) {

printf(\"不是一元二次方程\\n\"); exit(0); }

d=b*b-4*a*c; if(d>0) f1(a,b,c,d); else if(d==0) f2(a,b,c,d); else

f3(a,b,c,d); return 0; }

void f1(float a,float b,float c,float d){

float x1,x2; {

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

printf(\"%.2f ,%.2f\\n\ } }

void f2(float a,float b,float c,float d){

float x1,x2; {

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

printf(\"%.2f ,%.2f\\n\ } }

void f3(float a,float b,float c,float d){

float x1,x2; {

x1=-b/(2*a);

x2=sqrt(-d)/(2*a);

printf(\"%.2f+i*%.2f\\n\ printf(\"%.2f-i*%.2f\\n\ } }

(3).

#include double p(int,double); int main() {

int n; double x; do {

scanf(\"%d\ }while(n<0); scanf(\"%lf\

printf(\"%lf\\n\ return 0; }

double p(int n,double x) {

double pn; if(n==0) pn=1;

else if(n==1) pn=x; else

pn=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n; return pn; }

(4).

#include

double fun(float); void display(float,int); int main() {

float dep; int season;

scanf(\"%f %d\ display(dep,season); return 0; }

double fun(float d) {

return d*RATE; }

void display(float d,int s) {

int i;

printf(\"季度 利 余额\\n\"); printf(\"-------------------------------\\n\");

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

printf(\"%-4d %-.2f %-.2f\\n\

printf(\"-------------------------------\\n\"); } }

(5).

#include double fun(void); m=m/10; p=p*10; n++; }

int main() {

printf(\"%lf\\n\ return 0; }

double fun(void) {

double s=0; int n=1;

while((double)(2*n-1)/((2*n)*(2*n))>1e-4) {

s=s+(double)(2*n-1)/((2*n)*(2*n)); n++; }

return s; }

(6).

#include int fun(int); int main() {

int w;

scanf(\"%d\

printf(\"%d\\n\ return 0; }

int fun(int w) {

int n=1,p=1,m; m=w;

while(m>10) {

return w%p; }

第5章习题参

1.选择题:

1-5 C (B C) BBA 6-8 DDB 2.填空题

(1) 0,9(2) float realArray[100],char strArray[16],int intArray[1000] (3) 运算符 sizeof(4) 6字节

3.浏览程序,写出下面程序的运行成果 (1) aa bb cc dd (2) ab c d

(3)ahAMa(4)0010(5) 1 3 4 5 (6)This is the title. Name 1 is Rosalinda Name 2 is Zeke

The biggest name alpabetically is Zeke Both names are Rosalinda Zeke (7)0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 0 2 5 6 8 10 748 14 0 3 6 9 12 15 18 21 0 4 8 12 16 20 24 28 0 5 10 15 20 177 30 35 0 6 12 18 24 30 36 42 0 7 14 21 28 35 42 49 4.程序填空

(1) a[i][j] != a[j][i] , 1

(2) 0, a[i] < a[mini] , maxi = i , a[maxi] = a[mini]

(3) int a[], int b[], b[i] = a[i], -999, arraycopy(a,b), b[i++] (4) a#include int main ( ){

1 int a[3][4] = {0, 2,9,7, 5,13,6,8, 27,11,1,3 };

int i,j,temp;

for(i=0,j=0;j<4;j++){ temp = a[2-i][j]; a[2-i][j] = a[i][j]; a[i][j] = temp; }

for(i=0;i<3;i++){ for(j=0;j<4;j++) printf(\"%3d\ printf(\"\\n\"); }

return 0; }

(2)

#include int main ( ){

static int a[6][6]; int i,j,t=1;

for(i=0;i<6;i++){ t = i+1;

for(j=0;jfor(i=0;i<6;i++){ for(j=0;j<6;j++) printf(\"%3d\ printf(\"\\n\"); }

return 0; }

(3)

#include #define M 3 #define N 4 #define R 5 int main( ){

static int a[M][N],b[N][R],c[M][R]; int i,j,k;

2 printf(\"Matrix a:\\n\"); for( i = 0; i < M; i++ ) for( j = 0; j < N; j++ ) scanf( \"%d\ printf(\"Matrix b:\\n\"); for( i = 0; i < N; i++ ) for( j = 0; j < R; j++ ) scanf( \"%d\ for( i = 0; i < M; i ++ ) for( j = 0; j < N; j++ ) for( k = 0; k < R; k++) c[i][k] += a[i][j]*b[j][k]; for( i = 0; i < M; i++ ){ for( j = 0; j < R; j++ ) printf( \"%3d\ printf(\"\\n\");

}

return 0; }

(4)

#include #define M 5 int main( ){

static int a[M];

int i,max = -1,min = 100,maxi,mini,temp; for( i = 0; i < M; i++ )

scanf( \"%d\间的值 for( i = 0; i < M; i++ ){ if( max < a[i] ){ max = a[i]; maxi = i; }

if( min > a[i] ){ min = a[i]; mini = i; } }

temp = a[maxi]; a[maxi] = a[mini]; a[mini] = temp;

for( i = 0; i < M; i++ ) printf( \"%3d\ return 0; }

3(5)

#include #define M 3 #define N 4 int main( ){

static int a[M][N];

int max = -1,sumcol=0,sumrow=0; int i,j,maxi,col;

for( i = 0; i < M; i++ ){ sumrow = 0;

for( j = 0; j < N; j++ ){ scanf( \"%d\ sumrow += a[i][j]; }

if ( max < sumrow ){ max = sumrow; maxi = i; } }

printf(\"which col sum will be caculated?(>0)\");

scanf(\"%d\ for( i = 0; i < M; i ++ ) sumcol += a[i][col-1];

printf(\"The %dth row's sum is max, max=%d\\n\ printf(\"The %dth column's sum=%d\\n\ return 0; }

(6)

#include #define M 81 int main( ){

static char str[M]; int i,count = 0; char ch; gets(str);

fflush(stdin); //清空输入缓冲区,以便读入字符数据 printf(\"Which character will be found?\"); ch = getchar();

for( i = 0; i < strlen(str); i++ ) if( ch == str[i] ) count++;

printf( \"The number of character '%c' is %d\\n\ 4 return 0; }

(7)

#include #include

#define N 10 //同窗人数 #define M 5 //课程数 void enter_scores(void);

void sort_scores(int score[][M], int average[N][3]); void disp_scores(int score[][M]); void histogram(int n, int score[][M]); void printchar(int n); static int score[N][M];

static int aver[N][3]; //第1列为均值,第2列原始次序,第3列为均值逆序int main() {

int course; enter_scores();

printf(\"\\n===========Oringenal Score Start=========\\n\"); disp_scores(score);

printf(\"\\n===========Oringenal Score End===========\\n\"); printf(\"\\n===========Sorted Score Start============\\n\"); sort_scores(score,aver);

printf(\"\\n===========Sorted Score End==============\\n\"); printf(\"\\nWhich class will be statisticed?\\n\"); scanf(\"%d\

histogram(course, score); system(\"Pause\"); return 0; }

/* 输入成绩 */ void enter_scores() {

int i, j;

for(i=0; iscanf(\"%d\ aver[i][0] += score[i][j]; } }

for( i = 0; i < N; i++ ) for ( j = 1; j < 3; j++ ) 5 aver[i][j] = i; }

/* 成绩排序. */

void sort_scores(int score[][M], int average[N][3]) {

int i,j,t;

int temp,tempindex; for( i = 0; i < N - 1; i++ ) for( j = 0; j < N - 1 - i; j++ )

if ( average[j][0] < average[j+1][0] ) {

temp = average[j][0];

average[j][0] = average[j+1][0]; average[j+1][0] = temp; tempindex = average[j][2];

average[j][2] = average[j+1][2]; average[j+1][2] = tempindex; }

printf(\"\\n Score1 Score2 Score3 Score4 Score5\\n\"); for( i = 0; i < N; i++ ) {

t = average[i][2];

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

printf(\"%8d\ }

printf(\"\\n\"); } }

/* 输出成绩 */

void disp_scores(int score[][M]) {

int i, j;

printf(\"\\n Score1 Score2 Score3 Score4 Score5\\n\"); for( i = 0; i < N; i++ ) {

for( j = 0;j < M; j++ ) printf(\"%8d\ printf(\"\\n\"); } }

void printchar(int n) {

6 int i;

for (i = 0; i < n; ++i) putchar('*'); }

void histogram(int course, int score[][M]) {

int i,temp;

int segs[5] = {0}; int sc[N];

for( i = 0; i < N; i++ ) sc[i] = score[i][course];

for (i = 0; i < N; i++)/* 统计各分段人数 */ {

temp = (int)sc[i]/10;

segs[ temp<6?0:temp-5]++; /* 成绩/10,将成绩分段 */ }

printf(\"\\nSegment Number\\n\");

for (i = 0; i < 5; i++) /* 输出直方图,每段的人数 */ {

printf(\"<%3d: %5d| \ printchar(segs[i]); putchar('\\n'); }

putchar('\\n'); }

(8)

#include #define M 81 int main( ) {

static char str[M]; int i,count = 0; char ch = 0; gets(str);

for( i = 0; i < strlen(str); i++ ) if( ch < str[i] ) ch = str[i];

for( i = 0; i < strlen(str); i++ )

if( ch == str[i] ) count++;

printf( \" max = '%c' ,count = %d\\n\ return 0; } 7

第6章习题参

1.选择题:

1-5 BBDDA 6-10 CCABD 11-15 CBCDA 16A 2.填空题

(1) 常量,变量(2) 指针(3)2(4)12,12(5) a[0],a[3] 3.浏览程序,写出下面程序的运行成果 (1)5 (2)6

(3) abcdefglkjih (4) 976531 (5)5,9

(6)2,4,5,7,6,0,11,9,7,3, (7)string_a=I am a teacher.

string_b=You are a student. string_a=I am a teacher. string_b=I am a teacher. 4.程序填空

(1) *p != '\\0', *p-'0', j— (2) i #include int main() {

int a=3,b=7,c=2;

int *ptra = &a,*ptrb = &b,*ptrc = &c; int temp;

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

printf(\"*ptra=%d,*ptrb=%d,*ptrc=%d\\n\ if ( *ptra > *ptrb ) {

temp = *ptra; *ptra = *ptrb; 1 *ptrb = temp; }

if ( *ptra > *ptrc ) {

temp = *ptra; *ptra = *ptrc; *ptrc = temp; }

if ( *ptrb > *ptrc ) {

temp = *ptrb; *ptrb = *ptrc; *ptrc = temp; }

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

printf(\"*ptra=%d,*ptrb=%d,*ptrc=%d\\n\ return 0; }

(2)

#include #include

void inputdata(int a[],int n); void process(int a[],int n); void outputdata(int a[],int n); int main() {

int a[10],n=10; inputdata(a,n); outputdata(a,n); process(a,n); outputdata(a,n); system(\"Pause\"); return 0; }

void inputdata(int a[],int n) //0~99之间的数 {

int i;

for( i = 0; i < n; i++ ) scanf(\"%d\}

void outputdata(int *ptr,int n) {

int i;

2 printf(\"\\n==========OutPut Data Start=============\\n\"); for( i = 0; i < n; i++ ) printf(\"%4d\

printf(\"\\n==========OutPut Data End================\\n\");} void process(int *ptr,int n) {

int i,maxi,mini;

int max=-1,min=101; for( i = 0; i < n; i++ )

{

if ( max < *(ptr+i) ) {

max = *(ptr+i); maxi= i; }

if ( min > *(ptr+i) ) {

min = ptr[i]; mini= i; } }

if ( mini != 0) {

i = ptr[0];

ptr[0] = ptr[mini]; ptr[mini] = i; }

if (maxi != n-1) {

i = ptr[n-1];

ptr[n-1] = ptr[maxi]; ptr[maxi] = i; }

if (maxi == 0 && mini == n-1) {

i = ptr[maxi];

ptr[maxi] = ptr[mini]; ptr[mini] = i; } }

(3)

#include

3int strLength (char *); int main() {

static char str[81]; gets(str);

printf(\"string \"%s\" length:%3d\\n\ system(\"Pause\"); return 0; }

int strLength (char *s) {

char *p=s;

while (*p) p++ ; return (p-s) ; }

(4)

#include #define M 3 #define N 4

void Transpose (int (*a)[N],int (*T)[M]); int main( ) {

static int a[M][N],T[N][M]; int i,j;

for( i = 0; i < M; i++ ) for( j = 0; j < N; j++ ) scanf( \"%d\

printf(\"\\n======Oringinal Matrix Start=========\\n\"); for( i = 0; i < M; i ++ ) {

for( j = 0; j < N; j++ ) printf( \"%4d\ printf(\"\\n\"); }

printf(\"\\n======Oringinal Matrix End===========\\n\"); Transpose(a, T);

printf(\"\\n======Transpose Matrix Start=========\\n\"); for( i = 0; i < N; i ++ ) {

for( j = 0; j < M; j++ ) printf( \"%4d\ printf(\"\\n\"); }

4 printf(\"\\n======Transpose Matrix End===========\\n\"); return 0; }

void Transpose (int (*a)[N],int (*T)[M]) {

int i,j;

for( i = 0; i < N; i++ ) for( j =0; j < M; j++ ) T[i][j] = a[j][i]; }

(5)

#include int main() {

static char source[81],target[81]; int result; gets(source); gets(target);

result = Strcmp(source,target); if (result)

{

if( result < 0 )

printf(\"%s < %s\\n\ else

printf(\"%s > %s\\n\ } else

printf(\"%s = %s\\n\ return 0; }

int Strcmp(char *s,char *t) {

while (*s && *t && (*s == *t)) { s++; t++; }

return *s - *t; }

(6)

#include 5#define M 5 #define N 3 int sum (int *a) int main()

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuoyibo.cn 版权所有 湘ICP备2023022426号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务