c语言学习知识编程题规范标准答案.doc
《c语言学习知识编程题规范标准答案.doc》由会员分享,可在线阅读,更多相关《c语言学习知识编程题规范标准答案.doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-!六、编程题参考答案1编程,统计在所输入的50个实数中有多少个正数、多少个负数、多少个零。 #include stdio.h #define N 50 void main() float x; unsigned int s1,s2,s3,i; s1=s2=s3=0; for(i=1;i=N;i+) scanf(%f,&x); if(x0) s1+; else if(x=0) s2+; else s3+; printf(负数%u个,零%u个,正数%u个n,s1,s2,s3); 2. 编程,计算并输出方程 X2+Y2=1989 的所有整数解。 #include stdio.h void main
2、() int x,y; for(x=-45;x=45;x+) y=-45; while(y=45) if(x*x+y*y=1989) printf(%d*%d+%d*%d=%dn,x,x,y,y,1989); y+; 3编程,输入一个10进制正整数,然后输出它所对应的八进制、十六进制数。 #include stdio.h void main() unsigned int x; printf(请输入一个十进制正整数:); scanf(%u,&x); printf(%d=八进制数 %o=十六进制数%xn,x,x,x); 4编程,找出1000以内的所有完数,并输出其因子。 #include stdi
3、o.h void main() int i,j,s=1; for(i=1;i=1000;i+,s=1) for(j=2;j=i/2;j+) if(i%j=0) s+=j; / 求 i的因子和 if(s=i) printf(%d=1,i); / 如果i 是完数则输出其各因子 for(j=2;j=i/2;j+) if(i%j=0) printf(+%d,j); printf(n); 5. 输入一个正整数,输出它的所有质数因子。 #include stdio.h void main() int m,i=2; printf(请输入一个整数:); scanf(%d,&m); while(m!=1) if
4、(m%i=0) printf(%d ,i); m/=i; else i+; printf(n); 6. 输入20个整数,输出其中能被数组中其它元素整除的那些数组元素。 #include stdio.h #define N 20 void main() int aN,i,j; for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN;i+) for(j=0;jN;j+) if(ai%aj=0&i!=j) printf(%dn,ai); break; 7. 输入两个数组(数组元素个数自定),输出在两个数组中都出现的元素。 #include stdio.h #define N
5、A 6 #define NB 8 void main() float aNA,bNB; int i,j; for(i=0;iNA;i+) scanf(%f,&ai); for(i=0;iNB;i+) scanf(%f,&bi); for(i=0;iNA;i+) for(j=0;jNB;j+) if(ai=bj) printf(%fn,ai); break; 8. 输入两个数组(数组元素个数自定),输出在两个数组中都不出现的元素。 #include stdio.h #define NA 6 #define NB 8 void main() float aNA,bNB; int i,j; for(
6、i=0;iNA;i+)scanf(%f,&ai); for(i=0;iNB;i+)scanf(%f,&bi); for(i=0;iNA;i+) for(j=0;jNB;j+) if(ai=bj) break; if(j=NB) printf(%f ,ai); printf(n); for(i=0;iNB;i+) for(j=0;jNA;j+) if(bi=aj) break; if(j=NA) printf(%f ,bi); printf(n); 9编程,将字符数组S2中的全部字符拷贝到字符数组S1中。 #include stdio.h void main() char s120,s2=Goo
7、d morning!; int i=0; while(s1i+=s2i)!=0); printf(%sn,s1); 10给定年份year,判别该年份是否闰年(定义一个宏以判别该年份是否闰年)。 #include #define f(year) year%4=0&year%100!=0|year%400=0 void main() int y; printf(请输入年份:); scanf(%d,&y); if(f(y) printf(%d 年为闰年n,y); else printf(%d 年不是闰年n,y); 11输入一行小写字母后,或输出原文,或将字母变成其下一字母(a变成b、b变成c、x变成
8、y、y变成z、z变成a)输出,用条件编译方法实现以上选择。 #include #define MAX 80 #define SWITCH 1 void main() char strMAX; int i=0; printf(请输入文本行:n); scanf(%s,str); #if(SWITCH) while(stri!=0) if(stri=a&stri=z) if(stri=z)stri=a; else stri+; i+; #endif printf(%sn,str); 12. 编写函数,处理n行n列维数组:将每一行的元素同除以该行上绝对值最大的元素。 #include stdio.h
9、#include math.h void div(float* a,int n) int i,j; float x; for(i=0;in;i+) x=*(*(a+i); for(j=1;jfabs(x) x=*(*(a+i)+j); for(j=0;jn;j+) *(*(a+i)+j)/=x; return; void main() / 函数引用示例 float b33=1,2,3,4,5,6,7,8,9; int i,j; float* c3; for(i=0;i3;i+) ci=bi; div(c,3); for(i=0;i3;i+) for(j=0;j3;j+) printf(%f ,
10、bij); printf(n); 13. 编写函数,求任意阶多项式 a0+a1X+a2X2+.+anXn 的值并返回多项式的值。 #include stdio.h float f1(float* a,float x,int n) int i; float t=1,y=0; for(i=0;in;i+) y+=*(a+i)*t; t*=x; return y; void main() / 函数引用示例 float b4=1,2,3,4; printf(%fn,f1(b,2,4); 14. 设计一个函数,使给出一个数的原码,能得到该数的补码。 #include / 假定sizeof(int)为2;
11、 unsigned int getbit(unsigned int value) /第1位为0表示数的原码, if(value15) return (value0x7fff)+1; /其补码即其原码;若value else return value; /右移15位后为1,表示value是负数的原码,负数 /的补码为原码按位取反(第1位不变)后加1。 void main() unsigned int y=0x800c,k; k=getbit(y); printf(%xn,k); 15. 编写函数,求m行、n列的二维数组全体元素中负数的个数。 #include int sum(float *a,i
12、nt m,int n) int i,j; int y=0; for(i=0;im;i+) for(j=0;jn;j+) if(*(*(a+i)+j)0) y+; return y; void main() / 函数引用示例 float b23=-1,2,-3,4,-5,-6; int i; float* c2; for(i=0;i2;i+) ci=bi; printf(%dn,sum(c,2,3); 16. 编写函数,返回在一个整数组中出现次数最多的数及其出现次数。 #include void fun(float *a,int n,int *k,float *x) int i,j,y; *k=
13、0; for(i=0;in;i+) y=0; for(j=0;j*k) *k=y; *x=*(a+i); return; void main() / 函数引用示例 float c10=0,4,2,4,3,2,4,-3,1.5,7.6,t; int m; fun(c,10,&m,&t); / 若说明float *t; int *m; printf(元素%f出现次数为%dn,t,m); / 引用为 fun(c,10,m,t) 将 / 产生悬挂指针的错误,即t、m不只指向确定的存储单元。17编一个程序,打入月份号,输出该月的英文月名,要求用指针数组处理。 #include void main() c
14、har *month_name12=January,February,March,April, May, June,July,August,September,October, Novenber,December; int n; printf(请输入月份号:); scanf(%d,&n); if(n12) printf(月份号输入错误!n); else printf(%d月的英文表示是%sn,n,month_namen-1); 18编写递归函数,将输入的以“?”结束的字符串按与输入相反的顺序输出。 #include void pline() char ch; if(ch=getchar()!=
15、?) pline(); putchar(ch); return; void main() / 函数引用示例 pline(); printf(n); 19. 编写函数,在n个元素的一维数组中,统计比相邻元素大的数组元素个数并将统计数返回(不考虑a0和an-1),要求以指针变量而不是数组名作参数。 #include int num(float *x,int n) int i,k=0; for(i=1;i*(x+i-1)&*(x+i)*(x+i+1) k+; return k; void main() / 函数引用示例 float a10=1,3,4,2,6,7,12,5,9,8; printf(%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 知识 编程 规范 标准答案
限制150内