计算机C语言上机编程题_第1页
计算机C语言上机编程题_第2页
计算机C语言上机编程题_第3页
计算机C语言上机编程题_第4页
计算机C语言上机编程题_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、每个编程题都需要编写两个或两个以上函数。第四章例题及书后习题:【例4-10】计算组合数。#includevoid main() int m,n;long cmn,factorial(int);scanf(“%d%d”,&m,&n);cmn=factorial(m)/factorial(n)/factorial(m-n);printf(“Result=%ldn”,cmn);getch();long factorial(int x) long y=1;for(;x0;x-)y=y*x;return(y); 【例4-13】请设计程序,从键盘上输入两个正整数a和b,求它们的最大公约数。#include

2、int gcd(int a,int b) int r; while(b!=0) r=a%b;a=b;b=r; return a; main() int a,b,c; scanf(%d%d,&a,&b); printf(%dn,gcd(a,b); getch(); 【例4-14】给定正整数n,求所有小于n的n的互质数。互质数是指两个数没有除1以外的公约数,如:n=9,则2、4、5、7、8为9的互质数。请按如下的输出格式输出: n=9- 2 4 5 7 8。#includeint huzhi(int m,int n) int j; for(j=2;j”,n);for(m=2;mn;m+)if(hu

3、zhi(m,n)printf(“%3d”,m);getch();【例4-15】请设计程序,从键盘上输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#includeint letter,digit,space,other;void stat(char c) if(c=A&c=a&c=0&c=9)digit+; else other+;void main() char c;while(c=getchar()!=n)stat(c);printf(“letter=%d digit=%d space=%d other=%dn”,letter,digit,space,other);get

4、ch(); 【例4-16】 用迭代法求的近似值。迭代公式为:。要求前后两次求出值的差的绝对值小于10-6时迭代中止。#include#includefloat square(float a) float x0,x1; x0=a/2; x1=0.5*(x0+a/x0); while(fabs(x0-x1)=1.0e-6) x0=x1; x1=0.5*(x0+a/x0); return x1;void main() float a; scanf(“%f”,&a); if(a0) printf(“a is negetive”); else printf(“square(%.1f)=%.1f”,a,s

5、quare(a); getch(); 【例4-17】用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的一个近似实根,要求绝对值误差不超过10-5。#include#includefloat f(float x) return 2*x*x*x-4*x*x+3*x-6; void main() float m=-10,n=10,r; r=(m+n)/2.0;while(1) if(f(m)*f(n)0)n=r; else m=r; if(fabs(f(r)1e-5)break;r=(m+n)/2.0; printf(“The result is %6.3fn”,r);getch()

6、;书后编程题:1.程序的功能是:寻找并输出11至999之间的数m,它满足m、m2、m3均为回文数。例如m=11,m2=121,m3=1331皆为回文数,故m=11是满足条件的一个数。请设计函数int value(long m),其功能是判断m是否是回文数,如是,则函数返回1,否则返回0。#include int value(long m) int a80,i,j=1; for(i=1;m!=0;i+) ai=m%10; m=m/10; i-; while(ji) return 1; else return 0; main() long m;int a,b,c; for(m=11;m=999;m

7、+) a=value(m);b=value(m*m);c=value(m*m*m); if(a+b+c)=3)printf(%dn,m); getch();2编程,通过函数调用求从键盘上任意输入的一个正整数的反序数。如:输入为123,则调用函数后的输出结果为321。#includevoid nixu(int x,int n)int a,i;for(i=0;in;i+) if(i=0) a=x%10; printf(%d,a); else if(i=1) nixu(x/10,n-1); void main() int x,y,n=1; printf(Input integer:); scanf(

8、%d,&x); y=x; while(y/10!=0) y/=10; n+; nixu(x,n); getch();3编程,通过函数调用输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。#includeint shuxian(n) int i,j,k; i=n/100; j=n/10-i*10; k=n%10; if(n=i*i*i+j*j*j+k*k*k) return 1; else return 0; void main() int n,m; for(n=100;n1000;n+) m=shuxian(n); if(m=1) printf(%dn,n

9、); getch();4一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。编程,通过函数调用求它在第10次落地时,共经过多少米?第10次反弹多高?#includemain()void move(float h,float s);float h=100,s=100;move(h,s);getch();void move(float h,float s)int i; for(i=2;i=10;i+) h/=2; s+=2*h; h/=2; printf(The whlole length is %4.1fnthe tenth height is %4.1f,s,h); getch(

