C语言程序实例_第1页
C语言程序实例_第2页
C语言程序实例_第3页
C语言程序实例_第4页
C语言程序实例_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序实例数组的引用:#includevoid main (int argc, char *argv) int x5 = 2, 3,1, 4, 6 ;int i;for (i = 0; i 5; i+)printf(%dn, 2 * xi);#includevoid main(int argc, char *argv) int x5 = 1, 2, 3, 4, 5 ;int i = 0;for (i = 0; i 5; i+)printf (x%d :%dn, i, xi);一维数组的最值:#include int main(int argc, char* argvJ) int x5 =

2、1, 2, 3,4, 5 ;int nMax = x0;int i = 0;for (i = 1; i nMax)nMax = xi;printf(max:%dnS nMax);return 0;一维数组排序:#include void main(int argc, char argv) int arr5 = 9, 8, 3, 5, 2 ; int temp = 0;int i, j;printf CW 泡排序前:n*);for (i = 0; i 5; i+)printf (*%d , arri);printf (” n);for (i = 0; i 5-1; i+)for (j = 0;

3、j arrj + U)temp = arrj;arrj = arrj + 1; arrJ + 1 = temp;printfC冒泡排序后z nO; for (i = 0; 1 5; i+) printf (*%d arri);printf Cn);二维数组的遗历#includevoid mainO声明并初始化数组int array 3 4 = 1,2, 3,4, 5,6, 7,8, 9,10,11,12 ;for (int 1 = 0; i 3; i+)循环遠历行for (int j = 0; j 4; +)/循环遍历列printf (*%d %d: %d , i, j, arrayi j);

4、printf (*n*); 每一行的末尾添加换行符二维数组应用include void main(int argc, char * argv) int StuScore53 = 张同学88, 70, 90,王同学80, 80, 60,李同学89, 60, 85,赵同学80,75, 78,周同学70, 80, 80,;int m = 0, n = 0;int nStuTotalScore;int nMathTotalScore = 0;int nChineseTotalScore = 0;int nEnglishTotalScore = 0; printf (*个人总成绩:n*);for (m

5、= 0; m 5; m+)nStuTotalScore = 0;for (n = 0; n nStuTotalScore);break;case 1:printf (*王同学:%dn*, nStuTotalScore); break;case 2:printf 李同学:nStuTotalScore); break;case 3:printf (*赵同学:dn nStuTotalScore); break;case 4:printf (*周同学:dn, nStuTotalScore); break;printf (*小组数学总分:%d小组数学平均分:2fn,nMathTotalScore, (d

6、ouble)nMathTotalScore / 5):printf (*小组语文总分:%d小组语文平均分:%. 2fn*,nChineseTotalScore, (double)nChineseTotalScore / 5);printf (*小组英语总分:%d小组英语平均分:%. 2fn*,nEnglishTotalScore, (double)nEnglishTotalScore / 5);无参函数#include void func ()printf (*这是我的第一个函数! n*);void mainOfunc ();有参函数调用无参函数ftinclude void func(int

7、x, int y)int sum = x + y; printf(x+y=%dn, sum);void mainOfunc (3, 5);函数调用及返回过程#includeint func (int x, int y)return x + y;void mainOint sum = func(3, 5); printf(x+y=%dnS sum);Printf函数#includevoid mainOprintf C%c %c Hj );printf (“s, Hellow, world! n);printf C%d %d %d nS 2, 3);printf (f %f %f n, 2.1,

8、2.2);Scanf函数#includevoid mainOchar str 256;字符数组保存得到的字符串scanf (”s, str);嵌套函数#includeint max2(int a, int b)用于比较两个整数大小的函数if (a b)return a;elsereturn b;int max4(int a, int b, int c, int d) 用于比较四个整数大小的函数int res;res = max2 (a, b);res = max2 (res, c);res = max2 (res, d); return res;void mainOint a = 5, b =

9、 7, c = 9, d = 22, max; printf (*请输入四个整数;5 7 9 22 n); /scanf C%d %d %d %dr, a=5, b=7, c=9, d=22); max = max4 (a, b, c, d);printf (max=%d n,max);递归调用#include下面的函数使用递归实现,求广n的和 int getsum(int n)if (n = 1)return 1;满足条件,递归结束 int temp = get sum (n 一 1); 在函数体中调用自身 return temp + n;void mainOint sum = get su

