程序设计基础_c语言_科学出版社_第五章指针_教材习题答案详解

合集下载

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案

习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。

【解答】(1)语言简洁、紧凑,使用方便、灵活。

(2)数据类型丰富,表达能力强。

(3)运算符多样。

C语言中的运算符包含的范围非常广泛。

(4)具有结构化的控制语句。

如if…else语句、while语句、do while语句、switch 语句、for语句。

(5)允许直接访问物理地址。

C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。

(6)所生成的目标代码质量高,可移植性好。

2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位。

一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。

3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。

二.运行程序写结果1.输入下面程序并运行。

main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。

main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=200三.编程题1.参照本章例题,编写一个C程序,用于显示如下信息:*************************I love C programs!*************************【分析与提示】①要有文件包含语句#include <stdio.h>。

C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。

这些函数的说明都包括在stdio.h文件中。

②main是主函数的名称。

程序设计基础课后答案 习题答案

程序设计基础课后答案  习题答案
cout<<"二元一次方程的解为x2="<<x2<<endl;
}
}
5、编写输出如图所示的图案
*
**
********
********
********
**
*
#include<iostream>
using namespace std;
#define M 7
#define N 9
int main()
{
int a[M][N]={
cin>>a;
cout<<"Please enter b=";
cin>>b;
cout<<"Please enter c=";
cin>>c;
if(a==0)
{
double x0;
x0=(-c)/b*1.0;有问题??
cout<<"此时为一元一次方程有唯一解"<<x0<<endl;
return;
}
double temp=b*b-4.0*a*c;
算法与程序设计中的递归技术是指将问题分为不同层次的子问题解决每一层问题的难度随层次的降低而减小这些不同层次的问题有极大的相似性可以解决在某层次问题的算法中调用同一算法解决低层次问题这种嵌套的算法调用运行知道最低层次问题的解决
第一章:
一、简答
1、说明计算机系统字符集与计算机语言字符集之间的关系。
答:能够出现在高级语言程序文本中的所有字符(注释除外)构成了计算机高级语言字符集。它们是计算机系统字符集的子集。
cin>>a;

c语言程序设计第五版习题答案解析

c语言程序设计第五版习题答案解析

习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。

【解答】(1)语言简洁、紧凑,使用方便、灵活。

(2)数据类型丰富,表达能力强。

(3)运算符多样。

C语言中的运算符包含的范围非常广泛。

(4)具有结构化的控制语句。

如if…else语句、while语句、do while语句、switch 语句、for语句。

(5)允许直接访问物理地址。

C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。

(6)所生成的目标代码质量高,可移植性好。

2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位。

一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。

3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。

二.运行程序写结果1.输入下面程序并运行。

main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。

main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=2003.输入下面程序并运行。

#include <stdio.h>main(){printf("******\n");printf(" *****\n");printf(" ****\n");printf(" ***\n");printf(" **\n");printf(" *\n");}【解答】运行结果为:*********************思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。

程序设计基础课后答案 第五章

程序设计基础课后答案 第五章
{
int i,m,n;
m=strlen(dest);
n=strlen(a)-m;
try//用于抛出错误
{
for(i=0;i<=n;i++)
{
int k=i;/r(int j=0;j<=m-1;j++)
{
if(a[k]==dest[j])
cout<<"values after function"<<big<<"and"<<small<<endl;
}
分析:输出结果:Values before function 2002 and 0
Values after function 2002 and 0
在函数调用中,可以通过值传递方式在函数间传递数据。但是,这种传递无法改变实参的值。只是因为在进入被调用函数时,变量进行了复制。被调用函数的任何更改和实参没有任何联系。所以,在主程序中打印它的局部变量时,变量值没有任何改变。
double add(double,double);
void main()
{
cout<<add(5,10)<<endl;
cout<<add(5.0,10.6)<<endl;
}
int add(int x,int y)
{
return x+y;
}
double add(double a, double b)
四、编程题
2、编写一个函数,在一个字符串数组中查找"Hello",如果找回返回指向“Hello”开始出的指针;否则抛出一个异常“Not Found”.

c语言程序设计第五版习题答案解析

c语言程序设计第五版习题答案解析

习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。

【解答】(1)语言简洁、紧凑,使用方便、灵活。

(2)数据类型丰富,表达能力强。

(3)运算符多样。

C语言中的运算符包含的范围非常广泛。

(4)具有结构化的控制语句。

如if…else语句、while语句、do while语句、switch 语句、for语句。

(5)允许直接访问物理地址。

C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。

(6)所生成的目标代码质量高,可移植性好。

2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位。

一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。

3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。

二.运行程序写结果1.输入下面程序并运行。

main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。

main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=2003.输入下面程序并运行。

#include <stdio.h>main(){printf("******\n");printf(" *****\n");printf(" ****\n");printf(" ***\n");printf(" **\n");printf(" *\n");}【解答】运行结果为:*********************思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。

c语言程序设计(科学出版社)课后习题解答

c语言程序设计(科学出版社)课后习题解答

第3章习题解答第1章1.C 言语程序主要由预处理命令、函数、注释等组成。

.2.填空(1)分号(2)main(3)stdio.h3.源程序:include<stdio.h>main( ){printf(“XXXXXXXXXXXXXXXXXXXXXXXXX\n〞); printf(“Hello World!\n〞);printf(“XXXXXXXXXXXXXXXXXXXXXXXXX〞);}4.源程序:include <stdio.h>main( ){int a, b, c; /X 定义变量X/scanf(“%d〞, &a); /X 输入第—个整数X/scanf(“%d〞, &b); /X 输入第二个整数X/c=a-b; /X 计算差X/printf(“%d-%d=%d〞,a,b,c); /X 输出结果X/}5.(1)<stdio.h>(2)x=10;(3)printf(“s=%d\n〞,s);第2章1.(1) c(2) a(3) b g(4) a d e(5) d2. a. 5 b. 295 c. 4 d. 29 e. 93. a.x=4,y=6b. x=4,y=3f.x=3,y=64. 165.include<stdio.h>main(){int a,b,c;scanf("%d%d",&a,&b);c=aXb;printf("%dX%d=%d",a,b,c);}第3章1.(1) b(2) b(3) d(4) a(5) b2.(1)&a,&b(2)l,s3. printf(“x=%.2f,y=%.2f\n〞,x,y);4.include<stdio.h>main(){int num1,num2,num3,sum;float average;scanf("%d%d%d",&num1,&num2,&num3);sum=num1+num2+num3;average=sum/3.0;printf("sum=%d,average=%.2f\n",sum,average);}5.include<stdio.h>main(){int hour,minute,second,total; /X 定义变量代表时、分、秒和总秒数X/ scanf("%d",&total);hour=total/3600;minute=total%3600/60;second=total%3600%60;printf("%dhours:%dminutes:%dseconds\n",hour,minute,second);}第4章1.(1) a(2) b(3) b(4) b(5) b2. 03.(1) 6(2) 4(3) 1(4) 14.include <stdio.h>main( ){int x,y;scanf("%d",&x);if (x>-5 &x<0)y=5Xx;if (x == 0)y=-1;if (x>0 &x<10)y=2Xx+1;printf("x=%d,y=%d\n",x,y);}5.include <stdio.h>main( ){int score,rank; /X score 表示成绩,rank 表示级别X/ printf("Please input score:");scanf("%d",&score);rank=score/10;switch(rank){case 10:case 9: printf("成绩等级为:A\n"); break;case 8: printf("成绩等级为:B\n"); break;case 7: printf("成绩等级为:C\n"); break;case 6: printf("成绩等级为:D\n"); break;default:printf("成绩等级为:E\n"); break; }}6.include<stdio.h>void main(){int n;printf("Please input the digit:");scanf("%d",&n);switch(n){case 1:printf("Jan \n");break;case 2:printf("Feb \n");break;case 3:printf("Mar \n");break;case 4:printf("Apr \n");break;case 5:printf("May \n");break;case 6:printf("Jun \n");break;case 7:printf("Jul \n");break;case 8:printf("Agu \n");break;case 9:printf("Sep \n");break;case 10:printf("Oct \n");break;case 11:printf("Nov \n");break;case 12:printf("Dec \n");break;}}第5章1.(1) b(2) a(3) b(4) d(5) d2. 7,13. y=-14. m=65. 10,146. 37. 58. ABABCDCD9.include <stdio.h>main ( )int i;long int sum=0;for (i=2;i<=200;i+=2)sum+=i;printf("2+4+6+...+200=%ld",sum); }10.include <stdio.h>main(){long int n;int sum = 0;printf("Please input the nber:"); scanf("%ld",&n);while(n != 0){sum += n % 10;n /= 10;}printf("%d\n", sum);}第6章1.(1) d(2) b(3) d(4) c(5) a2. 113. 34. 56895. 12,66. (1) i--(2) n7. (1) char k; (2) i<j8.include <stdio.h>main( ){float a10];int i;float sum=0,average;for (i=0;i<10;i++)printf("a%d]=",i);scanf("%f",&ai]);sum+=ai];}average=sum/10;printf("average is %.2f\n",average);}9.include <stdio.h>define N 10main( ){int aN],i,target,found;for (i=0;i<N;i++)scanf("%d",&ai]);printf("Please input a number:");scanf("%d",&target);i=0;while(i<N &target != ai])i++;found = i<Ni:-1;printf("%d\n",found);}10.include <stdio.h>define N 80main( ){char strN];int len=0,i=0;printf("Please input a string:");gets(str);while (stri++!= 0) len++;printf("the length of string is %d.\n",len); }第7章1. 212. 1363. 164. (1) func (2) m++5. 96. 1,6,3,2,37. 2,5,1,2,3,-28.include <stdio.h>int fun(int a,int b,int c);main( ){int a,b,c,max;printf("Please input three numbers:"); scanf("%d%d%d",&a,&b,&c);max=fun(a,b,c);printf("Max is %d.\n",max);}int fun(int a,int b,int c){int max;max= a>b(a>ca:c):(b>cb:c);return max;}9.include <stdio.h>long int sum(int n);main( ){int n;printf("n=");scanf("%d",&n);printf("Sum=%ld.\n",sum(n));}long int sum(int n){if (n = = 1 ) return 1;else return sum(n-1)+n;}10.include <stdio.h>void fun(n);main( ){int n;printf("n=");scanf("%d",&n);fun(n);}void fun(n)if (n = = 0) return;else{fun(n/2);printf("%-2d",n%2);}}第8章1.(1) b(2) d(3) b(4) c(5) c2. 83. 1234567894. 2 3 4 5 65. 3456. 1 2 3 4 5 67. bi8. bcdefgha9. p=sum10.include <stdio.h>include <string.h>main(){char str80];char Xp1, Xp2;gets(str);p1=str;p2=str+strlen(str)-1;while (p1<p2 &Xp1++ == Xp2-- ) ; puts( p1<p2 "不是回文" : "是回文" ); }第9章1.a. define F(x) (x)X(x)X(x)b. define F(x) (x)%4c. define F(x,y) (x)X(y)<1001:02.b. 4c. define DOUBLE(x) 2X(x)3. d4. -205. N is undefined6. 7.57. y=68.include <stdio.h>define SW AP(a,b) {int temp;temp=a;a=b;b=temp;}main(){int x,y;printf("x=");scanf("%d",&x);printf("y=");scanf("%d",&y);SWAP(x,y)printf("x=%d,y=%d.\n",x,y);}第10章1.struct student{int sno;char sname10];char sex;}stu1,stu2;2. 123. 合法的有a,b,dc.改成s.u.rectangle.length=25;e.改成s.u.circle.radius=5;f.改成s.u.circle.radius=5;4. a,b,c,d (说明:变量b 有确定的值之后,b++是合法的。

C语言程序设计(科学出版社)第5章 课后习题参考答案

C语言程序设计(科学出版社)第5章 课后习题参考答案

第5章习题参考答案2填空题(1)32(2)4(3)str1[7]= '\0';(4)for(i=0;i<6;i++) gets(a[i]);(5)strcpy(web, "");(6)int *p=a;(7)5(8)1(9)*(p+6)或*(s+6)4程序阅读题(1)6(2)str(3)60(4)bcdefgacdefgabdefgabc(5)a1e25程序填空题(1)# include <math.h> scanf("%f", &a[i]) s=0; x=a[0] fabs(a[i]-s) (2)scanf("%d",&n) a[i][i]=1 a[i-1][j-1] printf("\n")(3)b[i]!='\0' strcpy puts(b)(4)p=a[0]; 或p=&a[0][0]; *p六、编程题1、使用数组和指针2种方法来处理。

方法一(使用数组)#include <stdio.h>void main(){ int i=0,a[10],t;printf("Enter the 10 number=\n");for(i=0; i<10; i++)scanf("%d",&a[i]);for(i=0;i<5;i++){ t=a[i];a[i]=a[9-i];a[9-i]=t;}for(i=0; i<10; i++)printf("%d ",a[i]);printf("\n");}方法二(使用指针)#include <stdio.h>void main(){ int i=0,a[10],t,*p,*q;printf("Enter the 10 number=\n");for(p=a; p<a+10; p++)scanf("%d",p);p=a;q=a+9;for(;p<q;p++,q--){ t=*p;*p=*q;*q=t;}for(p=a; p<a+10; p++)printf("%d ",*p);printf("\n");}2、方法一(使用数组)#include <stdio.h>main(){int i, j, t, n, a[11]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};for(i=0;i<10;i++)printf("%d ", a[i]);printf("\n");printf("Enter the Move n=?");scanf("%d", &n);for(i=1; i<=n; i++){t=a[10];for(j=9;j>=0;j--) a[j+1]=a[j];a[0]=t;}for(i=0; i<=10; i++)printf("%d ", a[i]);getch();}方法二(使用指针)#include <stdio.h>void main(){ int i,t, n, a[11]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10},*p=a;for(;p<a+11;p++)printf("%d ", *p);printf("\n");printf("Enter the Move n=?");scanf("%d", &n);for(i=1; i<=n; i++){p=a+10;t=*p;for(;p>a;p--) *p=*(p-1);*p=t;}for(p=a;p<a+11;p++)printf("%d ", *p);}3、#include <stdio.h>#include <stdlib.h>main(){int a[100], b[100], i, j, p, n=0, t;randomize();for(i=0; i<100; i++){a[i]=random(100);if(a[i]%2==0) b[n++]=a[i]; }for(i=0; i<n-1; i++){p=i;for(j=i+1; j<n; j++)if(b[j]>b[p]) p=j;t=b[p]; b[p]=b[i]; b[i]=t; }for(i=0; i<n; i++){printf("%d ", b[i]);if(i%10==9) printf("\n"); }getch();}4、#include <stdio.h>#include <stdlib.h>#define N 50main(){int a[N], i, j,p,t; randomize();for(i=0; i<N; i++){a[i]=random(100);for(j=0;j<i;j++)if(a[i]==a[j]){ i--;break;}}for(i=0; i<N-1; i++){p=i;for(j=i+1; j<N; j++)if(a[j]>a[p]) p=j;t=a[p]; a[p]=a[i]; a[i]=t;}for(i=0; i<N; i++){printf("%d ", a[i]);if(i%10==9) printf("\n");}}5、#include <stdio.h>#define N 10void main(){int i;float a[N],s=0.0,x0=0.0;for(i=0;i<N;i++){ scanf("%f",&a[i]);x0+=a[i];}x0/=N;for(i=0;i<N;i++)s+=(a[i]-x0)*(a[i]-x0);printf("%10.6f", s);}6、#define N 4#define M 3void main(){ int i,j,sum,a[N][M+1],max,p;printf("input score\n");for(i=0;i<N;i++) /*i代表学生序号*/{ sum=0; /*每位学生成绩输入前,其总成绩赋初值0*/ for(j=0;j<M;j++) /*j代表课程代号*/{ scanf("%d",&a[i][j]); /*输入第i号学生第j门课程的成绩*/ sum=sum+a[i][j]; /*累加求总成绩*/}a[i][M]=sum; /*求第i个学生的总成绩放到a[i][M]*/ }max=a[0][M];p=0;for(i=1;i<N;i++) /*查找总成绩最高的学生*/if(a[i][M]>max) p=i;printf("No.%d Total score:%d\n",p+1,a[p][M]);}7、#include <stdio.h>void main(){int a[5][6];int i, j, mi, mj;for(i=0; i<5; i++)for(j=0; j<6; j++){printf("input a[%d][%d]:", i, j);scanf("%d", &a[i][j]);}mi=0; mj=0;for(i=0; i<5; i++){for(j=0; j<6; j++){if(a[i][j]<a[mi][mj]) { mi=i; mj=j; }printf("%d ",a[i][j]);}printf("\n");}printf("min=%d ",a[mi][mj]);}8、#include <stdio.h>#include <math.h>void main(){float a[5][6];int i, j, max;printf("Enter array a=?\n" );for(i=0; i<5; i++)for(j=0; j<6; j++)scanf("%f", &a[i][j]);for(i=0; i<5; i++){ max=a[i][0];for(j=0; j<6; j++) /*查找第i行中绝对值最大的元素*/if(fabs(a[i][j])>fabs(max)) max=a[i][j];for(j=0; j<6; j++) /*第i行中所有元素除以绝对值最大的元素*/{ a[i][j]=a[i][j]/max;printf("%8.4", a[i][j]);}printf(" -----max =%8.4\n",max);}}9、#include <stdio.h>#include <string.h>#define N 20main(){char str[N][15],st[15],*p=st;int i, j;for(i=0; i<N; i++)scanf("%s", str[i]);for(i=0; i<N; i++)for(j=0; j<N-i-1; j++)if(strcmp(str[j],str[j+1])>0){strcpy(p,str[j]);strcpy(str[j],str[j+1]);strcpy(str[j+1],p);}for(i=0; i<N; i++)printf("%s\n", str[i]);}10、程序如下:#include <stdio.h>main(){int a[10], b[10], t;int n=0, m=0, i, j, f;printf("Input Array a, end with –1:");scanf("%d", &t);while(n<10 && t!=-1){ a[n++]=t; scanf("%d", &t); }printf("Input Array b, end with –1:");scanf("%d", &t);while(m<10 && t!=-1){ b[m++]=t; scanf("%d", &t); }for(i=0; i<n; i++) /* 打印只在数组a中出现的元素*/{f=1;for(j=0; j<m; j++)if(a[i]==b[j]) {f=0; break;}if(f) printf("%d", a[i]);}for(i=0; i<m; i++) /* 打印只在数组b中出现的元素*/{f=1;for(j=0; j<n; j++)if(b[i]==a[j]) {f=0; break;}if(f) printf("%d", b[i]);}}11、#include <stdio.h>main(){char str[81];int i=-1;printf("Input:");scanf("%s", str);while(++i<80 && str[i]!= '\0')if(str[i]== '$') str[i]= 'S';puts(str);}12、#include <stdio.h>void main(){ char x[80],y[26]; int i,j,ny=0;gets(x);for(i=0;x[i]!='\0';i++)if(x[i]>='A'&&x[i]<='Z') {for(j=0;j<ny;j++)if(y[j]==x[i]) break;if(j==ny) { y[ny]=x[i]; ny++; }}for(i=0;i<ny;i++)printf("%c ",y[i]);printf("\n");}13、#include <stdio.h>void main(){ int m, bin[32],j;scanf("%d",&m);for(j=0;m!=0;j++){bin[j]= m%2;m=m/2;}for(;j!=0;j--)printf("%d", bin[j-1] );}14、#include <stdio.h>#include <string.h>#include <ctype.h>void main(){ char s[80];int i=0;gets(s);while(s[i]!='\0')if(isdigit(s[i])) strcpy (s+i,s+i+1);else i++;puts(s);}15、void main(){int a,b,c;int *p1,*p2,*p3,*t;printf("\nPlease input three integers:\n"); scanf("%d,%d,%d",&a,&b,&c);p1=&a,p2=&b,p3=&c;if(*p1>*p2)t=p1,p1=p2,p2=t;if(*p1>*p3)t=p1,p1=p3,p3=t;if(*p2>*p3)t=p2,p2=p3,p3=t;printf("new order:\n");printf("%d,%d,%d",*p1,*p2,*p3);}16、void main(){char st[80],ss[20],sp[20],*a=st,*b=ss,*t=sp; int i,n,m,p=-1;printf("\nPlease input two string:\n");gets(a);gets(b);n=strlen(a);m=strlen(b);for(i=0;i<=n-m+1;i++){a=st+i;strncpy(t,a,m); /*将字符指针a指向的字符串取前m个字符复制到t所指的字符串中*/if(strcmp(b,t)==0){p=i;break;}}if(p==-1)printf("%d",p);elseprintf("%d",p+1); /*因数组下标从0开始,所以输出p+1*/getch();}17、#include <string.h>void main(){char st[80],*p=st,ch;printf("Enter a string\n");gets(p);while(*p!='\0'){ ch=*p;if(ch>='A' && ch<='Z')ch='A'+('Z'-ch);else if(ch>='a' && ch<='z')ch='a'+('z'-ch);*p=ch; /*转换后的字符替换原字符*/p++; /*指针指向下一个字符*/} /*指针指向字符串首字符*/p=st;puts(p);getch();}18、#include <string.h>void main(){char st[80],*p=st,ch;long k=0;printf("Enter a string\n");gets(p);strupr(p);while(*p!='\0'){ ch=*p;if(ch>='0' && ch<='9' || ch>='A' && ch<='F')p++;elsestrcpy(p,p+1); /*滤去所有的非十六进制字符*/ }p=st;while(*p!='\0') /*将十六制数转换成十进数*/{ ch=*p;if(ch>='0' && ch<='9' )k=16*k+(ch-'0');else if(ch>='A' && ch<='F')k=16*k+(10+ch-'A');p++;}printf("%ld\n",k);}。

C语言程序设计教程 第五章 课后习题参考答案

C语言程序设计教程 第五章 课后习题参考答案
printf("%d\t",f);
k++;
if(k%5==0)
printf("\n");
f1=f2;
f2=f;
}
printf("\n");
return 0;
}
P124 3统计一个整数的位数
#include<stdio.h>
int main()
{
int n,k=0;
printf("请输入n的值:");
int main()
{
int x,y,z,i=0;
for(x=1;x<=20;x++)
{
for(y=1;y<=33;y++)
{
for(z=3;z<=99;z=z+3)
{
if((5*x+3*y+z/3==100)&&(x+y+z==100))
i++;
}
}
}
printf("共有%d种买法:\n",i);
c语言程序设计教程第五章课后习题参考答案
P1242古典问题:兔子总数(斐波那契数列)
#include<stdio.h>
int main()
{
int f1=1,f2=1,f,i,k=0;
printf("%d\t %d\t",f1,f2);
k=k+2;
for(i=3;i<=20;i++)
{
f=f1+f2;
do
{
printf("请输入第%d个整数x=",i);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("空格字符共%d个\n",num_blank);
printf("其他字符共%d个\n",num_other);
}
/*5-1,5-1_for方式1,5-1_for方式2解决的固定数组方式,这样定义一个数组char str[101]存放字符串,
这样我们只有输入100个字符的时候,才能充分有效的使用char str[101]使用的空间,但实际情况是有许多
printf("空格字符共%d个\n",num_blank);
printf("其他字符共%d个\n",num_other);
}
if(str!=NULL)
{free(str);
}
}
2题
#include<stdio.h>
void main()
{int i,j,k,*p1,*p2,*p3;
int temp;
maxlen=-1;
maxrow=-1;
for(i=0;i<M;i++)
{ss=str[i];
curlen=strlen(ss);
if(maxlen<curlen)
{maxlen=curlen;
maxrow=i;
}}Βιβλιοθήκη ss=str[maxrow];
printf("最大字符串是:%s,行号是:%d",ss,maxrow);
{//比较判断当前数组元素(即当前字符)是什么
if('A'<=str[i] && str[i]<='Z')
{num_large++;
}
else
{if('a'<=str[i] && str[i]<='z')
{num_small++;
}
else
{if('0'<=str[i] && str[i]<='9')
}
else
{printf("输入一个字符串,按Enter键结束:");//注意此处没有(最多100个字符)提示了
gets(str);//如果此处只用一个gets(str)会是怎样效果,我们可讨论
gets(str);
for(i=0;*(str+i)!='\0';i++) //'\0'是字符串的结束标志,在字符串输入时,按Enter键回自动转换,按其它键是不会的
程序设计基础,(科学出版社)。c语言
第五章指针,教材答案解析
.1.0
#include<stdio.h>
#include<string.h>
void main()
{char str[101]; //存放字符串
int i;//字符串数组的下标
int num_large=0,num_small=0,num_digit=0,num_blank=0,num_other=0;
printf("输入三个数据(用逗号分隔):");
scanf("%d,%d,%d",&i,&j,&k);
p1=&i;
p2=&j;
p3=&k;
temp=*p1;
*p1=*p2;
*p2=*p3;
*p3=temp;
printf("i=%d,j=%d,k=%d\n",i,j,k);
printf("\n");
#include<stdlib.h>
void main()
{char *str; //定义char型指针
int i;//字符串数组的下标
int charnum;//字符的个数
int num_large=0,num_small=0,num_digit=0,num_blank=0,num_other=0;
}
3题
#include<stdio.h>
#include<string.h>
#define N 10
#define M 3
void main()
{char str[M][N]={"abcdef","123456789","123456"};
char *ss;
int i,maxrow,maxlen,curlen;
printf("请输入你将输入的字符串的字符个数:");
scanf("%d",&charnum);
str=(char *)malloc(sizeof(char)*(charnum+1));//思索sizeof(char)*(charnum+1)为什么是这样的
if(str==NULL)
{printf("申请内存识别,程序无法执行,只好退出!");
printf("输入一个字符串(最多100个字符),按Enter键结束:");
gets(str);//此处不能用scanf("%s",str);,scanf在接受字符串时,在空格处会结束字符串输入,这样空格后的字符就不会进入程序
i=0;
while(str[i]!='\0') //'\0'是字符串的结束标志,在字符串输入时,按Enter键回自动转换,按其它键是不会的
{num_digit++;
}
else
{if(' '==*(str+i))
{num_blank++;
}
else
{num_other++;
}
}
}
}//当前字符比较判断完成
}
printf("大写字母共%d个\n",num_large);
printf("小写字母共%d个\n",num_small);
printf("数字字符共%d个\n",num_digit);
情况下我们输入的字符串不正好是100个字符,当输入的字符个数小于100个时,则字符数组有多余的空间,浪费!
当输入的字符个数大于100个时,则字符数组空间又不够存放,不行!所以数组大小只有在运行时才能定义,也就是动态定义
*/
//此处注意我的程序说明的两种方式
#include<stdio.h>
#include<string.h>
{num_digit++;
}
else
{if(' '==str[i])
{num_blank++;
}
else
{num_other++;
}
}
}
}//当前字符比较判断完成
i++;
}
printf("大写字母共%d个\n",num_large);
printf("小写字母共%d个\n",num_small);
printf("数字字符共%d个\n",num_digit);
{//比较判断当前数组元素(即当前字符)是什么
if('A'<=*(str+i) && *(str+i)<='Z')
{num_large++;
}
else
{if('a'<=*(str+i) && *(str+i)<='z')
{num_small++;
}
else
{if('0'<=*(str+i) && *(str+i)<='9')
相关文档
最新文档