C语言程序设计(第3版 张磊编著)参考答案

更新时间:2024-04-09 06:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第三章

二. 1.

#include void main() { float weight=0; float pay=0; printf(\请输入邮件重量(单位:g):\ scanf(\ if(weight>100) { pay=100*0.05+(weight-100)*0.02; } else { pay=weight*0.05; } printf(\需要支付:%f元\} 2.

#include void main() { float x=0; float y=0; printf(\请输入x的值:\ scanf(\ if(x<=0) { y=x; } else if(x>0 && x<1) { y=2*x; } else {

y=3*x*x-6*x+7; } printf(\的值为:%f\} 3.

#include void main() { int a=0,b=0,c=0; int temp=0; printf(\请以空格隔开输入3个整数\\n\ scanf(\ temp=a; if(temp

void main() { int a=0; printf(\请输入一个整数:\ scanf(\ if(a%3==0&&a%5==0) { printf(\该数既能被3整除又能被5整除\

} else { printf(\该数不能被3整除同时又能被5整除\ } } 5.

void main() { int i=0; printf(\请输入一个整数:\ scanf(\ switch(i) {

case 1:printf(\星期一\case 2:printf(\星期二\case 3:printf(\星期三\case 4:printf(\星期四\case 5:printf(\星期五\case 6:printf(\星期六\case 7:printf(\星期天\

default:printf(\输入数据不合法\\n\ } } 6.

#include void main() { float a=0,b=0,c=0; float dt=0;

printf(\请以空格隔开输入a b c 的值:\scanf(\dt=b*b-4*a*c; if(dt<0) { printf(\无解\}

else if(dt==0) { printf(\有唯一解为:%f\\n\} else

{

printf(\为:%f x2为:%f\\n\ } } 7.

void main() { char ch; scanf(\ if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') {

printf(\这是字母:%c\}

else if(ch>='0'&&ch<='9') {

printf(\这是数字:%c\ } else { printf(\这是空白\ } } 8.

void main() { int n=0,i=1; printf(\输入n:\ scanf(\ int sum=1; loop:sum=sum*i; if(i

void main() { int num = 0,temp=0,a=1;

int i = 0;//位数 printf(\输入一个整数:\ scanf(\ temp=num; printf(\逆序输出为:\ do { i++; a=a*10; printf(\ num = num /10; }while(num > 0); printf(\位数:%d\\n\ printf(\

printf(\分别打印每一位数:\ while(i>0) { a=a/10; printf(\ temp=temp-temp/a*a; i--; }

}

一.选择题

1~8:C C C A

二.程序分析题

1. n%4!=0 2. 100 3. 1 三.

1. void main() { int m=0,n=0,sum=1;

第四章

A C CA 4. 1

int i=0;

printf(\请以空格输入m n\ scanf(\ for(i=1;i<=m+n;i++) { sum=i*sum; } printf(\} 2.

void main() { int i=0; for(i=1;i<=100;i++) { if(i%7!=0) printf(\ } } 3.

void main() { int s=0,n=0,i=0; while(s<=1000) { s=n+s; n++; } n--; s=s-n; printf(\的值为:%d n的值为:%d\} 4.

void main() { float a[20],temp=0; int i=0; for(i=0;i<20;i++)

{ scanf(\}

temp=a[0]; for(i=0;i<20;i++) { if(temp

printf(\最大值为:%f\} 5.

void main() {

char str[100]={0}; int i;

printf(\ gets(str);

for(i=0;str[i]!=0;i++)

if(str[i]!='a' && str[i]!='A' && str[i]!='f' && str[i]!='5' && str[i]!='#') printf(\ printf(\ } 6.

图案一 void main() {

int i=4,j=0;

for(i=0;i<=4;i++)//控制输出的循环次数 { for(j=0;j<4-i;j++)//控制每行输出多少个空格 { printf(\ } for(j=0;j<2*i-1;j++)//控制每行输出多少个* printf(\ printf(\}

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

{ for(j=4;j>i;j--) { printf(\ } for(j=0;j<2*i-1;j++) printf(\ printf(\ } }

图案二:

void main() {

int i=0,n=5,j=0; for(i=5;i>0;i--) { for(j=0;j<2*i-2;j++) { printf(\ } for(j=5-i+1;j>0;j--) { printf(\ printf(\ } printf(\ } } 7.

void main() { int i=0,a,b,c; for(i=100;i<1000;i++) { a=i/100; b=i0/10; c=i; if(a*a*a+b*b*b+c*c*c==i) printf(\ }

} 8.

void main() { double a=100; int i=0; while(a>1) { a=a/2.0; i++; } printf(\ } 9.

void main() { int a=1,b=2,c=5,sum=0; for (int i=0; i<=100; i++) { for (int j=0; j<=50; j++) {

for (int k=0; k<=20; k++) {

if (a*i+b*j+c*k==100) { sum+=1;

printf(\个一分,%d个2分,%d个5分\\n\ } } } }

printf(\共%d种换法\ } 10.

#include #include void main() {

double h1=100.0,h2; int i; h2=h1; for(i=1;i<=10;i++) {

printf(\第 %d 次落地反弹高度:\\n\ //第X次落地后反弹高度 h2=h2/2; printf(\ printf(\第 %d 次落地经过的路程\\n\ //第x次落地时经过的路程 printf(\ h1=h1+(h2*2); } } 11. main() { double sum=0,n=1; int i; for(i=1;i<=64;i++) { sum=sum+n; n=2*n; } printf(\} 12.

void main() {

//char * stateName[] = {\站\站\站\站\站\站\站\站\站\站\站\站\站\站\站\ char stateName[][15] = {\站\站\站\站\站\站\站\站\站\站\站\站\站\站\站\ int i,j,count=0; for(i=0;i<15;i++) for(j=0;j<15;j++) if(i!=j) { count++; printf(\序号= 从 %s 到 %s\\n\ } printf(\共 = 种票\\n\} 13.

float fun(int n)

{

float S=0,p=0; int i;

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

p+=i; S+=1/p; }

return S; }

void main() {

int n; float S;

printf(\请输入 N:\ scanf(\ S=fun(n);

printf(\结果为 %f\\n\}

一.选择题:

1.~3 B D B

二.程序分析题

1. k=p 2. Str[i]!=’\\0’ ;

三.编程题 1.

#include main() { int a=1,b=1,c[20],i,j=0;

第五章

str[i]>=97; i++; 3. 3 4. b[j][i]=a[i][j] for(i=0;i<10;i++) { a=a+b; if(a%2==0) c[j++]=a; b=a+b; if(b%2==0) c[j++]=b; } c[j]='\\0'; for(i=0;i

#include

void inverse(int a[],int n) { int i,j,t; for(i = 0, j = n - 1; i < j; ++i, --j) { t = a[i]; a[i] = a[j]; a[j] = t; } }

void main() { int i, a[6]={1,5,7,13,15,19},n=6; inverse(a,n); for(i=0;i

#include void main() { int n[6]={23,25,30,33,40,47},i,minflag; double aver=0,min,sum=0,t; for(i=0;i<6;i++) sum+=n[i]; aver=sum/6; min=aver-n[0]; if(min>=0) minflag=0;

for (i=1;i<6;i++) { t=aver-n[i]; if(t>=0 && t

#include #include void main() { char s[80]; int i,n,times=0; gets(s); n=strlen(s); for(i=0;i

#include #include main() {

char a[5][81]={0}; int counter=0,i,j;

printf(\请输入5段英文。\\n\ for(i=0;i<5;i++) gets(a[i]); for(i=0;i<5;i++) {

for(j=0;j

float m;

m=counter*0.5;

printf(\可以获得的稿费为:%.2f元\\n\}

6.

void main() { int a[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; int b[2][10]; int i=0,j,n=0,k=0; for(j=0;j<20;j++) { if(a[j]%2==0) { b[0][n]=a[j]; n++; } else { b[1][k]=a[j]; k++; } } for(i=0;i<2;i++) { for(j=0;j<10;j++) { printf(\ \ } } } 7.

#include int main() { int c,b=1,f=0,s=0; //b表示单词开头,f表示以a开头,s计数 while((c=getchar())!='\\n') { if(c=='a'&&b) { f=1; b=0;

} else if(c==' ') { if(f) s++; b=1; f=0; } else { b=0; } } if(f) s++; printf(\ return 0; } 8.

#include void main()

{char a[5][10],b[100]; int i;

for (i=0;i<5;i++) scanf(\ b[0]='\\0';

for (i=0;i<5;i++) { if(i>0)strcat(b,\ }

printf(\} 9.

void main() {

int a[4][5],b[4][5],c[4][5],i,j; /*输入,数组a赋初值*/ for(i=0;i<4;i++) for(j=0;j<5;j++)

scanf(\

/*输入,数组a赋初值*/ for(i=0;i<4;i++)

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

scanf(\ /*生成新数组c*/ for(i=0;i<4;i++) for(j=0;j<5;j++) {

if((a[i][j]%2==0)&&(b[i][j]%2==0)) c[i][j]=a[i][j]-b[i][j]; else

c[i][j]=a[i][j]+b[i][j]; }

/*输出数组c*/ for(i=0;i<4;i++) {

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

printf(\ printf(\ } } 10.

#include void main() { char s1[100],s2[100]; int i,j; gets(s1); for(i=0;s1[i];i++) { if(s1[i]>='a'&&s1[i]<='j') s2[i]=s1[i]-49; else if(s1[i]>='k'&&s1[i]<='s') s2[i]=s1[i]-10; else if(s1[i]=='t') s2[i]='@'; else if(s1[i]>='v'&&s1[i]<='y') s2[i]=s1[i]-83; else if(s1[i]=='u') s2[i]='#'; else if(s1[i]=='z') s2[i]='*'; else if(s1[i]==' ') s2[i]='j'; else

}

}

s2[i]=s1[i];

s2[i]='\\0'; puts(s1); puts(s2);

第六章答案

8.C

9.C

一,选择题

1.C 2.A 3.D 4.B 5.C 6.D 7.D

二,编程分析题:

1. 输出结果: 5

10 15 20

2. 输出结果: x = 1

Y = 1 x = 1 Y = 1 x = 1 Y = 1

3. 输出结果:程序有错

4. 输出结果:result: 0

三,编程题

1 .设计一个将公制长度(cm)转换为英制长度(英寸)的函数,在主函数中输入公制长

度,然后输出英制长 #include \void esc(double c) { printf(\}

int main() {

}

double c;

printf(\请输入长度:\scanf(\esc(c); return 0;

2.

#include #include float s(float h,float d) {

float ss = 0;

ss=3.14*(d/2)*(d/2)+3.14*(d/2)*sqrt(h*h+(d/2)*(d/2)); return ss; }

float v(float h,float d) {

float vv = 0;

vv=(1.0/3.0)*3.14*(d/2)*(d/2)*h; return vv; }

void main() {

float d; float h;

printf(\请输入直径:\ scanf(\

printf(\请输入高:\ scanf(\

printf(\圆锥的表面积为:%f\

printf(\圆锥的体积为:%f\\n\}

(注:没有密度,求不出质量)

3.

#include #include // convert / to -: char *ymd(char *s){ int i;

for (i=0;i

main() {

char y[]=\printf(\return 0; }

4.按照如下公式,设计一个求π得近似值的函数:π/2≈1+1/3+1/3*2/5+1/3*2/5*3/7...

#include #include double f(int i)

{static double p=1; p=p*i/(i+i+1); return p; }

int main() { int i;

double pi=1;

for(i=1;i<=1000;i++) pi+=f(i);

printf(\ return 0; }

5.设计一个函数,计算下面表达式前n项中偶数项的和:1*2*3+2*3*4+...

#include int oushusum(int n) { int sum=0; for(int i=1;i<=n;i++) { if(i%2==0) sum+=i*(i+1)*(i+2); }; return sum;

}

int main() { int n; printf(\ scanf(\ printf(\偶数项和是:%d\\n\}

6.

#include

int gongyue(int m,int n) {

int r;

if(m==n) return m; else

while((r=m%n)!=0) {

m=n; n=r; }

return n; }

int gongbei(int m,int n) {

if(m==n) return m; else

return m*n/gongyue(m,n); }

void main() {

int a,b,i;

printf(\ scanf(\

printf(\最大公约数是:%d\\n\ printf(\最小公倍数是:%d\\n\ }

7.

#include #include long factorial(int n) {

long result;

if(n==0 || n==1){ result = 1; }else{

result = factorial(n-1) * n; // 递归调用 }

return result; }

void main() { int n; printf(\请输入一个奇数:\ scanf(\ printf(\结果是:%d\\n\}

8.

#include #include #include

float b(float arr[],int n); void main() { float a[50]; int i,n=0; printf(\输入你的数组长度和数组的值:\ scanf(\ for(i=0;i

float b(float arr[],int n) { float sum=0,c;

int i; if(n==0) return(0); for(i=0;i

c=sum/n; return(c);

}

一.选择题:

1.~10:B C A B D C B C B B

二.程序分析题

1. 6789 2. 6789 3. 2008

三.编程题

1.

#include

void swap(int *p,int *q) { int t; t=*p; *p=*q; *q=t; }

void main() { int a,b,*p; scanf(\ swap(&a,&b);

第七章4.2 5. t ,one 6. 0 7. 统计字符串长度

printf(\} 2.

void main() { int i,j,k,*p1,*p2,*p3,t; printf(\请输入 i,j,k: \ scanf(\

printf(\交换前: i=%d j=%d,k=%d\\n\ p1=&i; p2=&j; p3=&k; //p1指向i,p2指向j, p3指向k t=*p3; *p3=*p2;*p2=*p1,*p1=t; //通过指针间接访问i,j,k并实现交换 printf(\交换后: i=%d j=%d k=%d\\n\ } 3.

#include int main(void) { int a,b,c; int *p1=&a,*p2=&b,*p3=&c,*p=0; scanf(\ if(*p1<*p2) { p=p1; p1=p2; p2=p; } if(*p1<*p3) { p=p1; p1=p3; p3=p; } if(*p2<*p3) { p=p2; p2=p3;

p3=p; } printf(\ return 0; } 4.

#include

int fun(char*s1,char*s2) { char *p = NULL; char *p2 = NULL; for(p = s1,p2 = s2 + strlen(s2) - 1;*p != *p2; p++,p2--); if(*p == '\\0') return printf(\ else return printf(\ }

void main() { char a[100],b[200]; gets(a); gets(b); fun(a,b); } 5.

#include main() { int a[100],i,j,n,*p; p=a; printf(\请输入要存储的数的个数\ scanf(\ printf(\请输入%d个不相等的整数\ for(i=0;i

for(j=0;j

printf(\与之前的数重复请重新输入\\n\

i=i-1; } p++; } } } 6.

#include #define n 10 int main() {

int a[n],b[n],*p=a,*q=b,i; for (i=0;i

return 0; } 7.

#include #include #include

int cmp(const void *a, const void *b) {

return *(char*)a - *(char*)b; // 这里记住一定要用排序的元素类型的指针做强制装换并且再取指针指向的值。 }

int main() {

char s[] = \ qsort(s, strlen(s), 1, cmp); printf(\ return 0; } 8.

#include void main() { int *fun(int *,int,int); int a[20],*p; int m,n; int i;

printf(\输入数列:\for(i=0;i<20;i++) scanf(\

printf(\输入起始位置和需要逆序的数量:\scanf(\p=a;

printf(\原数列为:\\n\ for(i=0;i<20;i++) printf(\ fun(p,m,n); printf(\变换后的数列为:\\n\ for(i=0;i<20;i++) printf(\}

int *fun(int *p,int m,int n) { int i,j,k; for(i=m-1,j=m+n-2;j>i;i++,j--) { k=*(p+i) ; *(p+i) = *(p+j); *(p+j) =k; } return p; } 9.

#include int str_len(char *p) {

int length=0; for(;*p!='\\0';p++) length++; return length; }

int main() {

char a[80]={0};

printf(\请输入一个字符串:\ gets(a);

printf(\输入字符串的长度为:%d\\n\ return 0; } 10.

#include

char a;

char *Delete(char *p, int i) { int lengh = 0, j = 0; char * b = p;

while(*p != '\\0')//求出字符串的长度,lengh中存放字符串的长度用于比较 { p++; lengh++; }

p = b;//因为p移动到最后的位置,将其重新定位到开始位置

if(i > lengh || i < 1)//判断i是否大于零并小于字符串的长度,如果不合理就返回 { return NULL; }

a = *( p + i -1);//用全局变量保存要删除的字符

for(j = i - 1; j < lengh; ++j)//调整字符串,让后面的字母依次替换前面的,包括'\\0'; { *(p + j) = *(p + j + 1); }

return &a;// 返回a的地址

}

int main() {

char a[40], *b; int i;

printf(\请输入字符串\\n\scanf(\

printf(\请输入你要删除第几个字符\\n\scanf(\b = Delete( a, i);

if(b == NULL) {

printf(\删除失败\\n\} else {

printf(\删除的字符是 %c \\n\}

printf(\输出删除后的字符串 return 0; }

声明:本答案是个人编写,仅供参考,错误之处,还望指出改正

(广西工学院xxx班)

本文来源:https://www.bwwdw.com/article/dz7r.html

Top