10、m (4); 调用递归函数,获得广4的和 printf (sum=%drr, sum); 打印结果外部函数建立源文件first, cint add(int x, int y)return x + y;建立源文件second, c#includeextern int add(int x, int y);void mainOprintf (“dn add (1, 2);注:extern可以省略内部函数用法建立 first, c#includevoid showOprintf(“sn, first, c;建立 second, c#includcstatic void showOprintf (“%s

11、n, second, c);void mainOshowO ;全局变量#includeint x = 123;void showOprintf (show0 函数中,x 的值为:%dn, x);void mainOshowO ;printf (main0函数中* x 的值为:dn,x); 当局部变量与全局变童:重名时,全局变量会被屏蔽#include int x = 789;void mainOint x =123;printf (x 的值为:dn, x); 变量的作用域#includeint x = 10;void showOint x = 20;printf (*show0 函数中,x 的

12、值为* %dnS x); void mainOint x = 30;printf (main 0 函数中.x 的值为dn, x);showO ;If语句#includevoid mainO定义变量xint x = 5;如果x的值小于10则执行if大括号中的代码 if (x 10)X+;printf (rx=%dnr, x);If. else 语句#includevoid mainOint num = 19;if (num % 2 = 0)判断条件成立,num被2整除 printf (num 是一个偶数n);elseprintf (num 是一个奇数n);If-. else ifelse 语句#

13、includevoid mainOint grade = 75;/定义学生成绩 if (grade = 80)满足条件grsde = 80 printf (-该成绩的等级为优iT);else if (grade = 70)不满足条件grade =80,但满足条件grade=70printfC该成绩等级为良nO;else if (grade = 60)不满足条件grade =70,但满足条件grade =60 printf(*该成绩等级为中n*);else不满足条件grade =60 printf (-该成绩的等级为差iT);三元运算符#includevoid mainOint x = 0;in

14、t y = 1;int max;max = x y ? x : y; printf(max = %dn*);Switch语句#includevoid mainOint week = 5;switch (week)case 1:printf (* 星期一 n*); break;case 2:printf (*星期二n);break;case 3:printf (*星期三n);break;case 4:printfC 星期四 n);break;case 5:printfC 星期五 iT);break;case 6:printfC星期六n);break;case 7:printfC 星期日 n);b

15、reak;default:printf(*输入的数字不正确.n*); break;在使用switch语句过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一 次即可#includevoid mainOint week = 2;switch (week)case 1:case 2:case 3:case 4:case 5:当week满足值1、2、3、4、5中任意一个时,处理方式相同printfC今天是工作日n);break:case 6:case 7:当ireek满足值6、7中任童一个时,处理方式相同printf(*今天是休息日十;break;While循环语句 #incl

16、udevoid mainOint x = 1;while (x = 4)printf (*x = %dn*, x);/条件成立,打印x的值 x进行自增Do-while循环语句 #include void mainO定义变量x,初始值为1int x = 1;doprintf (*x=%dn*, x);条件成立,打印x的值x进行自增 while (x = 4);循环条件For循环 #includevoid mainOint x = 1;定义变量x,初始值为1doprintf (*x=%dn*, x);/条件成立,打印x的值x进行自增 while (x = 4);循环条件Break语句 #inclu

17、de void mainOint x = 1;定义变量x,初始值为1while (x = 4) 循环条件printf (*x=%dn*, x);if (x = 3)break;x进行自增Goto语句#includeint mainO定义两个循环变量外层循环内层循环判断i的值是否大于4跳至标志位end的语句输出*换行int i, j;for (i = 1; i = 9; i+)for (j = 1; j 4)goto end;printf(*);printf (iT);end: return 0;Continue 语句#includevoid mainOint sum = 0;定义变量sum,用

18、于记住和for (int i = 1; i = 100; i+)if (i % 2 = 0)如果i是一个偶数,执行if语句中的代码continue;结束本次循环sum += i;实现sum和i的蠹加printfCsum =sum);无符号整数类型#include void mainOint a = 12345;long b = -23456, suml;unsigned int c = 32800, sum2;suml = b - a;sum2 = c - b;printf(rsuml=%ld, sum2=%uiT, suml, sum2);Float和double之间的数据转换 #inclu

