c语言编程题答案解析

六、编程题参考答案

1.编程,统计在所输入的50个实数中有多少个正数、多少个负数、多少个零。 #include \ #define N 50 void main()

{ float x; unsigned int s1,s2,s3,i; s1=s2=s3=0;

for(i=1;i<=N;i++) { scanf(\

if(x<0) s1++; else if(x==0) s2++; else s3++; }

printf(\负数%u个,零%u个,正数%u个\\n\ }

2. 编程,计算并输出方程 X2+Y2=1989 的所有整数解。 #include \ void main() { int x,y;

for(x=-45;x<=45;x++) { y=-45;

while(y<=45) {

if(x*x+y*y==1989)

printf(\ y++; } } }

3.编程,输入一个10进制正整数,然后输出它所对应的八进制、十六进制数。 #include \ void main()

{ unsigned int x;

printf(\请输入一个十进制正整数:\ scanf(\

printf(\八进制数 %o=十六进制数%x\\n\ }

4.编程,找出1000以内的所有完数,并输出其因子。 #include \

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(\ // 如果i 是完数则输出其各因子 for(j=2;j<=i/2;j++)

if(i%j==0) printf(\ printf(\ } } }

5. 输入一个正整数,输出它的所有质数因子。

#include \ void main() { int m,i=2;

printf(\请输入一个整数:\

while(m!=1) if(m%i==0){ printf(\ \ printf(\ }

6. 输入20个整数,输出其中能被数组中其它元素整除的那些数组元素。 #include \ #define N 20 void main() { int a[N],i,j;

for(i=0;i

if(a[i]%a[j]==0&&i!=j) { printf(\ }

7. 输入两个数组(数组元素个数自定),输出在两个数组中都出现的元素。 #include \ #define NA 6 #define NB 8 void main()

{ float a[NA],b[NB]; int i,j;

for(i=0;i

for(i=0;i

if(a[i]==b[j]) { printf(\ }

8. 输入两个数组(数组元素个数自定),输出在两个数组中都不出现的元素。 #include \ #define NA 6 #define NB 8 void main()

{ float a[NA],b[NB]; int i,j;

for(i=0;i

for(j=0;j

printf(\

for(i=0;i

for(j=0;j

printf(\ }

9.编程,将字符数组S2中的全部字符拷贝到字符数组S1中。 #include \ void main()

{ char s1[20],s2[]=\ int i=0; while((s1[i++]=s2[i])!='\\0'); printf(\ } 10.给定年份year,判别该年份是否闰年(定义一个宏以判别该年份是否闰年)。 #include

#define f(year) year%4==0&&year0!=0||year@0==0 void main() { int y;

printf(\请输入年份:\ if(f(y)) printf(\年为闰年\\n\ else printf(\年不是闰年\\n\ }

11.输入一行小写字母后,或输出原文,或将字母变成其下一字母(a变成b、b变成c、…、x变成y、y变成z、z变成a)输出,用条件编译方法实现以上选择。

#include #define MAX 80 #define SWITCH 1 void main()

{ char str[MAX]; int i=0;

printf(\请输入文本行:\\n\ #if(SWITCH)

while(str[i]!='\\0')

if(str[i]>='a'&&str[i]<='z')

if(str[i]=='z')str[i]='a'; else str[i]++; i++; #endif

printf(\ }

12. 编写函数,处理n行n列维数组:将每一行的元素同除以该行上绝对值最大的元素。

#include \ #include \ void div(float** a,int n) { int i,j; float x; for(i=0;i

if(fabs(*(*(a+i)+j))>fabs(x)) x=*(*(a+i)+j); for(j=0;j

return; }

void main() // 函数引用示例

{ float b[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j; float* c[3];

for(i=0;i<3;i++) c[i]=b[i]; div(c,3); for(i=0;i<3;i++) {

for(j=0;j<3;j++) printf(\ } }

13. 编写函数,求任意阶多项式 a0+a1X+a2X2+...+anXn 的值并返回多项式的值。

#include \

float f1(float* a,float x,int n)

联系客服:779662525#qq.com(#替换为@)