C经典程序代码大全_第1页
C经典程序代码大全_第2页
C经典程序代码大全_第3页
C经典程序代码大全_第4页
C经典程序代码大全_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

C经典程序代码大全一、基础语法类(入门必学)1.第一个C程序(HelloWorld)说明:C语言入门经典案例,实现控制台输出字符串,掌握基本程序结构(头文件、主函数、输出函数)。c

#include<stdio.h>//引入标准输入输出头文件

intmain(){//主函数,程序入口

printf("HelloWorld!\n");//输出HelloWorld,\n表示换行

return0;//主函数返回值,0表示程序正常结束

}2.变量与数据类型演示说明:展示C语言基本数据类型(整型、浮点型、字符型)的定义、赋值与输出,理解不同类型的存储特点。c

#include<stdio.h>

intmain(){

//定义不同类型变量

intnum1=100;//整型(整数)

floatnum2=3.14f;//单精度浮点型(小数)

doublenum3=3.1415926;//双精度浮点型(精度更高的小数)

charch='A';//字符型(单个字符)

//输出变量值,%d、%f、%lf、%c分别对应不同数据类型

printf("整型变量num1:%d\n",num1);

printf("单精度浮点型num2:%f\n",num2);

printf("双精度浮点型num3:%lf\n",num3);

printf("字符型变量ch:%c\n",ch);

return0;

}3.输入输出交互(scanf用法)说明:实现从控制台接收用户输入,再将输入内容输出,掌握scanf函数的基本用法(注意地址符&)。c

#include<stdio.h>

intmain(){

intage;

charname[20];//字符数组,用于存储字符串(姓名)

printf("请输入你的姓名:");

scanf("%s",name);//字符串输入无需加&(数组名本身就是地址)

printf("请输入你的年龄:");

scanf("%d",&age);//整型输入需要加&,表示取变量地址

printf("你好,%s!你的年龄是%d岁。\n",name,age);

return0;

}二、条件判断与循环类(流程控制)1.if-else条件判断(判断奇偶数)说明:使用if-else语句判断一个数是奇数还是偶数,掌握条件判断的基本逻辑(取余运算%)。c

#include<stdio.h>

intmain(){

intnum;

printf("请输入一个整数:");

scanf("%d",&num);

//取余运算:num%2==0表示能被2整除,即偶数

if(num%2==0){

printf("%d是偶数\n",num);

}else{

printf("%d是奇数\n",num);

}

return0;

}2.switch-case多条件判断(成绩等级评定)说明:根据输入的成绩,使用switch-case语句评定等级(A、B、C、D、E),适用于多分支条件场景。c

#include<stdio.h>

intmain(){

intscore;

printf("请输入你的成绩(0-100):");

scanf("%d",&score);

//先处理成绩范围异常的情况

if(score<0||score>100){

printf("成绩输入错误!\n");

return1;//返回1,表示程序异常结束

}

//switch接收整型/字符型表达式,case匹配对应值

switch(score/10){

case10:

case9:printf("成绩等级:A\n");break;//90-100分,break跳出switch

case8:printf("成绩等级:B\n");break;//80-89分

case7:printf("成绩等级:C\n");break;//70-79分

case6:printf("成绩等级:D\n");break;//60-69分

default:printf("成绩等级:E(不及格)\n");//0-59分,default匹配所有未命中case

}

return0;

}3.for循环(打印1-100的和)说明:使用for循环计算1到100的累加和,掌握for循环的语法(初始化、循环条件、自增/自减)。c

#include<stdio.h>

intmain(){

intsum=0;//用于存储累加和,初始化为0

//for循环:初始化i=1;i<=100时执行循环体;每次循环后i自增1

for(inti=1;i<=100;i++){

sum+=i;//等价于sum=sum+i

}

printf("1到100的累加和:%d\n",sum);//结果应为5050

return0;

}4.while循环(打印10-1的倒序)说明:使用while循环从10打印到1,掌握while循环的语法(先判断条件,再执行循环体)。c

#include<stdio.h>

intmain(){

inti=10;//初始化循环变量

//while循环:只要i>=1,就执行循环体

while(i>=1){

printf("%d",i);

i--;//循环变量自减,避免死循环

}

printf("\n");

return0;

}5.do-while循环(求输入数的阶乘)说明:使用do-while循环计算一个数的阶乘(n!=n×(n-1)×...×1),特点是先执行一次循环体,再判断条件。c

#include<stdio.h>

