上机考试程序设计题_第1页
上机考试程序设计题_第2页
上机考试程序设计题_第3页
上机考试程序设计题_第4页
上机考试程序设计题_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、上机程序调试及程序设计练习一、程序填空(1) 找Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1#include #includevoid main() int i,a,b,c;for(i=100;i=999;i+) a=i/100;_1_ c=i%10;if (_2_) printf(%d is a Armstrong number!n,i);(2) 输入1个整数后,输出该数的位数。(例:输入3214则输出4,输入-23156则输出5)。#include void main() int n,k=0; scanf(%d,&n); while( _1_ ) k+; _2

2、_; printf(%dn,k);(3) 求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。#include #include void main() int n,s=0; scanf(%d,&n); _ 1 _ while(n!=0) _ 2 _ n=n/10; printf(%dn,s);(4) 调用函数f,将一个整数首尾倒置。例如:若程序输入12345,则输出54321;若程序输入-34567,则输出-76543。#include #include long f(long n) long m,y=0; m=fabs(n); while(m!=0) y=y*10+m%1

3、0; _1_ if(n=0) return y; else _2_ void main()printf(%ldt,f(12345); printf(%ldn,f(-34567);(5) 调用函数f,从字符串中删除所有的数字字符。#include #include #include void f(char *s) int i=0; while(si!=0) if(isdigit(si) _1_(s+i,s+i+1); _2_ i+; void main() char str80; gets(str); f(str); puts(str);(6) 调用find函数在输入的字符串中查找是否出现the

4、这个单词。如果查到返回出现的次数,如果未找到返回0。#include int find(char *str) char *fstr=the; int i=0,j,n=0; while (stri!=0) for(_1_) if (strj+i!=fstrj) break; if (_2_) n+; i+; return n;void main() char a80; gets(a); printf(%d,find(a);(7) 输入的一个小写字母,将字母循环后移5个位置后输出。例如:a变成f,w变成b。#include void main() char c; c=getchar(); if(_

5、1_) c=c+5; else if (c=v & c=z) _2_ putchar(c);(8) 将字符串s中所有的字符c删除。#include void main() char s80; int i,j; gets(s); for(i=j=0; _1_; i+) if(si != c) sj=si; _2_ sj=0; puts(s);(9) 对x=1,2,10,求f(x)=x*x-5*x+sin(x)的最大值。#include #include #define f(x) x*x-5*x+sin(x)void main() int x; float max; _1_ for(x=2;x=1

6、0;x+) _2_ printf(%fn,max);(10) 输入三个整数,按由小到大的顺序输出这三个数。#include void swap(_1_) /*交换两个数的位置*/ int temp; temp = *pa; *pa = *pb; *pb = temp;void main() int a,b,c,temp; scanf(%d%d%d,&a,&b,&c); if(ab) swap(&a,&b); if(bc) swap(&b,&c); if(_2_) swap(&a,&b); printf(%d,%d,%d,a,b,c);(11) 调用函数f,去除数组中的负数,输入数组x7 =1,

7、-2,3,4,-5,6,-7,输出结果为:1 3 4 6#include / 数组元素的删除void f(int *a,int *m) int i, j ; for(i=0;i*m;i+) if(ai0) for(j=i-;j*m-1;j+) aj=aj+1; _1_; void main() int i,n=7,x7=1,-2,3,4,-5,6,-7; _2_; for(i=0;in;i+) printf(%5d,xi); printf(n);(12) 调用函数f计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x当x=1.7时的值。#include

8、float f(float, float*, int);void main() float b5=1.1, 2.2, 3.3, 4.4, 5.5 ; printf(%fn, f(1.7,b,5) );float f( _1_ ) float y=a0, t=1; int i; for(i=1; in; i+) t=t*x; y=y+ai*t; _2_ (13) 分别统计字符串中英文字母、数字、和其他字符出现的次数。#include #include void main() char a80; int n3=0, i; gets(a) ; _1_ if (tolower(ai)=a & tolo

