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

下载本文档

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

文档简介

数组的引用:#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);一维数组的最值:#includeint main(int argc, char* argv)int x5 = 1,2,3,4,5 ;int nMax = x0;int i = 0;for (i = 1; i nMax)nMax = xi;printf(max:%dn, nMax);return 0;一维数组排序:#includevoid main(int argc, char * argv)int arr5 = 9, 8, 3, 5, 2 ;int temp = 0;int i, j;printf(冒泡排序前: n);for (i = 0; i 5; i+)printf(%d , arri);printf( n);for (i = 0; i 5-1; i+)for (j = 0; j arrj + 1) temp = arrj;arrj = arrj + 1;arrj + 1 = temp; printf(冒泡排序后: n); for (i = 0; i 5; i+) printf(%d , arri); printf(n);二维数组的遍历#includevoid main()/声明并初始化数组int array34 = 1,2,3,4,5,6,7,8,9,10,11,12 ;for (int i = 0; i 3; i+)/循环遍历行for (int j = 0; j 4; j+)/循环遍历列printf(%d%d: %d , i, j, arrayij);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 = 0; m 5; m+)nStuTotalScore = 0;for (n = 0; n 3; n+)nStuTotalScore += StuScoremn;switch (n)case 0:nMathTotalScore += StuScorem0;break;case 1:nChineseTotalScore += StuScorem1;break;case 2:nEnglishTotalScore += StuScorem2;switch (m)case 0:printf(张同学:%dn, nStuTotalScore);break;case 1:printf(王同学:%dn, nStuTotalScore);break;case 2:printf(李同学:%dn, nStuTotalScore);break;case 3:printf(赵同学:%dn, nStuTotalScore);break;case 4:printf(周同学:%dn, nStuTotalScore);break;printf(小组数学总分:%d 小组数学平均分:%.2fn,nMathTotalScore, (double)nMathTotalScore / 5);printf(小组语文总分:%d 小组语文平均分:%.2fn,nChineseTotalScore, (double)nChineseTotalScore / 5);printf(小组英语总分:%d 小组英语平均分:%.2fn,nEnglishTotalScore, (double)nEnglishTotalScore / 5);无参函数#include void func()printf(这是我的第一个函数!n);void main()func();有参函数调用无参函数#include void func(int x, int y)int sum = x + y;printf(x+y=%dn, sum);void main()func(3, 5);函数调用及返回过程#includeint func(int x, int y)return x + y;void main()int sum = func(3, 5);printf(x+y=%dn, sum);Printf函数#includevoid main()printf(%c %c, H, n);printf(%s, Hellow,world!n);printf(%d %d %d n,1, 2, 3);printf(%f %f %f n,2.1, 2.2);Scanf 函数#includevoid main()char str256; /字符数组保存得到的字符串scanf(%s, str);printf(%sn, 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 main()int a = 5, b = 7, c = 9, d = 22, max;printf(请输入四个整数: 5 7 9 22 n);/scanf(%d %d %d %d, a=5, b=7, c=9, d=22);max = max4(a, b, c, d);printf(max=%d n, max);递归调用#include/下面的函数使用递归实现,求1n的和int getsum(int n)if (n = 1)return 1; /满足条件,递归结束int temp = getsum(n - 1); /在函数体中调用自身return temp + n;void main()int sum = getsum(4);/调用递归函数,获得14的和printf(sum=%dn, sum); /打印结果外部函数建立源文件first.cint add(int x, int y)return x + y;建立源文件second.c#includeextern int add(int x, int y);void main()printf(%dn, add(1, 2);/注:extern 可以省略内部函数用法建立first.c#includevoid show()printf(%sn, first.c);建立second.c#includestatic void show()printf(%sn, second.c);void main()show();全局变量#includeint x = 123;void show()printf(show()函数中,x的值为:%dn, x);void main()show();printf(main()函数中,x的值为:%dn,x);当局部变量与全局变量重名时,全局变量会被屏蔽#includeint x = 789;void main()int x =123;printf(x的值为:%dn,x);变量的作用域#includeint x = 10;void show()int x = 20;printf(show()函数中,x的值为:%dn, x);void main()int x = 30;printf(main()函数中,x的值为%dn, x);show();If 语句 #includevoid main()/定义变量xint x = 5;/如果x的值小于10则执行if大括号中的代码if (x 10)x+;printf(x=%dn, x);If.else语句#includevoid main()int num = 19;if (num % 2 = 0)/判断条件成立,num被2整除printf(num是一个偶数n);elseprintf(num是一个奇数n);If.else if.else语句#includevoid main()int grade = 75;/定义学生成绩if (grade = 80)/满足条件grsde = 80printf(该成绩的等级为优n);else if (grade = 70)/不满足条件grade =80,但满足条件grade=70printf(该成绩等级为良n);else if (grade = 60)/不满足条件 grade =70,但满足条件grade =60printf(该成绩等级为中n);else/不满足条件 grade =60printf(该成绩的等级为差n);三元运算符#includevoid main()int x = 0;int y = 1;int max;max = x y ? x : y;printf(max = %dn);Switch 语句#includevoid main()int week = 5;switch (week)case 1:printf(星期一n);break;case 2:printf(星期二n);break;case 3:printf(星期三n);break;case 4:printf(星期四n);break;case 5:printf(星期五n);break;case 6:printf(星期六n);break;case 7:printf(星期日n);break;default:printf(输入的数字不正确.n);break;在使用switch语句过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可#includevoid main()int week = 2;switch (week)case 1:case 2:case 3:case 4:case 5:/当week满足值1、2、3、4、5中任意一个时,处理方式相同printf(今天是工作日n);break;case 6:case 7: /当week满足值6、7中任意一个时,处理方式相同printf(今天是休息日n);break;While 循环语句#includevoid main()int x = 1;while (x = 4)printf(x = %dn, x);/条件成立,打印x的值x+; /x进行自增Do-while 循环语句#includevoid main()int x = 1; /定义变量x,初始值为1doprintf(x=%dn, x);/条件成立,打印x的值x+; /x进行自增 while (x = 4); /循环条件For 循环#includevoid main()int x = 1; /定义变量x,初始值为1doprintf(x=%dn, x);/条件成立,打印x的值x+; /x进行自增 while (x = 4); /循环条件Break 语句#includevoid main()int x = 1; /定义变量x,初始值为1while (x = 4) /循环条件printf(x=%dn, x);if (x = 3)break;x+; /x进行自增 Goto语句#includeint main() int i, j; /定义两个循环变量for (i = 1; i = 9; i+) /外层循环for (j = 1; j 4) /判断i的值是否大于4goto end; /跳至标志位end的语句printf(*); /输出*printf(n); /换行end: return 0;Continue 语句#includevoid main()int sum = 0; /定义变量sum,用于记住和for (int i = 1; i = 100; i+)if (i % 2 = 0) /如果i是一个偶数,执行if语句中的代码continue; /结束本次循环sum += i; /实现sum和i的累加printf(sum = %dn, sum);无符号整数类型#includevoid main()int a = 12345;long b = -23456, sum1;unsigned int c = 32800, sum2;sum1 = b - a;sum2 = c - b;printf(sum1=%1d,sum2=%un, sum1, sum2);Float 和double之间的数据转换#includevoid main()float a;a = 3.141592612;printf(a=%.9fn, a);字符型变量#includevoid main()char ch1 = A;char ch2 = 65;printf(%cn, ch1);printf(%cn, ch2);#includevoid main()转义符的用法char ch1 = A;char ch2 = n;char ch3 = B;char ch4 = ;printf(%c, ch1);printf(%c, ch2);printf(%c, ch3);printf(%c, ch4);printf(%c, ch2);枚举类型变量#includeenum month JAN=1,FEB=2,MAR=3,APR=4,MAY=5,JUN=6, JUL=7,AUG=8,SEP=9,OCT=10,NOV=11,DEC=12;void main()enum month lastmonth, thismonth, nextmonth;lastmonth = APR;thismonth = MAY;nextmonth = JUN;printf(%d %d %d n, lastmonth, thismonth, nextmonth); 在枚举中规定,如果不给标识符指定具体值,会默认该标识符的值等于前一标识符的值加一。因此可以快速定义#include/定义一组常量enum Constants c1, c2, c3 = 4, c4, c5 = 3, c6, c7, c8 = 0, c9 ;void main()printf(c9=%dn, c9);Sizeof 运算符#include void main()/通过类型名称计算各基本数据类型所占内存大小printf(char: %dn, sizeof(char);printf(short: %dn, sizeof(short);printf(long: %dn, sizeof(long);printf(float: %dn, sizeof(float);printf(double: %dn, sizeof(double);printf(unsigned char: %dn, sizeof(unsigned char);printf(unsigned short: %dn, sizeof(unsigned short);printf(unsigned int: %dn, sizeof(unsigned int);printf(unsigned long: %dn, sizeof(unsigned long);/通过变量名称计算变量所属数据类型占用内存大小int val_int = 100;double val_double = 100000.0;printf(val_int: %dn, sizeof(val_int);printf(val_double: %dn, sizeof(val_double);指针的取址和取值运算符#includevoid main()int num = 100; /int类型变量numprintf(num=%dn, num); /输出变量值printf(#&num = %pn, &num); /输出变量的内存地址printf(*&num = %dn, *&num); /通过num地址读取num中的数据指针表达式的自增自减运算#includevoid main()int arr5 = 1,2,3,4,5 ;int *p1 = &arr0;int *p2 = &arr3;printf(p1的值为: %dn, *p1);printf(+p1的值为: %dn, *(+p1);printf(p2的值为: %dn, *p2);printf(-p2的值为: %dn, *(-p2);同类指针相减运算#includevoid main()int arr5 = 1,2,3,4,5 ;int *p1 = &arr0;int *p2 = &arr3;printf(p1的值为: %dn, p1);printf(p2的值为: %dn, p2);printf(p1-p2的值为: %dn, p2-p1);指针变量的使用#includevoid main(int argc,char* argv)int nNum = 0x12345678;int * pNum; /定义一个指针变量pNum = &nNum; /为指针变量赋值printf(nNum Val:%xn, nNum);printf(nNum Addr:%pn, &nNum);printf(pNum Val:%pn, pNum);printf(*pNum :%xn, *pNum);指针变量作为函数的参数(作用是将一个变量的地址传送到另一个函数中)#includevoid main(int argc,char* argv)int nNum = 0x12345678;int * pNum; /定义一个指针变量pNum = &nNum; /为指针变量赋值printf(nNum Val:%xn, nNum);printf(nNum Addr:%pn, &nNum);printf(pNum Val:%pn, pNum);printf(*pNum :%xn, *pNum);指向一维数组元素的指针#include#includevoid 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);/用指针pTemp 指向数组Xint * pTemp = X;/通过指针pTemp访问数组中的元素,并修改元素的值for (i = 0; i nLen; i+)pTempi = pTempi * 2;printf(n数组X修改之后:n);/通过指针移动来遍历输出X数组中的元素for (i = 0; i 10; i+)printf(%d , *pTemp);pTemp+;printf(n);指向二维数组元素的指针#include#includevoid main()int X25 = 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 2; m+)printf(第%d行的元素如下: n, m + 1);for (n = 0; n 5; n+)/通过数组指针来访问为数组中的元素printf( %d, pXElementmn);printf(n); 指针数组的概念#include/输出指针数组中元素的值int print(int *arr, int n)if (!arr)return 0;int i = 0;for (i = 0; in; i+)printf(%dn, *arri);return 1;void main(int argc, char * argv)int a, b, c, d, e;a = 1;b = 2;c = 3;d = 4;e = 5;int *Arr = &a, &b, &c, &d, &e ;/定义一个int类型的指针数组print(Arr, 5);/调出print()函数指针数组作为main()函数的形参#include#includeint main(int argc, char * argv)int i = 0;printf(程序的参数列表如下:n);for (i = 0; i argc ; i+)printf(%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 = %dn, m);printf(*pM = %dn, *pM);printf(*pM = %dn, *ppM);Malloc()函数和free()函数#includevoid main()int u, v; /定义二维数组的长和宽printf(第一维为:);scanf(%d, &u);printf(第二维为:);scanf(%d, &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; /给数组元素复制printf(%d , arrayij);字符数组#includevoid main()/声明一个字符数组并初始化char char_array5 = h, e, l, l, o ;int i;/通过sizeof关键字得到数组长度,并遍历打印其内容。for (i = 0; i sizeof(char_array); +i)printf(%c, char_arrayi);printf(n);输出字符串中的字符#includevoid main()char char_array6 = (hello);/声明一个长度为6的字符数组并初始化为helloint i;/通过sizeof关键字得到数组长度for (i = 0; i sizeof(char_array); +i)/通过printf输出char_array中的字符串printf(char_array的第%dn, i, char_arrayi);获取用户输入字符的长度#define _CRT_SECURE_NO_WARNINGS /关闭安全检查#include#includevoid main()char str1024; /声明一个足够大的字符型数组保存将要被输入的字符串printf(请输入待测量的字符串:);scanf(%s, str); /接受用户输入字符串printf(您输入的字符串长度为 %d。n, strlen(str);空字符0的使用#includevoid main()char char_array = h, e, l, l, o, 0, w, o, r, l, d ;printf %sn, char_array ;忘记在字符数组的末尾添加空字符0,程序也会出现一些奇怪的现象#includevoid main()char char_array = h, e, l, l, o ;printf %sn, char_array ;使用指针修改字符串中的字符#includeint main()char char_array = hello world!;char *ptr;printf(修改前的字符串如下:%sn, char_array);ptr = char_array; /将一个字符型指针指向字符型数组char_array的首地址/开始修改字符串while (*ptr != 0) /检测是否到串未尾if (*ptr = )*ptr = !;ptr+;printf(修改后的字符串如下:%s n, char_array);return 0;Gets()函数#pragma warning(disable:4996)#includevoid main()char phoneNumber12;printf(请输入手机号码:);gets(phoneNumber);printf(您的手机号码是: %sn, phoneNumber);Puts()#pragma warning(disable:4996)#includevoid main()char buf12;puts(请输入一个字符串:);gets(buf);puts(您输入的是: n);puts(buf);字符串比较#pragma warning(disable:4996)#include#includevoid main()char username100; /定义存放用户名的字符数组char password100; /定义存放密码的字符数组printf(登录n);printf(请输入用户名: );gets(username); /获取用户输入的用户名printf(请输入密码: );gets(password); /获取用户输入的密码/比较输入的用户名和密码是否正确if (!strcmp(password, ILoveC) & (!strcmp(username, user)printf(用户 %s 登录成功!n, username);elseprintf(登陆失败,请检查用户名或密码是否正确输入。n);Strncmp()函数#include#includevoid main()char* str1 = abcdef;char* str2 = abcdeg;/判断字符串str1和str2中的前5个字符是否相同if (!strncmp(str1, str2, 5)printf(str1和str2的前5个字符相同);elseprintf(str1和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 main() char str6 = abaca;char c = a;int num = getcount(str, c);printf(字符%c在字符串中出现了%d次。n, c, num);Strstr()函数#pragma warning(disable:4996)#include#includevoid main()char str10240; /声明字符串数组,用于保存段落char word10240; /声明字符串数组,用于保存要查找的字符串char* ptr;printf(请输入要扫描的段落:);gets(str);printf(请输入要查找的单词:);gets(word);ptr = strstr(str, word); /搜索是否包含指定的字符串if (ptr = NULL)printf(段落中不包含单词 %s。n, word);else/得到检测出的字符串后20个字符if (strlen(ptr) = 20)ptr20 = 0;printf(单词出现在 %s附近。n, ptr);Strcat()函数#pragma warning(disable:4996)#include#includevoid main()/区号char areaNumber5;/电话号码char phoneNumber12;int input;/分机号char extraNumber5;/用来存储连接后的结果,需要初始化为0!char buffer25 = 0 ;printf(请输入区号:);gets(areaNumber);printf(请输入电话号码:);gets(phoneNumber);printf(有分机号吗?(y/n);input = getchar();/由于getchar()只读入一个字符,因此需要调用fflush来清除输入缓冲区的换行符fflush(stdin);if (input = y)printf(请输入分机号:);gets(extraNumber);strcat(buffer, areaNumber);strcat(buffer, -);strcat(buffer, phoneNumber);strcat(buffer, -);strcat(buffer, extraNumber);elsestrcat(buffer, areaNumber);strcat(buffer, -);strcat(buffer, phoneNumber);printf(您的电话号码是 %s。n,buffer)

温馨提示

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

评论

0/150

提交评论