c语言大题.docx_第1页
c语言大题.docx_第2页
c语言大题.docx_第3页
c语言大题.docx_第4页
c语言大题.docx_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

/*-【程序填空】-功能:编程求某年第n天的日期。用数组表示月天数。-*/#include #include main() int y,m,f,n; int a12=31,28,31,30,31,30,31,31,30,31,30,31; printf(y,n=); scanf(%d,%d,&y,&n); /*SPACE*/ f=y%4=0&y%100!=0【|】y%400=0; /*SPACE*/ a1【+=或=a+】f; if(n365+f) printf(error!n);exit(0); /*SPACE*/ for(m=1;m【】am-1;n-=am-1,m+); printf(y=%d,m=%d,d=%dn,y,m,n);/*- 【程序改错】-功能:首先把b所指字符串中的字符按逆序存放, 然后将a所指字 符串中的字符和b所指字符串中的字符,按排列的顺序交叉 合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如:当a所指字符串中的内容为“abcdefg”,b所指字符串中的 内容为“1234”时,c所指数组中的内容应该为“a4b3c2d1 efg”;而当a所指字符串中的内容为“1234”,b所指字符 串中的内容为“abcdefg”时,c所指数组中的内容应该为 “1g2f3e4dcba”。-*/#include #include #include void fun( char *a, char *b, char *c ) int i , j; char ch; i = 0; j = strlen(b)-1; /*FOUND*/ while ( i j ) 改为while(ij) ch = bi;bi = bj;bj = ch;i+; j-; /*FOUND*/ While ( *a &*b )改为while(*a|*b) if ( *a ) *c = *a; c+; /*FOUND*/ a+; 改为a+; if ( *b ) *c = *b; c+; b+; *c = 0;main() char s1100,s2100,t200; printf(nEnter s1 string : ); scanf(%s,s1); printf(nEnter s2 string : ); scanf(%s,s2); fun( s1, s2, t ); printf(nThe result is : %sn, t );/*-【程序设计】-功能:根据整型形参m,计算如下公式的值:y=sin(m)*10。例如:若m=9,则应输出:4.121185-*/#include #includemath.hvoid wwjt(); double fun(int m) /*Program*/ double y=0; y=sin(m)*10; return(y); /* End */main() int n; printf(Enter n: ); scanf(%d, &n); printf(nThe result is %1fn, fun(n); wwjt(); void wwjt() FILE *IN,*OUT; int i ; int t; double o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(i=0;i5;i+) fscanf(IN,%d,&t); o=fun(t); fprintf(OUT,%fn,o); fclose(IN); fclose(OUT);/*-【程序填空】-功能:三角形的面积为:area=sqrt(s*(s-a)*(s-b)*(s-c).其中 ,s=(a+b+c)/2,a、b、c为三角形三条边的长。定义两个带 参数的宏,一个用来求s,另一个用来求area。编写程序, 在程序中用带参数的宏求面积area。-*/#include #include math.h/*SPACE*/#【define】 S(x,y,z)(x+y+z)/2#define AREA(s,x,y,z)sqrt(s*(s-x)*(s-y)*(s-z)main() double area; float a,b,c,s; printf(a,b,c=); /*SPACE*/ scanf(%f,%f,%f,&a,【&b】,&c); if(a+bc&b+ca&c+ab) /*SPACE*/ s=【S(a,b,c)】; /*SPACE*/ area=【AREA(s,a,b,c)】; printf(area=%fn,area); /*- 【程序改错】-功能:一个已排好序的一维数组,输入一个数number,要求按原来 排序的规律将它插入数组中.-*/#include main( ) int a11=1,4,6,9,13,16,19,28,40,100; int temp1,temp2,number,end,i,j; /*FOUND*/ for(i=0;i=10;i+) 改为(i=0;iend) /*FOUND*/ a11=number;改为a10=number; else for(i=0;i10;i+) /*FOUND*/ if(ainumber) temp1=ai; ai=number; for(j=i+1;j11;j+) temp2=aj; aj=temp1; temp1=temp2; break; for(i=0;i11;i+) printf(%6d,ai);/*-【程序设计】-功能:找出一批正整数中的最大的偶数。-*/#include void wwjt(); int fun(int a,int n) /*Program*/ Int i,amax=-1; For(i=0;iamax) amax=ai; Return amax; /* End */ main() int a=1,2,9,24,35,18,k; k=fun(a,6); printf(max=%dn,k); wwjt();void wwjt() FILE *IN,*OUT; int iIN10,iOUT,i,j; IN=fopen(28.IN,r); if(IN=NULL) printf(Please Verify The Currernt Dir.it May Be Changed); OUT=fopen(28.out,w); if(OUT=NULL) printf(Please Verify The Current Dir. it May Be Changed); for(j=0;j10;j+) for(i=0;i10;i+) fscanf(IN,%d,&iINi); iOUT=fun(iIN,10); fprintf(OUT,%dn,iOUT); fclose(IN); fclose(OUT);/*-【程序填空】-题目:有以下程序段,且变量已正确定义和赋值 for(s=1.0,k=1;k=n;k+) s=s+1.0/(k*(k+1); printf(s=%fnn,s); 请填空,使下面用/./标识的程序段的功能与 之完全相同。-*/#include main() double s; int k,n=10; /*SPACE*/ 【s=1】; k=1; /*SPACE*/ while(【k=n】) s=s+1.0/(k*(k+1); /*SPACE*/ 【k+】; printf(s=%fnn,s);/*- 【程序改错】-功能:读入一行英文文本,将其中每个单词的最后一个字母改成 大写,然后输出此文本行 (这里的“单词”是指由空格 隔开的字符串)。例如:若输入“i am a student to take the examination.”, 则应输出“i aM A studenT tO takE thE examination.”。-*/#include conio.h#include #include ctype.h#include string.hup1st ( char *p ) /*FOUND*/ integer k = 0;改为int k=0; for ( ; *p; p+ ) if ( k ) /*FOUND*/ if ( *p = )改为if (*p=) k = 0; /*FOUND*/ *(p -1 ) = toupper( *( p - 1 ); 改为*(p-1)=toupper(*(p-1); else if ( *p != ) k = 1; *( p-1 ) = toupper( *(p-1) ); main( ) char chrstr81; printf( nPlease enter a string: ); gets ( chrstr ); printf( nnBefore changing:n %s, chrstr ); up1st( chrstr ); printf( nAfter changing:n %s, chrstr );/*-【程序设计】-功能:将从键盘上输入的每个单词的第一个字母转换为 大写字母,输入时各单词必须用空格隔开,用. 结束输入。 -*/#include #include string.hvoid wwjt(); int fun(char *c,int status) /*Program*/ If(*c=) return 1; else if(status&*c=a) *c+=A-a; Return 0; /* End */ main() int flag=1; char ch; printf(请输入一字符串,用点号结束输入!n) ; do ch=getchar(); flag=fun(&ch, flag); putchar(ch); while(ch!=.); printf(n); wwjt(); void wwjt( ) char s181, ch; unsigned int i, flag = 1; FILE *rf, *wf ; rf = fopen(in.dat, r) ; wf = fopen(out.dat, w) ; fgets(s1, 80, rf) ; for(i = 0 ; i strlen(s1); i+) ch = s1i ; flag = fun(&ch, flag) ; s1i = ch ; fprintf( wf,%s, s1 ); fclose(rf) ; fclose(wf) ; /*-【程序填空】-功能:计算个人与各科平均成绩及全班平均成绩,并在屏幕上显 示出来。-*/#include #define M 5 /*定义符号常量 人数为5*/#define N 4 /*定义符号常量 课程为4*/main() int i,j; void aver(float scoM+1N+1); static float scoreM+1N+1=78,85,83,65, 88,91,89,93, 72,65,54,75,86,88,75,60,69,60,50,72; aver(score); printf(学生编号 课程1 课程2 课程3 课程4 个人平均n); for(i=0;iM;i+) printf(学生%dt,i+1); /*SPACE*/ for(j=0;j【5】;j+) printf(%6.1ft,scoreij); printf(n); for(j=0;j8*(N+2);j+) printf(-); printf(n课程平均); for(j=0;jN+1;j+) printf(%6.1ft,scoreij); printf(n);void aver(float scoN+1) int i,j; /*SPACE*/ for(i=0;i【5】;i+) for(j=0;jN;j+) scoiN += scoij; scoMj += scoij; scoMN += scoij; /*SPACE*/ scoiN 【/=】 N; for(j=0;jN;j+) /*SPACE*/ scoM【j】 /= M; scoMN=scoMN/M/N; /*- 【程序改错】-功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。-*/#include #define N 20 void fun(int a, int n) int i, j, t, p; for (j = 0 ;j n-1 ;j+) /*FOUND*/ p = j 改为p=j; for (i = j;i ap) 改为if(aiap) /*FOUND*/ p=j; 改为p=i; t = ap ; ap = aj ; aj = t; main() int aN=9,6,8,3,-1,i, m = 5; printf(排序前的数据:) ; for(i = 0;i m;i+) printf(%d ,ai); printf(n); fun(a,m); printf(排序后的数据:) ; for(i = 0;i 10) z=log(x+3) (x-3) z=sin(x)/(cos(x)+4)-*/#include #includevoid wwjt(); double y(float x) /*Program*/ Double z; If(x10) z=exp(x); Else if (x-3) z=log(x+3); Else z=sin(x)/(cos(x)+4); Return(z); /* End */main() float x; scanf(%f,&x); printf(y=%fn,y(x); wwjt();void wwjt() FILE *IN,*OUT; int n; float i; double o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(n=0;n10;n+) fscanf(IN,%f,&i); o=y(i); fprintf(OUT,%ldn,o); fclose(IN); fclose(OUT);/*-【程序填空】-功能:计算并输出high以内最大的10个素数之和,high由主函数传 给fun函数,若high的值为100,则函数的值为732。-*/#include #include #include int fun( int high ) int sum = 0, n=0, j, yes; /*SPACE*/ while (high = 2) & (【n10】) yes = 1; for (j=2; j=high/2; j+ ) /*SPACE*/ if (【!(high%j)】) yes=0; break; if (yes) sum +=high; n+; high-; /*SPACE*/ 【return(sum)】;main ( ) printf(%dn, fun (100);/*- 【程序改错】-功能:从m个学生的成绩中统计出高于和等于平均分的学生人数, 此人数由函数值返回。平均分通过形参传回,输入学生成 绩时,用-1结束输入,由程序自动统计学生人数。例如:若输入 8 名学生的成绩,输入形式如下: 80.5 60 72 90.5 98 51.5 88 64 -1 结果为: The number of students :4 Ave = 75.56。-*/#include #include #define N 20 int fun ( float *s, int n, float *aver ) float av, t ; int count , i; count = 0; t=0.0; for ( i = 0; i n; i+ ) t += s i ; av = t / n; printf( ave =%fn,av ); for ( i = 0; i n; i+ ) /*FOUND*/ if ( s i =av) count+; /*FOUND*/ aver = av; 改为 *aver=av; /*FOUND*/ return count 改为return count;main() float a, s30, aver; int m = 0; printf ( nPlease enter marks ( -1 to end):n ); scanf(%f,&a ); while( a0 ) sm = a; m+; scanf ( %f, &a ); printf( nThe number of students : %dn , fun ( s, m, &aver ); printf( Ave = %6.2fn,aver );/*-【程序设计】-功能:将两个两位数的正整数a、b合并形成一个整数放在 c中。合并的方式是:将a数的十位和个位数依次放 在c数的百位和个位上, b数的十位和个位数依次放 在c数的十位和千位上。 例如:当a45,b=12。调用该函数后,c=2415。 -*/#include void wwjt(); void fun(int a, int b, long *c) /*Program*/ *c=a/10*100+a%10+b/10*10+b%10*1000; /* End */main() int a,b; long c; printf(input a, b:); scanf(%d%d, &a, &b); fun(a, b, &c); printf(The result is: %ldn, c); wwjt(); void wwjt ( ) FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen(in.dat, r) ; wf = fopen(out.dat,w) ; for(i = 0 ; i 10 ; i+) fscanf(rf, %d,%d, &a, &b) ; fun(a, b, &c) ; fprintf(wf, a=%d,b=%d,c=%ldn, a, b, c) ; fclose(rf) ; fclose(wf) ; /*-【程序填空】-功能:从两个数组中分别提取任意元素xi,yj,问|xi-yj| 的最小值是多少 ?-*/#include #include /*SPACE*/#define min(x, y) (【xy?x:y】) int min_distance(int x, int y, int m, int n) int minimum = INT_MAX; int index_x = 0, index_y = 0; while (index_x m & index_y =yindex_y】) minimum = min(minimum, xindex_x-yindex_y); index_y+; else minimum = min(minimum, yindex_y-xindex_x); /*SPACE*/ 【index_x+】; return minimum;#include void main(void) int x = 1, 3, 7, 11, 18; int m = sizeof(x)/sizeof(int); int y = 4, 5, 8, 13, 22; int n = sizeof(y)/sizeof(int); int i, min_distance(int , int , int, int); printf(nCompute Minimum Distance Between Two Sorted Arrays); printf(n=); printf(nnGiven Array #1 :); for (i = 0; i m; i+) printf(%5d, xi); printf(nnGiven Array #2 :); for (i = 0; i n; i+) printf(%5d, yi); printf(nnMinimum Distance = %d, min_distance(x, y, m, n);/*- 【程序改错】-功能:根据整型形参m,计算如下公式的值: y=1/21/81/18.1/2m*m-*/#include double fun(int m) /*FOUND*/ double y=0 改为 double y=0; int i; /*FOUND*/ for(i=1; im; i+) 改为 for(i=1;i=m;i+) /*FOUND*/ y=+1.0/(2*i*i); 改为y+=1.0/(2*i*i); return(y);main() int n; printf(Enter n: ); scanf(%d, &n); printf(nThe result is %1fn, fun(n); /*-【程序填空】-功能:文件操作。-*/# include # include void main() /* 定义一个文件指针fp */ /*SPACE*/ 【FILF】 *fp; char filename10; printf(Please input the name of file: ); scanf(%s, filename); /* 输入字符串并赋给变量filename */ /* 以读的使用方式打开文件filename */ /*SPACE*/ if(fp=fopen(filename, 【r】) = NULL) printf(Cannot open the file.n); exit(0); /* 正常跳出程序 */ /* 关闭文件 */ /*SPACE*/ 【fcl

温馨提示

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

评论

0/150

提交评论