C程序设计编程题复习大纲.doc
C程序设计复习大纲一试卷题型:选择(10题共20分,有部分读程序题)填空(20个空共20分)判断(10题共10分)程序填空(5题10个空共20分)编程题(3题每题10分30分)二除了编程题外,其他题涉及范围较广,无复习大纲,要求具体全面掌握,特别强调的是:(1)+,-使用(2)指针的概念和基本用法(3)数组的用法和地址运算(4)基本字符处理函数的功能其中编程题的复习范围(可能有部分变化,所以请写出并理解程序,不要死记硬背)1. 计算1-1/2+1/3-1/4-.+1/99-1/100的值,并显示出来。#include”stdio.h”main()int c,s;float ch;ch=0for (c=1;c<100;c+)if(c%2=0)s=-1;else s=1;ch+=s*(1/(float)c);Printf(“sum=%f”,ch);2.先写一递归函数求N!,然后在主程序中求1+2!+3!+.+20!的和。main() int n,i=1;long sum=0,s=1; scanf("%d",&n); while(i<=n) s=s*i;sum=sum+s;i+; printf("sum=%ldn",sum); 3.求水仙花数#include <math.h>#include <stdio.h>int sxh(int i) if (i/100)*(i/100)*(i/100)+(i/10)%10)*(i/10)%10)*(i/10)%10)+(i%10)*(i%10)*(i%10)=i) return 1; else return 0;int main() int q; for(q=100;q<=999;q+) if(sxh(q)=1) printf("%d 是水仙花数n",q); return 0;打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=13+53+33。 #include"math.h" main() int x=100,a,b,c; while(x>=100&&x<1000) a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b; if(x=(pow(a,3)+pow(b,3)+pow(c,3) printf("%5d",x);x+; 4. 编写一程序,实现对输入的10个整数进行排序main() int i,j,a10,t; for(i=0;i<10;i+) scanf("%d",&ai); for(j=1;j<10;j+) for(i=0;i<=9-j;i+) if(ai>ai+1) t=ai+1;ai+1=ai;ai=t; for(i=0;i<10;i+) printf("%5d",ai); 或 main() static int a10,i,j,k,t; for(i=1;i<11;i+) scanf("%d",&ai); for(j=1;j<10;j+) for(i=1;i<=10-j;j+) if (ai>ai+1) t=ai+1;ai+1=ai;ai=t; for(i=1;i<11;i+) printf("%d",ai); printf("n"); 5. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.编程找出1000以内的所有完数。main() int m,i,j,s; for(m=6;m<10000;m+) s=1; for(i=2;i<m;i+) if(m%i=0) s=s+i; if(m-s=0) printf("%5d its fastors are 1 ",m);for(j=2;j<m;j+) if(m%j=0) printf("%d ",j);printf("n"); 或 main() int m,i,j,s; for(m=6;m<1000;m+) s=m-1; for(i=2;i<m;i+) if(m%i=0) s=s-i; if(s=0) printf("%5d its fastors are 1 ",m);for(j=2;j<m;j+) if(m%j=0) printf("%d ",j);printf("n"); 6. 编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。例如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba。void fun(char*s)int i,n=0;char *p=s; while(*p!='0') p+; n+;for(i=0;i<n/2;i+) char ch; ch=si; si=*(-p); *p=ch; 7. 求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。#include<stdio.h>#include<math.h>int main() int a, b, c, d, sum; scanf("%d", &a); sum = 0; for(d = 3; d <= a; d+) /小于等于a的素数累加 for(c = 2; c <= sqrt(d); c+) /判断是否为素数 if(d% c = 0) break; if(c>sqrt(d) sum = sum + d; /累加素数 printf("%d", sum); /输出结果,无素数则输出0 8. 请编写函数fun,函数的功能是:实现B=A+A,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。#include<stdio.h>#define N 3fun(int aNN,int bNN) int i,j; for(i=0;i<N;i+) for(j=0;j<N;j+) bij=aij+aji;/注意转置就是行列下标颠倒一下 void main() int i,j; int aNN=1,2,3,4,5,6,7,8,9,bNN; fun(a,b); for(i=0;i<N;i+) for(j=0;j<N;j+) printf("%3d",bij); printf("n"); 更直观的#include<stdio.h>#define N 3fun(int aNN,int bNN) int i,j; for(i=0;i<N;i+) for(j=0;j<N;j+) bij=aij+aji;/注意转置就是行列下标颠倒一下 void main() int i,j; int aNN=1,2,3,4,5,6,7,8,9,bNN; fun(a,b); printf("A:n"); for(i=0;i<N;i+) for(j=0;j<N;j+) printf("%3d",aij); printf("n"); printf("nA':n"); for(i=0;i<N;i+) for(j=0;j<N;j+) printf("%3d",aji); printf("n"); printf("nB':n"); for(i=0;i<N;i+) for(j=0;j<N;j+) printf("%3d",bij); printf("n"); 9. 打印出杨辉三角形(要求打印出10行如下图,请注意形状) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10105 1main()int i,j;int a1010;printf(“n”);for(i=0;i<10;i+)ai0=1;aii=1;for(i=2;i<10;i+)for(j=1;j<I;j+)aij=ai-1j-1+ai-1j;for(i=0;i<10;i+)for(j=0;j<=i;j+)printf(“%5d”,aij);printf(“n”);10. 从键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入#include<stdio.h>void main() int max,min,a; max=-1; min=1000; while(1) scanf("%d",&a); if(a<0)break; if(max<a)max=a; if(min>a)min=a; printf("max=%d,min=%d",max,min);