9、wer(ai)=z) /*统计字母个数*/ n0+; else if (_2_) /*统计数字个数*/ n1+; else n2+; for(i=0;i3;i+) printf(%dn,ni); (14) 将输入的十进制整数n通过函数DtoH函数转换为十六进制数,并将转换结果以字符串形式输出。(例如:输入十进制数79,将输出十六进制4f。)# include # include char trans(int x)if(x10) return 0+x;else _1_ int DtoH(int n,char *str)int i=0;while(n!=0)_2_ n/=16;i+; return

10、 i-1;void main()int i,k,n;char *str; / 注意:题目有错!str是悬挂指针。应改为: char str80;scanf(%d,&n);k=DtoH(n,str);for (i=0;i=k;i+) printf(%c,strk-i);(15) 将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。#include void Dec2Bin(int m) int bin32,j; for(j=0;m!=0;j+) binj= _1_; m=m/2; for( ; j!=0; j- ) printf(%d, _2_ ); void main

11、() int n; scanf(%d,&n); Dec2Bin(n);(16) 数列的第1、2项均为1,此后各项值均为该项前二项之和。计算数列第30项的值。#include _1_ void main() printf(%ldn,f(30) ;long f(int n) if( _2_ ) return 1; else return f(n-1)+f(n-2);(17) 该程序计算四位学生的平均成绩,保存在结构中,然后列表输出这些学生的信息。#include struct STUDENT char name16; int math; int english; int computer; int

12、 average;void GetAverage(struct STUDENT *pst) /* 计算平均成绩 */ int sum=0; sum = _1_; pst-average = sum/3;void main() int i; struct STUDENT st4=Jessica,98,95,90,Mike,80,80,90, Linda,87,76,70,Peter,90,100,99; for(i=0;i4;i+) GetAverage(_2_); printf(NametMathtEnglishtComputAveragen); for(i=0;i4;i+) printf(%

13、st%dt%dt%dt%dn,,sti.math,sti.english, puter,sti.average); (18) 输入m、n(要求输入数均大于0)。输出它们的最大公约数。#includevoid main() int m, n, k;while ( scanf(%d%d, &m, &n), _1_ ); for (_2_ ; n%k!=0 | m%k!=0 ; k-) ; printf(%dn, k);(19) 求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行3个元素的形式输出。例如:b1=a0+a1,b9=a8+a9。#include v

14、oid main() int a10,b10,i; printf(nInput 10 numbers: ); for (i=0; i10;i+) /* 数组输入 */ scanf(%d, &ai); for (i=1; i10; i+) bi=_1_; /* 计算b数组中的元素 */ for (i=1; i0),求m使得2的m次方小于或等于n,2的m+1次方大于或等于n。#include void main() int m=0,t=1,n; while( _ 1 _); while(!(t=n) _ 2 _ m+; printf(“%dn”,m);二、程序改错(1) 输入一个字符串,将组成字符

15、串的所有非英文字母的字符删除后输出。#include #include / 注意:题目有错!应增加一行:#include void main() char str256; int i,j,k=0,n; gets(str); n=strlen(str); for(i=0;in;i+) /*1*/ if (tolower(stri)z) /*2*/ strn=stri; n+; strk=0; printf(%sn,str);(2) 输入一个字符串,将组成字符串的所有字符先按顺序存放到字符串t中,再将字符串中的字符按逆序连接到字符串t后面。例如:输入ABCD,则字符串t为ABCDDCBA。#inc

16、lude #include void fun(char *s,char *t) int i,sl; sl=strlen(s); for(i=0;isl;i+) ti=si; for(i=0;isl;i+) /*1*/ tsl+i=ssl-i; /*2*/ tsl=0; void main() char s100,t100; scanf(%s,s); fun(s,t); printf(%s,t);(3) 运行时输入10个数,然后分别输出其中的最大值、最小值。#include void main() float x,max,min; int i; /* 1 */ for(i=0;imax) max

17、=x; if(xmin) min=x; printf(%f,%fn,max,min);(4) 用选择法对10个整数按升序排序。#include #define N 10void main() int i, j, min, temp ; int aN=5, 4, 3, 2, 1, 9, 8, 7, 6, 0 ; printf(nThe array is:n); /* 输出数组元素 */ for (i=0;iN;i+) printf(%5d,ai); for (i=0;iN-1;i+) /* 排序操作 */ min = i; for (j=i+1; jN; j+) /* 1 */ if (amin