19、devoid mainOfloat a;a = 3.141592612; printf(a=% 9fn, a);字符型变量#includevoid mainOchar chi = 1;char ch2 = 65; printf(%cn chi); printf(“cn, ch2);#include void mainO转义符的用法char ch2 = 1 n ;char ch3 = B ;char ch4 = 1 W ;printf (*%cr, ch2); printf (*%cr, ch3); printf (*%cr, ch4); printf(*%cr, ch2);枚举类型变童#inc

20、ludeenum month JAN=1, FEB=2, MAR=3, APR=4, MAY=5, JU1=6,JUL=7, AUG=8, SEP=9, OCT=1O, NOV=11, DEC=12;void mainOenum month lastmonth, thismonth, nextmonth;lastmonth = APR;thismonth = MAY;nextmonth = JUN;printf(r%d %d %d n, lastmonth, thismonth, nextmonth);在枚举中规定,如果不给标识符指定具体值,会默认该标识符的值等于前一标识符的值加一。因此可 以

21、快速定义#include/定义一组常疑enum Constants cl, c2, c3 = 4, c4, c5 = 3, c6, c7, c8 = 0f, c9 ; void mainOprintf(c9=%dn, c9);Sizeof运算符 ftinclude void mainO/通过类型名称计算各基本数据类型所占内存大小printf(char:%dnr,sizeof(char);printf(short: %dn sizeof(short);printf(long:%dnr,sizeof(long);printf(Afloat:%dn,sizeof(float);printf(doub

22、le: %dn*, sizeof(double);printf(unsigned char: %dn, sizeof(unsigned char);printf(unsigned short: %dn, sizeof(unsigned short);printf(unsigned int: %diT, sizeof(unsigned int);printf(unsigned long: %dn, sizeof(unsigned long);通过变量名称计算变量所属数据类型占用内存大小int = 100;double val.double = 100000. 0;printf(v

23、al_int:%dn, sizeof(val_int);printf(val.double: %dn*, sizeof(valdouble); 指针的取址和取值运算符#includevoid mainOint num = 100;/int 类型变量 numprintf (num=%dnS num);/输出变:值printf (*#&num = %pn, &num);输出变量的内存地址printf (*&num = %diT, *&num);通过 num 地址读取 num 中的数据指针表达式的自增自减运算#includevoid mainOint arr5 = 2,3,4,5 ;int *pl

24、= &arr0;int *p2 = fcarr3;printf Cpl 的值为:dn,*pl);printf (+pl 的值为:dn: * (+pl);printf (p2 的值为:%dn, *p2);printf (p2 的值为:%dn (p2); 同类指针相减运算SJ C:windows5ystcm32cmd.exehar =1short: long: f loat:double: 8unsigned char: 1 unsigned short: 2 uniyned int:4unsigned long: 4 ual_int:4ual_double : 8 请按任意键继缮#include

25、void mainOint arr5 = 1,2, 3,4, 5 ;int *pl = tarr0;int *p2 = tarr3;printf Cpl 的值为:dn, pl); printf (p2 的值为:%dn,p2);printf Cpl-p2 的值为:%dn p2-pl); 指针变量的使用#includevoid main(int argc, char* argvJ)int nNum = 0x12345678;int pNum;定义一个指针变就pNum = AnNum;为指针变量赋值printf (nNum Vai: %xnr, nNum); printf (nNum Addr:%p

26、n*, ftnNum); printf (pNum Val:%pn*, pNum); printf (pNum :%xn, *pNum);指针变量作为函数的参数(作用是将一个变量的地址传送到另一个函数中)#includevoid main(int argc, char* argv)int nNum = 0x12345678;int pNum;定义一个指针变量pNum = ftnNum;为指针变量赋值printf CnNum Val:%xn*, nNum); printf (*nNum Addr:%pn*, &nNum); printf (pNum Val:%pn pNum); printf (

27、pNum :%xn, pNum);指向一维数组元素的指针#include #include void main(int argc, char* argv)int X10 = 1, 2, 3,4, 5,6, 7, 8,9,10 ;int i = 0;int nLen = 10;printf(*数组X修改前:n);for (i = 0; i 10; i+)printf(*%d ”, Xi);用指针pTe叩 指向数组Xint * pTe叩=X;通过指针pTemp访问数组中的元素,并修改元素的值 for (i = 0; i nLen; i+)pTcmpEi = pTenpEi 2;printf (*n

28、数组X修改之后:n*);通过指针移动来遍历输出X数组中的元素for (i = 0; i 10; i+)printf(*%d , *pTemp); pTemp+;printf(n);指向二维数组元素的指针#include#includevoid mainOint X2 5 = 1, 2, 3,4, 5 , 6, 7, 8,9,10 ;/定义数组指针用于指向二维数组int(*pXElement)5 = X;int m = 0;int n = 0; printf (二维数组元素如下:n*);for (m = 0; m m + 1); for (n = 0; n 5; n+)通过数组指针来访问为数组中

29、的元素 printf (* pXElement m n);指针数组的概念#include输出指针数组中元素的值int print(int arr int n)return 0;int i = 0;for (i = 0; in; i+)printf(M%dn11*arri); return 1;void main(int argc, char * argv) int 巧 b, s d,e;a = 1;b = 2;:=3;d = 4;int *Arr = &a, &b, &c, &d, &e ;定义一个 int 类型的指针数组 print(Arr, 5);/调出 print ()函数指针数组作为m

30、ain ()函数的形参#include#includeint main(int argc char argv)int i = 0;printf(程序的参数列表如下:n“);for (i = 0; i argc ; i+)printf(n%s argvi);return 0;二级指针#include#includevoid main(int argc, char * argv)int m = 10;int * pM = &m;指针pM存放的是变量m的地址int * ppM = &pM; 二级指针ppM存放的是指针pM的地址 printf(m = %dnm);printf(*pM = %dn*pM

31、); printf= %dnR *ppM);Malloc0函数和free ()函数#includevoid main()int u, v;定义二维数组的长和宽printf(第一维为:“);scanfCd &u);printf(第二维为:“);scanfCd &v);int* array = (int* )malloc(sizeof(int*)* u);/先创建第一维for (int i = 0; i u; i+)在内层循环中动态创建第二维arrayi = (int*)malloc(sizeof(int)*v);for(int j = 0; jv; j+)arrayij = 0;给数组元素复制p

