我的C语言集锦系列.docx
- 文档编号:3570936
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:14
- 大小:752.40KB
我的C语言集锦系列.docx
《我的C语言集锦系列.docx》由会员分享,可在线阅读,更多相关《我的C语言集锦系列.docx(14页珍藏版)》请在冰豆网上搜索。
我的C语言集锦系列
222012321022027@C-server:
~$vi116.c
1#include
2intmain()
3{
4charch;
5FILE*fp1,*fp2;
6fp1=fopen("77.c","r");
7if(fp1==NULL){
8printf("fileopenerror\n");
9return1;
10}
11fp2=fopen("77a.c","w");
12while(!
feof(fp1)){
13ch=fgetc(fp1);
14fputc(ch,fp2);
15}
16fclose(fp1);
17fclose(fp2);
18return0;
19}
修改后的代码才是完全正确的,不会多输出一行
1#include
2intmain()
3{
4charch;
5FILE*fp1,*fp2;
6fp1=fopen("77.c","r");
7if(fp1==NULL){
8printf("fileopenerror\n");
9return1;
10}
11fp2=fopen("77a.c","w");
12while
(1){
13ch=fgetc(fp1);
14if(feof(fp1))
15break;
16fputc(ch,fp2);
17}
18fclose(fp1);
19fclose(fp2);
20return0;
21}
输入一个数,输出n个偶数。
实际上for语句等价于如下形式的while结构:
表达式1;
while(表达式2){
语句
表达式3
}
打印图案1
图片2
无错误的代码
C:
\Users\Administrator\AppData\Local\Microsoft\Windows\TemporaryInternetFiles\Content.IE5\JN3I1R41
上面是移动盘子问题(147.c)
fgets函数原型如下:
char*fgets(char*s,intn,FILE*stream);
它一次从文件中读取一行,包括换行符,放入字符串s中,并且加上字符串结束标志符'\0'。
参数n代表缓冲区s中最多能容纳多少个字符(不算结尾标志符'\0')。
fgets函数返回一个char类型的指针,和s指向同一个地方。
如果在没有数据可以读取,那么函数就返回NULL。
关于fgets的范例
#include
main()
{
chars[80];
fputs(fgets(s,80,stdin),stdout);
}
执行
thisisatest/*输入*/
thisisatest/*输出*/
上面是写一个函数,将输入的字符串按逆序排列。
8.1.1函数调用的一般形式
前面已经说过,在程序中是通过对函数的调用来执行函数体的,其过程与其它语言的子程序调用相似。
C语言中,函数调用的一般形式为:
函数名(实际参数表)
对无参函数调用时则无实际参数表。
实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。
各实参之间用逗号分隔。
在C语言中,可以用以下几种方式调用函数
1.函数表达式:
函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。
这种方式要求函数是有返回值的。
例如:
z=max(x,y)是一个赋值表达式,把max的返回值赋予变量z。
2.函数语句:
函数调用的一般形式加上分号即构成函数语句。
例如:
printf("%d",a);scanf("%d",&b);都是以函数语句的方式调用函数。
3.函数实参:
函数作为另一个函数调用的实际参数出现。
这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。
例如:
printf("%d",max(x,y));即是把max调用的返回值又作为printf函数的实参来使用的。
在函数调用中还应该注意的一个问题是求值顺序的问题。
所谓求值顺序是指对实参表中各量是自左至右使用呢,还是自右至左使用。
对此,各系统的规定不一定相同。
介绍printf函数时已提到过,这里从函数调用的角度再强调一下
8.1.3被调用函数的声明和函数原型
在主调函数中调用某函数之前应对该被调函数进行说明(声明),这与使用变量之前要先进行变量说明是一样的。
在主调函数中对被调函数作说明的目的是使编译系统知道被调函数返回值的类型,以便在主调函数中按此种类型对返回值作相应的处理。
其一般形式为:
类型说明符被调函数名(类型形参,类型形参…);
或为:
类型说明符被调函数名(类型,类型…);
括号内给出了形参的类型和形参名,或只给出形参类型。
这便于编译系统进行检错,以防止可能出现的错误。
上面是求s=2^2!
+3^2!
的代码,涉及到函数的嵌套调用。
(157.c)
在程序中,函数f1和f2均为长整型,都在主函数之前定义,故不必再在主函数中对f1和f2加以说明。
在主程序中,执行循环程序依次把i值作为实参调用函数f1求i2值。
在f1中又发生对函数f2的调用,这时是把i2的值作为实参去调f2,在f2中完成求i2!
的计算。
f2执行完毕把C值(即i2!
)返回给f1,再由f1返回主函数实现累加。
至此,由函数的嵌套调用实现了题目的要求。
由于数值很大,所以函数和一些变量的类型都说明为长整型,否则会造成计算错误。
(对157.c的说明)。
上面是用数组名作为函数参数的一个例子(162.c)
上面是打印1-5的阶乘的代码(166.c)
开头
求两个数x、y的最大公约数和最小公倍数。
最小公倍数=x*y/最大公约数;所以关键就是求得最大公约数。
本文采用“辗转相除法”求最大公约数。
辗转相除法就是重复做:
①求a除以b的余数p;②a等于原来的b;③b等于p,直到p等于0时,a就是最大公约数。
其中迭代变量是a和b;迭代关系是a=b,b=p;迭代结束条件是p等于0。
程序代码
结束
下面是求一个字符串的长度,其输出为10(174.C)
函数strlen
头文件:
string.h
格式:
strlen(字符数组名)
功能:
计算字符串s的(unsignedint型)长度,不包括'\0'在内
说明:
返回s的长度,不包括结束符NULL。
实现将3*3的二维整形数组转置,即行列互换(176.C)
下面的是从文件中读取矩阵,将其行列互换。
(177.C)
从文件中读取字符,输出空格,英文字母,数字。
从文件中读取字符,若前四个中有大写字母将其改为小写。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 集锦 系列