18、=aj) min =j; /* 2 */ temp=amin; amin=aj; aj=temp; /*数据交换*/ printf(nThe sorted numbers: n); /* 输出排序结果 */ for (i=0;iN;i+) printf(%5d,ai); printf(n);(5) 输入x和正数eps,计算多项式1-x+x*x/2-x*x*x/3!+的和直到末项的绝对值小于eps为止。#include #include void main() float x,eps,s=1,t=1,i=1; scanf(%f%f,&x,&eps); do /* 1 */ t=-t*x/+i;

19、s+=t; /* 2 */ while(fabs(t)eps); printf(%fn,s);(6) 运行时若输入a、n分别为3、6,则输出下列表达式的值:3+33+333+3333+33333+333333。#include void main() int i,a,n; long t=0; /* 1 */ s=0; scanf(%d%d,&a,&n); for(i=1;i=n;i+) /* 2 */ t=t*10+i; s=s+t; s=s*a; printf(%ldn,s);(7) 用递归法将一个六位整数n转换称字符串。例如:输入123456,应输出字符串123456。#includevo

20、id itoa(long i,char *s) if(i=0) return; /* 1 */ *s = 1+i%10; itoa(i/10,s-1);void main() long n; char str7=; scanf(%ld,&n); /* 2 */ itoa(n,str+6); printf(%s,str);(8) 输入n,再输入n个点的平面坐标,然后输出那些距离坐标原点不超过5的点的坐标值。#include #include #include void main() int i,n; /* 1 */ struct axy float x,y; a; scanf(%d,&n); a

21、=(float*) malloc(n*2*sizeof(float); for(i=0;in;i+) /* 2 */ scanf(%f%f,ai.x,ai.y); for(i=0;in;i+) if(sqrt(ai.x*ai.x+ai.y*ai.y)=5) printf(%f,%fn,ai.x,ai.y);(9) 运行时输入n,则输出n的所有质数因子。例如:n=13860,则输出2、2、3、3、5、7、11。#include void main() int n,i; scanf(%d,&n); /* 1 */ i=1; while(n1) if(n%i=0) printf(%dt,i); n/

22、=i; else /* 2 */ n+; 三、编写程序(1) 在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数,将该数以格式%d写入到考生文件夹中Paper子文件夹下的新建文件Design1.dat中。#include #include void main() /*考生在这里添加代码*/ (2) 若a、b为1对亲密数,则a的因子和等于b、b的因子和等于a、且a不等于b。如:220、284是1对亲密数,284、220也是1对亲密数。在65000内找出所有的亲密数对,并将每对亲密数用语句fprintf( p, %6d, %6dn, a, b)写入到考生文件夹中Paper子文

23、件夹下的新建文件Design2.dat。#include void main() FILE *p; int a,b,c,k; p=fopen(design.dat,w); /*考生在这里添加代码*/(3) 设计程序:计算字符串s中每个字符的权重值,所谓权重值就是字符在字符串中的位置值与该字符的ASCII码值的乘积。位置值从1开始依此递增。将每个字符的权重值,以格式%d 写入到源程序目录中Paper子目录下的新建文件design.dat中。#include#includevoid main() FILE *p; int i,w; char *s=we45*&y3r#$1; /*考生在这里添加代码

24、*/。注意这里不要忘了添加 (4) 将数组a的每一行均除以该行上绝对值最大的元素,然后将a数组写入到考生文件夹中Paper子文件夹下的新建文件Design1.dat。#include #include void main() float a33=1.3,2.7,3.6,2,3,4.7,3,4,1.27; FILE *p; float x; int i,j; /*考生在这里添加代码*/ /*添加代码结束*/ p=fopen(design.dat,w); for(i=0;i3;i+) for(j=0;j3;j+) fprintf(p,%10.6f,aij); fprintf(p,n); fclos

25、e(p);(5) z=f(x,y)=(3.14*x-y)/(x+y),若x、y取值为区间1,6的整数,找出使z取最小值的x1、y1,并将x1、y1以格式%d,%d写入到考生文件夹中Paper子文件夹下的新建文件Design2.dat。#include void main() FILE *p; float f(float x,float y),min; int x,y,x1,y1; /*考生在这里添加代码*/ /*添加代码结束*/float f(float u,float v) return (3.14*u-v)/(u+v); (6) z=f(x,y)=10*cos(x-4)+5*sin(y-2

26、),若x、y取值为区间0,10的整数,找出使z取最小值的x1、y1,并将x1、y1以格式%d,%d写入到考生文件夹中Paper子文件夹下的新建文件Design2.dat。#include#includevoid main() FILE *p; int x,y,x1,y1; float z,z1; /*考生在这里添加代码*/ (7) 设计程序:数组元素xi、yi表示平面上某点坐标,统计所有各点间最短距离,并将其值以格式%f写到源程序目录中Paper子目录下的新建文件design.dat中。#include #include #define len(x1,y1,x2,y2) sqrt(x1-x2)

