1、C 题库改程题汇总1索引循环4组合11二分法求根 多函数 精度 数据类型12多项式之和 迭带 循环终值13多项式之和 数据类型 循环终值36. 多项式之和23求多项式的和 包含 返回值25求 PI 精度 正负号35级数和 终止值 t=s 的妙用37PI 精度34.数列 前 N 项平方和20菲玻那契数列第 N 项24.分数序列 前 N 项和二维数组1. 二维数组 对角线积 赋初值 输入函数的正确使用(地址)一维数组26数组 找最大数次大数技巧 最小值赋值27数组 统计低于平均值人数 计数 多种传值办法28随机数 选择排序 多函数17.数组 选择排序5一维数组 按要求输出 似二维数组素数2求一个整
2、数的所有质因子 判素数 函数定义 if 条件9按指定条件找素数 判素数的关键环节33若干素数之和 技巧31.判素数指针3求两数的平方根之和 直接间接运算6.两数交换 函数定义形参必分别标注数据类型30传址 形参的声明字符串14统计各元音字母个数 字串 数组下标妙用 字串结束数操作7输出 k 以内最大的 10 个能被 13 或 17 整除的自然数之和 逻辑等于 计数器 大括号18由一个数构成另一个数的技巧(数的逐位取出 由小变大) 逻辑等于19求三个数的最小公倍数20菲玻那契数列第 N 项21字符串转成数 八进制22阶乘 由大向小 技巧29公约数32由一个数转成另一个数 隔位取数15.由一个数转
3、成另一个数16.找含 5 的自然数 数组C 题库改程题汇总2排序8数据交换 三个数的有序排放 10选择排序 内层循环的起始值 1.二维数组 对角线积 赋初值 输入函数的正确使用(地址)/*1.给定程序 modi.c 中,fun 函数的功能是;先从键盘上输入一个 3 行 3 列的距阵的各个元素的值,然后输出主对角线元素之积。请改正程序中的错误,在横线处填上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。以下不再提示*/#include int fun() int a33,sum;int i,j;/*found*/_; sum=1
4、;for (i=0;i#include #include /*found*/double fun(double *a, *b) doublefun(double*a,double*b)#doublefun(double*b,double*a) double c;/*found*/c = sqrt( a ) + sqrt( b ); c=sqrt(*b)+sqrt(*a);#c=sqrt(*a)+sqrt(*b);return c;main ( ) double a, b, y;clrscr( );printf ( “Enter a, b : “);scanf (“%lf%lf“, y = fu
5、n (printf (“y = %f n“, y );4组合/*4 给定程序 modi.c 中函数 fun 的功能是:从 3 个红球,5 个白球,6 个黑球中任意取出 8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是 15。程序中 i 的值代表红球数,j 的值代表白球数,k 的值代表黑球数。*/#include int fun() int i,j,k,sum=0;printf(“nThe result :nn“);/*found*/for(i=0; i=1 printf(“Enter 4 number : “);for(i=0; i
6、0;i-) k=aM-1;for(j=M-1;j0;j-)/*found*/aj=aj+1; aj=aj-1;a0=k;for(m=0; m#include /*found*/void fun(int a,b) voidfun(int*a,int*b)#voidfun(int*b,int*a)int t;/*found*/t=b;b=a;a=t; t=*b;*b=*a;*a=t;#t=*a;*a=*b;*b=t;main()int a,b;clrscr();printf(“Enter a,b:“);scanf(“%d%d“,fun(printf(“a=%d b=%dn“,a,b);7逻辑等于
7、计数器 输出 k 以内最大的 10 个能被 13 或 17 整除的自然数之和/*7 给定程序 modi.c 中,函数 fun 的功能是:计算并输出 k 以内最大的 10 个能被 13 或 17整除的自然数之和。k 的值由主函数传入,若 k 的值为 500,则函数值为 4622。*/#include #include int fun(int k)int m=0,mc=0,j;while (k=2) floatk;C 题库改程题汇总6if (*p*p)#if(0*p-*s)#if(*p-*s#include int fun(int m) int i,k;for (i=m+1;i+) for (k=
8、2;k=i)#if(i#define N 20void fun(int a,int n)C 题库改程题汇总7int i,j,t,p;for (j=0;j0.001)#while(fabs(m-n)0.001) if(funx(r)*funx(n)#include /*found*/int fun(int n) floatfun(intn) float A=1;int i;/*found*/for (i=2;i#include double fun(int m)double y=1.0;int i;/*found*/for (i=2;i#include fun(char *s,int num5)
9、 int k,i=5;for (k=0;k=0)numi+;15.由一个数转成另一个数/*15.将长整型数中的每一位上为奇数的数依次取出 ,构成一个新数放在 t 中,高位仍为高位,低位仍为低位,例如:s 中的数为 :87653142,t 中的数为 7531.*/#include #include void fun(long s,long *t) int d;long s1=1;/*found*/t=0; *t=0; while (s0) d=s%10;/*found*/if (d%2=0) if(d%2!=0)#if(d%2) #if(d%2=1) *t=d*s1+*t;s1*=10;s/=1
10、0;main() long s,t;C 题库改程题汇总10clrscr();printf(“nPlease enter s:“);scanf(“%ld“,fun(s,printf(“The result is:%ldn“,t);16.找含 5 的自然数 数组/*16.从整数 10 到 55 之间,选出能被 3 整除且至少有一位上的数是 5 的那些数,并把这些数放在 b 所指的数组中,这些数的个数作为函数值返回.规定:函数中的 a1 中放个位数,a2 中放十位数.*/#include fun (int *b) int k,a1,a2,i=0;for (k=10;k#include #includ
11、e #define N 20/*found*/void fun(int a,int n) voidfun(int*a,intn)#voidfun(inta,intn)#voidfun(intaN,intn) int i,j,k,t;for(j=0;jak)k=i; t=aj;aj=ak;ak=t;C 题库改程题汇总11main() int aN,i;clrscr();for(i=0;i#include void fun(long s,long *t)int d;long s1=1;*t=0;while (s0)d=s%10;/*found*/if (d%2=0) if(d%2=0)#if(!(
12、d%2)*t=d*s1+*t;s1*=10; /*found*/s=10; if(d%2=0)#if(!(d%2)main()long s,t;clrscr();printf(“nPlease enter s:“);scanf(“%ld“,fun(s,printf(“The result is:%ldn“,t);19求三个数的最小公倍数/*19.函数 fun 的功能是:求三个数的最小公倍数。如:变量 x1,x2,x3 分别输入 15 11 2,则输出结果应当是:330。*/#include fun(int x,int y,int z) int j,t,n,m;j=1;C 题库改程题汇总12t=
13、j%x;/*found*/m=t%y; m=j%y;n=j%z;while(t!=0|m!=0|n!=0)j=j+1;t=j%x;m=j%y;/*found*/n=t%z; n=j%z;return j;main() int x1,x2,x3,j;printf(“Input x1 x2 x3: “);scanf(“%d%d%d“,printf(“x1=%d,x2=%d,x3=%dn“,x1,x2,x3);j=fun(x1,x2,x3);printf(“The minimal common multiple is :%dn“,j);20菲玻那契数列第 N 项/*20 函数 fun 的功能是:求广
14、义菲玻那契级数的第 n 项。广义菲玻那契级数的前 n 项为:1,1,1,3,5,9,17,31,.项值通过函数值返回 main()函数。例如:若 n=15,则应输出:2209。*/#include #include long fun(int n) long a=1,b=1,c=1,d=1,k;/*found*/For(k=4;kint fun(char *p)C 题库改程题汇总13int n;/*found*/n=*p-o; n=*p-0;p+;while (*p!=0) /*found*/ n=n*7+*p-o; n=n*8+*p-0;#n=*p-0+n*8;p+; return n;mai
15、n()char s6;int i;int n;printf(“Enter a string(0catal digits): “);gets(s);if(strlen(s)5)printf(“Error:String too longer !nn“);exit(0);for (i=0;si;i+)if(si7)printf(“Error:%c not is ocatal digits!nn“,si);exit(0);printf(“The original string:“);puts(s);n=fun(s);printf(“n%s is convered to integer number:
16、%dnn“,s,n);22阶乘 由大向小/*22.函数 fun 的功能是:计算 n!,如:给 n 输入 5,则输出 120.00000。*/#include #include double fun(int n)double result=1.0;/*found*/if n=0 if(!n)#if(n=0)#if(0=n)return 1.0;while(n1 double t,y=0;for (i=1;i#include /*found*/fun(int n) doublefun(intn) int a,b,c,k;double s;s=0.0;a=2;b=1;for(k=1;k#includ
17、e float fun(float num) int s;float n,t,pi;C 题库改程题汇总15t=1;pi=0;n=1;s=1;/*found*/while(t=num) while(fabs(t)=num)pi=pi+t;n=n+2;s=-s;/*found*/t=s%n; t=s/n;pi=pi*4;return pi;main()float n1,n2;clrscr();printf(“Enter a float number:“);scanf(“%f“,n2=fun(n1);printf(“%6.4fn“,n2);26数组 找最大数次大数技巧 最小值赋值/* 26 求出 a
18、 所指数组中最大数和次最大数(规定最大数和次最大数不在 a0和 a1中) ,依次和 a0和 a1中的数对调。例如:原有数组为:7,10 ,12,0,3,6,9,11,5,8结果数组为:12,11,7,0,3,6,9,10,5,8*/#include #include #define N 20int fun(int *a,int n)int k,m1,m2,max1,max2,t;max1=max2=-32768;m1=m2=0;for (k=0;kmax1) max2=max1;m2=m1;max1=ak;m1=k;else if (akmax2) max2=ak;m2=k;/*found*/
19、t=a0;am1=a0;am1=t; t=a0;a0=am1;am1=t;#t=am1;am1=a0;a0=t;/*found*/t=a1;am2=a1;am2=t; t=a1;a1=am2;am2=t;#t=am2;am2=a1;a1=t; C 题库改程题汇总16main() int x,bN=7,10,12,0,3,6,9,11,5,8,n=10,i;clrscr();for (i=0;i#include #define N 20int fun(float *s,int n ,float *aver)float ave,t=0.0;int count=0,k,i;for (k=0;kai)
20、 p=i; if(apai)p=i;#if(aiint fun(int a,int b)int r,t;if(a#include /*found*/void fun(double a,b,double x,y) voidfun(doublea,doubleb,double*x,double*y)/*found*/x=a*b;y=a/b; *x=a*b;*y=a/b;#*y=a/b;*x=a*b;main()double a,b,c,d;clrscr();printf(“Enter a,b: “);scanf(“%lf%lf“,fun(a,b,printf(“c=%f d=%fn“,c,d);3
21、1.判素数/*31.判断一个整数是否是素数 ,若是返回 1,否则返回为 0,在 main()函数中,若 fun 函数返回 1,输出 YES,若返回 0,输出 NO!.*/#include #include int fun(int m) int k=2;while (k#include /*found*/void fun(long s,long t) voidfun(longs,long*t)#voidfun(long*t,longs) long s1=10;*t=s%10;while (s0) s=s/100;*t=s%10*s1+*t;/*found*/s1=s1*100; s1=s1*10
22、;#s1*=10;#s1=10*s1;main()long s,t;clrscr();printf(“nPlease enter s:“);scanf(“%ld“,fun(s,printf(“The result is:%ldn“,t);33若干素数之和 技巧/*33 计算输出 high 以内最大的 10 个素数之和,high 由主函数传给 fun 函数,若 high 为:100,则函数值为 732。*/#include #include #include int fun(int high)int sum=0,n=0,j,yes;/*found*/while (high=2)for (j=2;
23、j#include #include /*found*/fun(int n) doublefun(intn) double sum,s0,s1,s2,s;int k;sum=1.0;if (n#include double fun(double q)/*found*/int n;double s,t; doublen;doubles,t;#doubles,t,n;#doublen,s,t;C 题库改程题汇总21n=2;s=2.0;while (sdouble fun(int n) int i;double t,s,a,b,c;/*found*/s=1; s=0; a=1;b=2;for(i=0;i#include double fun(double eps) double s,t; int n=1;s=0.0;/*found*/t=0; t=1;#t=1.;#t=1.0;while (teps)s+=t;t=t*n/(2*n+1);n+;/*found*/return(s); return(s*2);#returns*2;#return(2*s);#return2*s;main()double x;printf(“nPlease enter a precision:“);scanf(“%lf“,printf(“neps=%lf,Pi=%lfnn“,x,fun(x);