intmain(){

intn,factorial=1;

printf("请输入一个正整数:");

scanf("%d",&n);

if(n<0){

printf("负数没有阶乘!\n");

return1;

}

//do-while循环:先执行一次循环体,再判断n>0

do{

factorial*=n;//等价于factorial=factorial*n

n--;

}while(n>0);

printf("阶乘结果:%d\n",factorial);

return0;

}三、数组与字符串类(批量数据处理)1.一维数组(求数组最大值)说明:定义一维整型数组,遍历数组找到最大值,掌握数组的定义、下标访问和遍历方法。c

#include<stdio.h>

intmain(){

//定义一维数组,初始化5个元素

intarr[]={12,45,7,98,34};

intlen=sizeof(arr)/sizeof(arr[0]);//计算数组长度(总字节数/单个元素字节数)

intmax=arr[0];//假设第一个元素是最大值

//遍历数组,从第二个元素开始比较

for(inti=1;i<len;i++){

if(arr[i]>max){

max=arr[i];//更新最大值

}

}

printf("数组的最大值:%d\n",max);//结果应为98

return0;

}2.二维数组(打印矩阵)说明:定义二维数组(3行4列),使用双重循环遍历并打印矩阵,掌握二维数组的定义和下标访问。c

#include<stdio.h>

intmain(){

//定义3行4列的二维数组,初始化数据

intmatrix[3][4]={

{1,2,3,4},

{5,6,7,8},

{9,10,11,12}

};

//双重循环:外层循环控制行,内层循环控制列

for(inti=0;i<3;i++){//i表示行号(0-2)

for(intj=0;j<4;j++){//j表示列号(0-3)

printf("%d\t",matrix[i][j]);//\t表示制表符,使输出对齐

}

printf("\n");//每打印一行,换行

}

return0;

}3.字符串操作(字符串长度、拼接)说明:使用C语言标准库string.h中的函数,实现字符串长度计算、字符串拼接,掌握字符串的基本操作。c

#include<stdio.h>

#include<string.h>//引入字符串操作头文件

intmain(){

charstr1[20]="Hello";

charstr2[20]="World";

intlen;

//1.计算字符串长度(strlen:不包含结束符'\0')

len=strlen(str1);

printf("str1的长度:%d\n",len);//结果应为5

//2.字符串拼接(strcat:将str2拼接到str1末尾)

strcat(str1,str2);

printf("拼接后的字符串:%s\n",str1);//结果应为"HelloWorld"

//3.字符串比较(strcmp:相等返回0,str1>str2返回正数,否则返回负数)

intcmp=strcmp(str1,"HelloWorld");

if(cmp==0){

printf("两个字符串相等\n");

}else{

printf("两个字符串不相等\n");

}

return0;

}四、函数类(代码复用)1.无参无返回值函数(打印菜单)说明:定义无参数、无返回值的函数,实现菜单打印功能,掌握函数的定义和调用方法。c

#include<stdio.h>

//函数声明:无参无返回值(void表示无返回值)

voidprintMenu();

intmain(){

printMenu();//调用函数

return0;

}

//函数定义:实现打印菜单的功能

voidprintMenu(){

printf("=====================\n");

printf("主菜单\n");

printf("1.查看信息\n");

printf("2.修改信息\n");

printf("3.退出程序\n");

printf("=====================\n");

}2.有参有返回值函数(求两数之和)说明:定义有参数、有返回值的函数,实现两数相加的功能,掌握函数参数传递和返回值的使用。c

#include<stdio.h>

//函数声明:接收两个int型参数,返回int型结果

intadd(inta,intb);

intmain(){

intnum1,num2,sum;

printf("请输入两个整数:");

scanf("%d%d",&num1,&num2);

sum=add(num1,num2);//调用函数,接收返回值

printf("%d+%d=%d\n",num1,num2,sum);

return0;

}

//函数定义:实现两数相加,返回和

intadd(inta,intb){

returna+b;//返回两数之和

}3.函数递归(求斐波那契数列)说明:使用递归函数求斐波那契数列的第n项(斐波那契数列:1,1,2,3,5,8...,前两项为1,从第三项开始是前两项之和),掌握递归的基本思想。c

#include<stdio.h>

//递归函数声明:求第n项斐波那契数

intfibonacci(intn);

intmain(){

intn;

printf("请输入斐波那契数列的项数:");

scanf("%d",&n);

if(n<1){

printf("项数必须为正整数!\n");

return1;

}

intresult=fibonacci(n);

printf("斐波那契数列第%d项:%d\n",n,result);

return0;

}

//递归函数定义:递归终止条件+递归调用

intfibonacci(intn){

//终止条件:第1项和第2项都是1

if(n==1||n==2){

return1;

}

//递归调用:第n项=第n-1项+第n-2项

returnfibonacci(n-1)+fibonacci(n-2);

}五、指针类(核心难点)1.指针基础(通过指针修改变量值)说明:定义指针变量,通过指针访问和修改原变量的值,理解指针的本质(存储变量地址)。c