10、); 5编程,通过函数调用计算级数前n项的例如,输入n10,x=0.3时,函数值为1.。#include float jiecheng(float x,int n) int i=1; float sum=0.0,term=1.0; while(i=n) sum+=term; term*=x/i; i+; return sum; main() float x;int n; scanf(%d%f,&n,&x); printf(%fn,jiecheng(x,n); getch(); 第五章例题及书后习题:【例5-1】请设计顺序查找法程序。程序设计要求如下:(1) 编写函数int search(int

11、 a,int n,int x),其功能是在长度为n的数组中查找整数x是否存在,若存在函数返回x在数组中的下标,否则返回-1。(2) 编写函数main,定义并初始化一个一维数组a,接受从键盘上输入的整数x,用a和x作为实在参数调用函数search,根据调用函数得到的结果,输出x所在的下标或输出“Not found!”。#includeInt search(int a,int n,int x) int i; for(i=0;in;i+)if(ai=x)break;if(in)return 1;else return -1;main() char a10=10,9,8,7,6,5,4,3,2,1;i

12、nt x,i;scanf(“%d”,&x);i=search(a,10,x);if(i!=-1)printf(“%d”,i);else printf(“Not found!”);getch();【例5-2】请设计选择排序法程序。程序设计要求如下:(1) 编写函数void sort(int a,int n),其功能是将长度为n的数组a中的元素按升序排列。(2) 编写函数main,定义一个数组a,从键盘上输入10个整数依次赋给数组中的各个元素,用a和10作为实在参数调用函数sort对a数组排序,并输出排序后的结果。#includevoid sort(int a,int n) int i,t,j,k

13、; for(i=0;in-2;i+) k=i; for(j=i+1;jaj)k=j; t=ai;ai=ak;ak=t; main() int i,a10=10,9,8,7,6,5,4,3,2,1; sort(a,10); for(i=0;i10;i+) printf(%3d,ai); getch(); 【例5-3】从键盘上输入数据给一个35的整型数组赋值,找出数组中最大元素值及其所在的行列位置。#include int zhao(int a35) int i,j,maxi=0,maxj=0,max; max=a00; for(i=0;i3;i+) for(j=0;jmax) max=aij;m

14、axi=i;maxj=j; printf(%3d %d %d,max,maxi,maxj); main() int a35,i,j; for(i=0;i3;i+) for(j=0;j5;j+) scanf(%3d,&aij); zhao(a); getch(); 【例5-4】请设计程序,求矩阵a的转置矩阵。【例5-12】从键盘上输入一行文本,统计其中有多少个单词(假设连续的一组字母视为一个单词,单词之间用空格分隔)。#include int danci(char str80) int i,k=0,count=0; if(str0!= )count+; for(i=1;stri!=0;i+) i

15、f(stri!= &stri-1= ) count+; printf(%d,count); void main() char str80; gets(str); danci(str); getch(); 【例5-13】输入一行英文字符,对其加密后输出。加密方法为:每个字母取其后的第3个字母,并保持原来的大小写状态,如A变成D,B变成E, ,X变成A,Y变成B,Z变成C,。#includeint jiasan(char str80) int i,j=0; for(i=0;stri!=0;i+) j=stri+3; if(j90&j122&j126) j=j-26; stri=j; main()

16、char str80; int i; gets(str); jiasan(str); puts(str); getch(); 【例5-14】使用冒泡排序法将a数组中的10个数按升序排列。#includevoid sort(int a10) int i,j,t; for(i=0;i9;i+) for(j=i+1;jaj) t=ai;ai=aj;aj=t; main() int i,a10=10,9,8,7,6,5,4,3,2,1; sort(a); for(i=0;i10;i+) printf(%5d,ai); getch(); 【例5-15】利用插入排序法将a数组中的10个数按升序排列。#in

17、cludevoid sort(int a,int n) int i,j,t; for(i=1;i=0&ajt) aj+1=aj;j-; aj+1=t; void main() int i,a10=10,9,8,7,6,5,4,3,2,1; sort(a,10); for(i=0;i10;i+) printf(%5d,ai); getch(); 【例5-16】(折半查找法)设a数组已有初值且已按升序排列,从键盘上输入一个整数,判断它在a数组中是否存在,若存在输出其下标,若不存在,输出找不到的信息。#includeint sort(int a10,int x) int low=0,mid,high