27、*(x1-x2)+(y1-y2)*(y1-y2)void main() FILE *p; int i,j; float c,minc; float x=1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65; float y=-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33; minc=len(x0,y0,x1,y1); /*考生在这里添加代码*/(8) 设计程序:在数组x的10个数中求平均值v,找出与v相差最小的数组元素并将其以格式%.5f写到考生目录中Paper子目录下的新建文件design.dat中。#in

28、clude #include void main() FILE *p; int i, k=0; float x10=7.23,-1.5,5.24,2.1,-12.45,6.3,-5,3.2,-0.7,9.81,d,v=0;for(i=0;i10;i+) v+=xi; v=v/10; d=fabs(x0-v); /*考生在这里添加代码*/ (9) 对x=1,2,10,求函数f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式.3f写入到考生文件夹中Paper子文件夹下的新建文件Design1.dat。#include #include void main() FILE *p

29、; float f(float),max,x; /*考生在这里添加代码*/(10) 将字符串s中的所有字符按ASCII值从小到大重新排序后,将排序后的字符串写入到考生文件夹中Paper子文件夹下的新建文件Design2.dat。#include #include void main() FILE *p; char *s=634,.%w|SQ2,c; int i,j,k,n=strlen(s); /*考生在这里添加代码*/ (11) 在整数数组a中找出偶数放到b数组中,对b数组按从小到大的顺序进行排序后以格式%3d每行3个数写入到考生文件夹中Paper子文件夹下的新建文件Design1.dat。

30、#include void main() FILE *p; int i,j,temp,n=0; int a10=7,6,20,3,14,88,53,62,10,29,b10; /*考生在这里添加代码*/(12) 计算多项式a0+a1*x+a2*x*x+a3*x*x*x+a9*x*x*x*x*x*x*x*x*x的值,并将其值以格式%f写入到考生文件夹中Paper子文件夹下的新建文件Design2.dat。#include #include void main() FILE *p; int i; float x=1.279,t=1,y=0; float a10=1.1,3.2,-2.5,5.67,

31、3.42,-4.5,2.54,5.6,0.97,4.65; /*考生在这里添加代码*/(13) 利用公式/41-1/3+1/5-1/7+公式计算的近似值,直到某一项的绝对值小于1e-6为止。(/4的结果不包含此项)将计算结果以格式%.6f写入到考生文件夹中Paper子文件夹下的新建文件Design1.dat。#include #include void main() FILE *fp; float n=1,t=1,pi=0; int i; /*考生在这里添加代码*/(14) 计算表达式1+2!+3!+12!的值,并将计算结果以格式%ld写入考生文件夹中Paper子文件夹下的新建文件Design

32、2.dat。#include void main() FILE *p; long s=1,k=1; int i; /*考生在这里添加代码*/(15) 计算数列1,-1/3!,1/5!,-1/7!,1/9!,的和至某项的绝对值小于1e-5时为止(该项不累加),将求和的结果以格式%.6f写入到考生文件夹中Paper子文件夹下的新建文件Design1.dat中。#include #include void main() FILE *p; float s=1,t=1,i=3; /*考生在这里添加代码*/(16) 计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+.