#include<stdio.h>

intmain(){

intnum=10;

int*p=#//定义int型指针p,指向num的地址(&是取地址符)

printf("num的地址:%p\n",&num);//%p用于打印地址

printf("指针p存储的地址:%p\n",p);//p存储的是num的地址

printf("通过指针访问num的值:%d\n",*p);//*p是解引用,获取指针指向的值

//通过指针修改num的值

*p=20;

printf("修改后num的值:%d\n",num);//结果应为20

return0;

}2.指针操作数组(遍历数组)说明:使用指针遍历数组,理解数组名与指针的关系(数组名本质是数组首元素的地址)。c

#include<stdio.h>

intmain(){

intarr[]={10,20,30,40,50};

intlen=sizeof(arr)/sizeof(arr[0]);

int*p=arr;//数组名arr等价于&arr[0],指针p指向数组首元素

printf("通过指针遍历数组:\n");

//指针p自增,指向数组下一个元素

for(inti=0;i<len;i++){

printf("%d",*p);//解引用获取当前元素值

p++;//指针自增,移动到下一个元素(地址增加4字节,因为int是4字节)

}

printf("\n");

return0;

}六、常用算法类(实用场景)1.排序算法(冒泡排序)说明:使用冒泡排序算法对数组进行升序排序,核心思想是“相邻元素比较,交换位置”,掌握基础排序逻辑。c

#include<stdio.h>

//冒泡排序函数:接收数组和数组长度,对数组升序排序

voidbubbleSort(intarr[],intlen){

//外层循环:控制排序轮数(n个元素需要n-1轮)

for(inti=0;i<len-1;i++){

//内层循环:每轮比较相邻元素,将大的元素“冒泡”到末尾

for(intj=0;j<len-1-i;j++){

if(arr[j]>arr[j+1]){

//交换两个元素的值

inttemp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

}

intmain(){

intarr[]={34,12,56,78,9,23};

intlen=sizeof(arr)/sizeof(arr[0]);

printf("排序前的数组:");

for(inti=0;i<len;i++){

printf("%d",arr[i]);

}

printf("\n");

bubbleSort(arr,len);//调用冒泡排序函数

printf("排序后的数组:");

for(inti=0;i<len;i++){

printf("%d",arr[i]);

}

printf("\n");

return0;

}2.查找算法(二分查找)说明:使用二分查找算法在有序数组中查找指定元素,核心思想是“折半缩小范围”,效率高于顺序查找(仅适用于有序数组)。c

#include<stdio.h>

//二分查找函数:返回查找元素的下标,未找到返回-1

intbinarySearch(intarr[],intlen,inttarget){

intleft=0;//左边界

intright=len-1;//右边界

//当左边界<=右边界时,继续查找

while(left<=right){

intmid=(left+right)/2;//中间位置下标

if(arr[mid]==target){

returnmid;//找到目标元素,返回下标

}elseif(arr[mid]<target){

left=mid+1;//目标元素在右半部分,移动左边界

}else{

right=mid-1;//目标元素在左半部分,移动右边界

}

}

return-1;//未找到目标元素

}

intmain(){

intarr[]={9,12,23,34,56,78};//必须是有序数组

intlen=sizeof(arr)/sizeof(arr[0]);

inttarget;

printf("请输入要查找的元素:");

scanf("%d",&target);

intindex=binarySearch(arr,len,target);

if(index!=-1){

printf("元素%d找到,下标为:%d\n",target,index);

}else{

printf("元素%d未找到!\n",target);

}

return0;

}3.素数判断(判断一个数是否为素数)说明:素数是指大于1的正整数,除了1和它本身外,不能被其他正整数整除,掌握素数判断的优化逻辑。c

#include<stdio.h>

#include<math.h>//用于sqrt函数(求平方根)

//素数判断函数:是素数返回1,不是返回0

intisPrime(intnum){

if(num<=1){

return0;//1和小于1的数不是素数

}

//优化:只需判断到sqrt(num),因为大于sqrt(num)的因子会和小于sqrt(num)的因子成对出现

for(inti=2;i<=sqrt(num);i++){

if(num%i==0){

return0;//能被其他数整除,不是素数

}

}

return1;//是素数

}

intmain(){

intnum;

printf("请输入一个正整数:");

scanf("%d",&num);

if(isPrime(num)){

printf("%d是素数\n",num);

}else{

printf("%d不是素数\n",num);

}

return0;

}七、文件操作类(持久化存储)1.写入文件(将数据写入文本文件

温馨提示

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

评论

0/150

提交评论