18、=9; while(low=high) mid=(low+high)/2; if(amid=x)break; else if(xamid)high=mid-1; else low=mid+1; if(low=high)printf(%3d,mid); else printf(Not found!); main() int a10=2,4,6,8,10,12,14,16,18,20,x; scanf(%3d,&x); sort(a,x); getch();【例5-17】(删除元素)设长度为10的a数组已有初值,从键盘输入一个整数,查找它是否存在于a数组中,若存在删除该元素并输出删除元素后的a数组

19、。#includeint sort(int a10,int x,int i,int j) for(i=0;i10;i+) if(ai=x) break; for(j=i;j9;j+) aj=aj+1; main() int a10=1,2,3,4,5,6,7,8,9,10,i=0,j=0,x; scanf(“%3d”,&x); sort(a,x,i,j); if(i10) for(j=0;j9;j+) printf(“%3d”,aj);else printf(“Not found!”);getch(); 【例5-18】(插入元素)设a数组已有初值且已按降序排序,输入一个整数,将它插入到a数组中

20、,使数组依然有序。#includeint sort(int a11,int x) int i,j; for(i=0;i11;i+) if(ai=i;j-) aj+1=aj; ai=x; main() int i,x,a11=10,9,8,7,6,5,4,3,2,1; scanf(%3d,&x); sort(a,x); for(i=0;i11;i+) printf(%3d,ai); getch(); 书后编程题:4将某一维数组中的元素值逆序存放。如原顺序为1,3,5,2,4,6,逆序存放后顺序为6,4,2,5,3,1。#includeint sort(int a6) int i,j,t; for

21、(i=0,j=5;ij;i+,j-) t=ai;ai=aj;aj=t;main() int a6=1,3,5,2,4,6,i; sort(a); for(i=0;i6;i+) printf(%3d,ai); getch(); 5设数组已有初值,并按降序排列,输入一个数x,用折半查找法找出x是数组中的第几个元素,若找不到,输出“No found”。#includeint sort(int a10,int x) int i=0,mid,k=9; while(i=k) mid=(i+k)/2; if(amid=x)break; else if(xamid)i=mid+1; else k=mid-1;

22、 if(i=k)printf(%3d,mid); else printf(Not found!); main() int a10=20,18,16,14,12,10,8,6,4,2,x; scanf(%3d,&x); sort(a,x); getch();6输入一个十进制整数,编写程序将它转换为二进制(或八进制)整数并输出。(1)二进制:#includevoid sort(int x) int i=0,j,a100; ai=x%2; x=x/2; while(x!=0) i+; ai=x%2; x=x/2; for(j=i;j=0;j-)printf(%d,aj);void main() in

23、t x; scanf(%d,&x); sort(x); getch(); (2)八进制:#include int sort(int x) int a100,i=0,j; ai=x%8; x=x/8; while(x!=0) i+; ai=x%8; x=x/8; for(j=i;j=0;j-)printf(%d,aj); main() int x; scanf(%d,&x); sort(x); getch(); 7编写程序,输出杨辉三角形的前n行:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 8输入一个十六进制数的字符串,编写程序将它转换为十进制整数并输出。#in

24、cludeint fun(int m,int n) int t=m,k; for(k=1;kn;k+) t*=16; return t; main()char a100; int i=0,j,t,s=0; ai=getchar(); while(ai!=n) i+; ai=getchar(); for(j=0;ji;j+) if(0=aj&aj=9) t=fun(aj-48,i-j); else if(A=aj&aj=F) t=fun(aj-65+10,i-j); else t=fun(aj-97+10,i-j); s+=t; printf(%d,s); getch(); 9已知奇数数组a和偶

25、数数组b均已按升序排列,要求将两数组元素值按升序合并入数组c中。#includevoid sort(int a5,int b5) int i=0,j=0,k=0,m,c10; while(j5&i5) if(aibj) ck=ai;i+;k+; else ck=bj;j+;k+; if(i=5) for(;j5;j+) ck=bj;k+; else for(;i5;i+) ck=ai;k+; for(m=0;m10;m+) printf(%3d,cm);void main() int a5=1,3,5,9,11,b5=2,4,8,10,12; sort(a,b); getch(); 实验报告编程题:题目设n0是一个给定的正整数。对于i=0,1,2,定义:若ni是偶数,则ni+1=ni/2;若ni是奇数,则ni+1=3ni+1;若ni是1,则序列结束。用这种方法产生的数称为冰雹数(hailstone)。请编写一个函数void hailstones(int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论