32、rintf(H%d arrayij);字符数组#include void main()/声明一个字符数组并初始化char char_array5 = h1, e T,o* ;int i;通过size。于关键字得到数组长度,并遍历打印其内容.for (i = 0; i sizeof(char_array); +i)printfCc, char_arrayi);printf(n);输出字符串中的字符#includevoid main()char char_array6 = (hello);/声明一个长度为6的字符数组并初始化为hello int i;通过size。于关键字得到数组长度for (i

33、= 0; i sizeof(char_array); +i)/通过printf输出char_array中的字符串printf(char_array 的第%dnj i, char_arrayi);获取用户输入字符的长度define _CRT_SECURE_NO_WARNINGS /关闭安全检査#include#includevoid mainOchar str 1024; 声明一个足够大的字符型数组保存将要被输入的字符串printf (请输入待测量的字符串:);scanfstr): /接受用户输入字符串printf (*您输入的字符串长度为d。n, strlen(str);空字符(0f的使用#i

34、ncludevoid mainOchar char_array 二 h,,e, 1 T ,,1,,o,,0,,,w,,O , r ,1 , d );printf %sn, char_array ;忘记在字符数组的末尾添加空字符”(r,程序也会出现一些奇怪的 现象#includevoid main ()char char_array二 h, e, 1, 1, o ; printf %sn, char_array ;使用指针修改字符串中的字符#includechar char_eirray = hello world!*;char *ptr;printf C修改前的字符串如下:sn, char_a

35、rray);ptr = char_array;/将一个字符型指针指向字符型数组char_array的首地址开始修改字符串wh订e (*ptr != 0) 检测是否到串未尾if (*ptr =)*ptr 二!;Ptr+;printf (*修改后的字符串如下:s n, char_array);return 0;Gets ()函数ttpragma warning(disable:4996)#include void main ()char phoneNumber12;printf (请输入手机号码:”);gets(phoneNumber);printf (您的手机号码是:%sn,phoneNumbe

36、r);Puts () ttpragma warning(disable:4996)#include void main ()char buf12;puts C请输入一个字符串:”);gets (buf);puts C您输入的是:);puts (buf);字符串比较 ttpragma warning(disable:4996)#include #includevoid mainOchar username 100;/定义存放用户名的字符数组char password100;定义存放密码的字符数组printf (登录n);printf (请输入用户名:”);gets (username);获取用户