33、+a9*sin(x*x*x*x*x*x* x*x*x)的值,并将结果以格式%.6f写入到考生文件夹中Paper子文件夹下的新建文件Design2.dat中。#include#includevoid main() FILE *p; int i; float x=2.345,t=1.0,y=0.0; float a10=1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9; /*考生在这里添加代码*/(17) 有数列:2/1,3/2,5/3,8/5,13/8,21/13,.求出数列的前40项的和。将计算结果以格式%.6f写入到考生文件夹中Paper子文件夹下的新

34、建文件Design1.dat中。#includevoid main() FILE *p; int i; float f1=1.0,f2=2.0,t1=2.0,t2=3.0,s; float f,t; s=t1/f1+t2/f2; /*考生在这里添加代码*/(18) 累加a字符串各个字符的ASCII码值,然后将累加和以格式%d写入到考生文件夹中Paper子文件夹下的新建文件Design2.dat中。#include void main() FILE *p; int s=0,i=0; char *a=r235%34cdDW,.; /*考生在这里添加代码*/(19) 计算2的平方根、3的平方根、10

35、的平方根之和,要求计算结果具有小数点后10位有效位数,并以格式%.10fn写入到考生文件夹中Paper子文件夹下的新建文件Design2.dat中。#include #include void main() FILE *p; /*考生在这里添加代码*/(20) xi,yi分别表示平面上的 一个点的 坐标,求下列10个点与点(1.0,1.0)的 距离的总和,并将结果以格式%.6f写入到考生文件夹中Paper子文件夹下的新建文件Design2.dat。#include#includevoid main() FILE *p; int i; float x10=-1.5,2.1,6.3,3.2,-0.

36、7,7.0,5.1,3.2,4.5,7.6; float y10=3.5,7.6,8.1,4.5,6.0,1.1,1.2,2.1,3.3,4.4; float s=0.0; /*考生在这里添加代码*/(21) 在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数,将该数以格式%d写入到考生文件夹中Paper子文件夹下的新建文件Design1.dat中。#include #include void main() /*考生在这里添加代码*/(22) 寻找并输出11至999之间的数m,它满足m、m*m、m*m*m均为回文数。说明:所谓回文数是指各位数字左右对称,例如121、676

37、、94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int JSValue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果写入到考生文件夹中Paper子文件夹下的新建文件Design2.dat。#include#include#includeint JSValue(long m) /*考生在这里添加代码*/ /*添加代码结束*/void main() FILE *p;long m; p=fopen(design.dat,w); for(m=11;m1000;m+) if(JSValue(m)&JSValue(m*m)&J

38、SValue(m*m*m) fprintf(p,%ld ,m); fclose(p);(23) 数组元素xi、yi表示平面上某点坐标,统计10个点中处在圆(方程为:(x-1)*(x-1)+(y+0.5)*(y+0.5)=25)内的点数k,并将变量k的值以格式%d写入到考生文件夹中Paper子文件夹下的新建文件Design1.dat。#include #include void main() FILE *p; int i,k=0; float x=1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65; float y=-6,4.3,4.5,3.67,2.4

39、2,2.54,5.6,-0.97,4.65,-3.33; /*考生在这里添加代码*/ (24) 某公司1999年年产量11.5万件,生产能力每年提高9.8%,求出产量能超过x万件的年份,结果由函数Year返回。分别计算当x=20和x=30时的结果,将计算结果写入到考生文件夹中Paper子文件夹下的新建文件Design1.dat。#includeint Year(int x) int p=11.5,y=1999; /*考生在这里添加代码*/ /*添加代码结束*/void main() FILE *p; p=fopen(design.dat,w); fprintf(p,%d,%d,Year(20),Year(30); fclose(p);(25) 求斐波那契(Fibonacci)数列中其前40项之和,(斐波那契数列的定义为后一项为前两项之和),并将求和的结果以格式%d写入到考生文件夹中Paper子文件夹下的新建文件Design2.dat。#include void main() FILE *p; long s=0,i,a40; /*考生在这里添加代码*/(26) 求斐波那契(Fabonacci)数列中大于t的最小的一个数,结果由函数JSValue返回,其中斐波那契数列F(n)的定义为:F(0)=0, F(1)=1F(n)=F(

温馨提示

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

评论

0/150

提交评论