经典国二c语言程序段.doc_第1页
经典国二c语言程序段.doc_第2页
经典国二c语言程序段.doc_第3页
经典国二c语言程序段.doc_第4页
经典国二c语言程序段.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

经典国二C语言程序段 1、 累加: int i, sum=0; for(i=1; i=100; i+) sum+=i; printf(sum=%dn, sum); 2、 累乘(阶乘): int i, s=1, n; scanf(%d, &n); for(i=1; i=n; i+) s*=i; printf(s=%dn, s); 3、整型常量的个位、十位、百位上数字的表示方法: 现定义一个整形常量x,则个位:x%10; 十位:(x/10)%10; 百位:(x/102)%10; 4、 四舍五入(对一个输入的双精度数保留3位小数): double x; scanf(%lf, &x); x*=1000; x+=0.5; x=(int)x; x/=1000; printf(x=%lf, x); 5、 变量值交换: (1)输入三个整数a、b、c, 然后把a的值给b, 把b的值给c, 把c的值给a int a, b, c, t; scanf(%d%d%d, &a, &b, &c); printf(a=%d,b=%d,c=%d, a, b, c); t=a; a=c; c=b; b=t; printf(a=%d,b=%d,c=%d, a ,b, c); (2)地址值传递 注意:下面两种情况均不能将主函数中的变量值对调 1) void fun(int *a, int *b) int *k; k=a; a=b; b=k; 理由简述:指针变量作为函数参数也要遵循单向的值传递方式,所以交换指针形参中的地址值不能改变对应的实参。 2) void fun(int *a, int *b) int *k; *p=*a; *a=*b; *b=*p; 理由简述:指针k是无向指针,“*p=*a”等等语句会出现错误。 正确的算法如下: void fun(int *a, int *b) int k; k=*a; *a=*b; *b=k; 6、 输入三个数a、b、c,选出最大者和最小者: double a, b, c, max, min; scanf(“%lf%lf%lf”, &a, &b, &c); max=a, min=b; if( amax) max=c; if(cmin) min=c; printf(max=%lf,min=%lf, max, min); 7、 图形 * * * * * * * int i, j; for(i=1; i=4; i+) for(j=1; j=4-i; j+) putchar( ); for(j=1; j=2*i-1; j+) putchar(*); putchar(n); for(i=1; i=3; i+) for(j=1; j=i; j+) putchar( ); for(j=1; j=7-2*i; j+) putchar(*); putchar(n); putchar(n); 8、 斐波那契数列: (1)给定项数n的算法 int a=1, b=1, c, i; printf(%3d%3d, a, b); for(i=3; i=n; i+) c=a+b; printf(%3d, c); a=b; b=c; (2)给定上界数m的算法 int a=1, b=1, c; printf(%3d, a); do c=a+b; a=b; printf(%3d, a);/*打印新的a,实际上就是打印新的c的前一项*/ b=c; while(cm); 9、 素数(将0m之间为素数的元素依次存放在数组a 中): int i, j, t, a100, n=0; for(i=2; im; i+) t=1; for(j=2; ji; j+) if(i%j= =0) t=0; break; if(t= =1) an+=i; 10、 闰年(公元16002000的“能被4整除且不能被100整除,或者能被400整除”的年号): int i; for(i=1600; i=a & c=z) c=c-32; putchar(c); 12、计数(统计数组中09的个数): int i, a100, c10=0; for(i=0; i100; i+) a=random(10); for(i=0; i10; i+) ca+; for(i=0; i10; i+) printf(%d : %d, i, c); 13、选择法排序: (1)一维数组(从小到大) int i, j, k, t, a10; for(i=0; i10; i+) a=random(100); for(i=0; i9; i+) for(j=i+1; j10; j+) if(aja) ) t=aj; aj=a; a=t; for(i=0; i10; i+) printf(%3d, a); (2)选出二维数组中的最大值 int i, j, max, a55; for(i=0; i5; i+) for(j=0; j5; j+) aj=random(100); max=a00; for(i=0; i5; i+) for(j=0; jmax) max=aj; printf(%d, max); 14、杨辉三角形(只需打印7行): int a77, i, j; for(i=0; i7; i+) for(j=0; ji; j+) if(j= =0 | j= =i) aj=1; else aj=aj-1+aj; (1)直角形式 for(i=0; i7; i+) for(j=0; j=I; j+) printf(%3d, aj); printf(n); (2)金字塔形式 for(i=0; i7; i+) for(j=0; j7-i; j+) putchar( ); for(j=0; j=i; j+) printf(%3d, aj); printf(n); 15、字符串颠倒: void fun(char str) int i, j, t; for(i=0, j=strlen(sttr)-1; ij; i+, j-) t=str; str=strj; strj=t; 16、删除字符串内部空格(空格用星号代替): (1)只删除前导空格,保留中间和尾部空格 void fun(char *a) /*将主函数的字符串首地址传递给指针变量a*/ char *p=a; while(*p= =*) p+; strcpy(a,p);for( ; *p!= 0; p+,a+) *a=*p; *a=0; (2)只删除中间空格,保留前导和尾部空格 #include stdio.h void fun(char *a, char *p, char*q ) for( ; *a= =*; a+) *q+=*a; /*保留首部星号*/ for(; a=p; a+) if(*a!=*) *q+=*a; /*删除中间星号*/ for(; *a!=0; a+) *q+=*a; /*保留尾部星号*/ *q=0; main() char a100, b100, *p; gets(a); p=a; /*指针p指向串首*/ while(*p!=0) p+; /*指针p指向串结束标记*/ p-; /*指针p指向串末字符*/ while(*p= =*) p-; /*指针p指向由串尾向串首方向的第一个非星号字符*/ fun(a, p, b); puts(b); (3)只删除尾部空格,保留前导和中间空格 void fun(char *a) /*将主函数的字符串首地址传递给指针变量a*/ while(*a!=*) a+; /*指针a指向串结束标记*/ a-; /*指针a指向串末字符*/ while(*a= =*) a-; *(a+1)= 0; /*巧妙地利用串结束标记删除了尾部星号*/ 17、回文(即判断一个字符串是否顺读和倒读都一样):

温馨提示

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

评论

0/150

提交评论