37、输入的用户名printf (请输入密码:);gets(password);/获取用户输入的密码/比较输入的用户名和密码是否正确if (!strcmp(password, ILoveC) & (!strcmp(username,user)printf C用户 s 登录成功! n username);elseprintf (登陆失败,请检査用户名或密码是否正确输入。);Strncmp ()函数#include#includevoid mainOchar* strl = *abcdef*;char* str2 = abcdeg*;/判断字符串strl和str2中的前5个字符是否相同 if (! st

38、rncmp (strl, str2, 5)printf Cstrl和str2的前5个字符相同);elseprintf Cstrl和str2的前5个字符不同);Strchr ()函数#include#includeint getcount(char* str, char c)/存储找到的字符个数int count = 0;存储当前字符指针在字符串中的位置char* ptr = str;获取第一次出现字符变量C值的指针位置while (ptr = strchr(ptr, c) != NULL)+Ptr;+count;return count;void mainOchar str6 = abaca;

39、char c =;int num = getcount(str, c); printf(字符%c在字符串中出现了d次.n, c, num);Strstr (函数ffpragma warning (disable: 4996)#include#includevoid mainOchar str10240; 声明字符串数组,用于保存段落char word10240; 声明字符串数组,用于保存要査找的字符串 char* ptr;printf(*请输入要扫描的段落:);gets (str);printf(*请输入要査找的单词:”);gets(word);ptr = strstr (str, word)

40、; 搜索是否包含指定的字符串if (ptr = NULL)printf C段落中不包含单词%So n, word);else得到检测出的字符串后20个字符if (strlen(ptr) = 20)ptr 20 = 0;printf (单词出现在s附近。n, ptr);Strcat ()函数pragma warning(disable:4996)#include #include void mainO区号char areaNumber5;电话号码char phoneNumber12;int input:分机号char extraNumber5;用来存储连接后的结果,需要初始化为0!char bu

41、ffer25 = 0 ;printf (请输入区号:);gets(areaNumber);printf (请输入电话号码:);gets (phoneNumber);printf(*有分机号吗?(y/n);input = getchar 0;/由于getchar ()只读入一个字符,因此需要调用fflush来清除输入缓冲区的换行符 f flush (stdin);if (input = ,y,)printfC请输入分机号:); gets(extraNumber);strcat(buffer,areaNumber);strcat(buffer, ;strcat(buffer,phoneNumber

42、);strcat(buffer, ;strcat(buffer,extraNumber);elsestrcat(buffer, areaNumber);strcat(buffer, ;strcat(buffer,phoneNumber);printf C您的电话号码是sn*, buffer):Strncat ()函数 ffpragma warning (disable: 4996)#include#includevoid mainOchar buf 1 30;声明字符串数组,用于保存字符串bufl.char buf230;声明字符串数组,用于保存字符串buf2.printf(*请输入第一个字符

43、串:”);gets (bufl);printf(*请输入第二个字符串:”);gets (buf2);使用strncat ()函数来对字符串进行拼接strncat (bufl, buf2, sizeof (bufl)-l - strlen(bufl); printf(*连接后的字符串是%s, n bufl);Atoi ()函数#pragma warning(disable:4996)#include#includevoid mainOchar buf20;int result;printf(*请输入待转换的十进制数:gets (buf);result = atoi(buf);printf (转换

44、结果迪 %d. n, result);使用函数itoa ()将整数转换字符串pragma warning(disable:4996)#include#includevoid mainOchar buf20;用于保存八进制的转换结果char number_820;用于保存十进制的转换结果char number.l020;用于保存十六进制的转换结果char number6 20;int val;printf (请输入待转化的数:”);gets (buf);val = atoi (buf);将输入的字符串表示的数字转换为整型使用提哦啊()函数进行转换itoa (val, number_8, 8);i

45、toa (val, number.10, 10);itoa (val, number_16, 16);printf (八进制下为 %sn*, number_8);pidntf (十进制下为 %sn*, number.10);prdntf (十兀进制下为 %snr number_16);不带参数的宏定义#include#define pl 3.141592void mainOprintf (“fn, pl);带参数的宏定义#includedefine pl 3.14define COMP.CIR(x) 2*pl*xvoid mainOdouble r = 1. 0;printf(2*pl*r= %fnj COMP_CIR(r);宏定义中参数的替换#includeftdefine ABS(x) (x)=0 ? (x) :-(x)double compAbs(double x)return x = 0 ? x :x;void mainOdoub

温馨提示

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

最新文档

评论

0/150

提交评论