C语言代码大全(基础+进阶)_第1页
C语言代码大全(基础+进阶)_第2页
C语言代码大全(基础+进阶)_第3页
C语言代码大全(基础+进阶)_第4页
C语言代码大全(基础+进阶)_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

C语言代码大全(基础+进阶)一、基础入门代码(必学)1.第一个C语言程序(HelloWorld)c

#include<stdio.h>

//程序入口:main函数,程序从这里开始执行

intmain(){

//printf函数:在控制台输出内容,\n表示换行

printf("HelloWorld!\n");

//返回0,表示程序正常结束

return0;

}说明:最基础的C程序框架,包含头文件引用、main函数、输出语句,是所有C程序的基础模板。2.变量与数据类型(int、float、char、double)c

#include<stdio.h>

intmain(){

//基本数据类型变量定义与初始化

intage=20;//整型:用于存储整数

floatscore=95.5f;//单精度浮点型:用于存储小数(加f区分float和double)

doubleweight=62.3;//双精度浮点型:精度比float高,默认小数为double

chargender='M';//字符型:存储单个字符,用单引号包裹

//输出变量值,%d对应int,%f对应float/double,%c对应char

printf("年龄:%d\n",age);

printf("成绩:%.1f\n",score);//%.1f表示保留1位小数

printf("体重:%.1f\n",weight);

printf("性别:%c\n",gender);

return0;

}3.输入输出(scanf读取用户输入)c

#include<stdio.h>

intmain(){

inta,b;

printf("请输入两个整数(用空格分隔):");

//scanf读取用户输入,&是取地址符,必须加在变量前

scanf("%d%d",&a,&b);

//输出两个数的和、差、积、商

printf("和:%d\n",a+b);

printf("差:%d\n",a-b);

printf("积:%d\n",a*b);

printf("商:%d(整数除法,忽略小数)\n",a/b);

printf("余数:%d\n",a%b);//%是取余运算符,仅用于整数

return0;

}4.分支结构(if-else、switch-case)(1)if-else(判断条件,执行不同逻辑)c

#include<stdio.h>

intmain(){

intscore;

printf("请输入成绩:");

scanf("%d",&score);

//多条件判断,从高到低依次执行

if(score>=90){

printf("优秀\n");

}elseif(score>=80){

printf("良好\n");

}elseif(score>=60){

printf("及格\n");

}else{

printf("不及格\n");

}

return0;

}(2)switch-case(多分支匹配,适合固定值判断)c

#include<stdio.h>

intmain(){

chargrade;

printf("请输入等级(A/B/C/D):");

scanf("%c",&grade);//%c前加空格,避免读取上一次输入的回车

switch(grade){

case'A':

printf("成绩90-100分\n");

break;//break:跳出switch,避免继续执行后续case

case'B':

printf("成绩80-89分\n");

break;

case'C':

printf("成绩60-79分\n");

break;

case'D':

printf("成绩60分以下\n");

break;

default://当所有case都不匹配时,执行default

printf("输入的等级无效\n");

}

return0;

}5.循环结构(for、while、do-while)(1)for循环(适合已知循环次数)c

#include<stdio.h>

intmain(){

//循环1-10,计算1到10的和

intsum=0;

//for(初始化;循环条件;变量更新)

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

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

}

printf("1到10的和:%d\n",sum);//结果:55

return0;

}(2)while循环(适合未知循环次数,先判断后执行)c

#include<stdio.h>

intmain(){

//输入数字,直到输入0为止,统计输入的正数个数

intnum,count=0;

printf("请输入数字(输入0结束):");

scanf("%d",&num);

while(num!=0){

if(num>0){

count++;

}

printf("请输入数字(输入0结束):");

scanf("%d",&num);

}

printf("输入的正数个数:%d\n",count);

return0;

}(3)do-while循环(先执行后判断,至少执行一次)c

#include<stdio.h>

intmain(){

//验证密码(至少输入一次密码)

intpassword;

do{

printf("请输入密码(123456):");

scanf("%d",&password);

if(password!=123456){

printf("密码错误,请重新输入!\n");

}

}while(password!=123456);//密码错误则继续循环

printf("密码正确,登录成功!\n");

return0;

}二、进阶核心代码(重点掌握)1.数组(一维数组、二维数组)(1)一维数组(存储多个相同类型的数据)c

#include<stdio.h>

intmain(){

//一维数组定义:数据类型数组名[数组长度]={初始化值};

intarr[5]={1,2,3,4,5};//长度为5,初始化5个元素

//intarr[]={1,2,3,4,5};//可省略长度,编译器自动计算

//遍历数组(用for循环)

printf("数组元素:");

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

printf("%d",arr[i]);//数组下标从0开始,arr[0]是第一个元素

}

printf("\n");

//修改数组元素

arr[2]=10;

printf("修改后数组:");

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

printf("%d",arr[i]);//结果:121045

}

return0;

}(2)二维数组(类似表格,行和列)c

#include<stdio.h>

intmain(){

//二维数组定义:数据类型数组名[行数][列数]={初始化值};

intarr[2][3]={{1,2,3},{4,5,6}};//2行3列

//遍历二维数组(双重for循环,外层控制行,内层控制列)

printf("二维数组元素:\n");

for(inti=0;i<2;i++){//i:行下标

for(intj=0;j<3;j++){//j:列下标

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

}

printf("\n");//每一行结束换行

}

return0;

}2.函数(封装代码,复用性强)(1)无参无返回值函数c

#include<stdio.h>

//函数声明:告诉编译器函数的存在(返回值类型、函数名、参数)

voidprintHello();

intmain(){

printHello();//调用函数

return0;

}

//函数定义:函数的具体实现

voidprintHello(){

printf("HelloCLanguage!\n");

}(2)有参有返回值函数(计算两数之和)c

#include<stdio.h>

//函数声明:int(返回值类型)add(函数名)(inta,intb)(参数列表)

intadd(inta,intb);

intmain(){

intx=10,y=20;

//调用函数,接收返回值

intresult=add(x,y);

printf("%d+%d=%d\n",x,y,result);//结果:30

return0;

}

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

intadd(inta,intb){

returna+b;//返回值,交给调用者

}(3)函数递归(自己调用自己,适合分治问题)c

#include<stdio.h>

//递归函数:计算n的阶乘(n!=n*(n-1)*...*1)

intfactorial(intn){

//递归终止条件:n=1时,返回1(避免无限递归)

if(n==1){

return1;

}

//递归调用:n!=n*(n-1)!

returnn*factorial(n-1);

}

intmain(){

intn;

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

scanf("%d",&n);

printf("%d的阶乘:%d\n",n,factorial(n));//示例:5!=120

return0;

}3.指针(C语言核心,操作内存地址)c

#include<stdio.h>

intmain(){

inta=10;

int*p;//定义指针变量p,*表示p是指针,指向int类型数据

p=&a;//指针p存储变量a的地址(&a是a的地址)

printf("变量a的值:%d\n",a);//结果:10

printf("变量a的地址:%p\n",&a);//%p输出地址,格式为十六进制

printf("指针p存储的地址:%p\n",p);//与&a一致

printf("指针p指向的值:%d\n",*p);//*p:解引用,获取指针指向的值(等价于a)

//通过指针修改变量的值

*p=20;

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

return0;

}4.字符串(char数组,C语言无专门字符串类型)c

#include<stdio.h>

#include<string.h>//字符串操作函数需要包含该头文件

intmain(){

//字符串定义:以'\0'(空字符)结尾,'\0'是字符串结束标志

charstr1[]="hello";//自动添加'\0',长度为6(hello\0)

charstr2[10];

//字符串赋值(不能直接用str2=str1,需用strcpy函数)

strcpy(str2,str1);

printf("str2:%s\n",str2);//%s输出字符串,遇到'\0'停止

//字符串长度(strlen函数,不包含'\0')

printf("str1长度:%d\n",strlen(str1));//结果:5

//字符串拼接(strcat函数)

strcat(str1,"world");

printf("拼接后str1:%s\n",str1);//结果:helloworld

//字符串比较(strcmp函数,返回0表示相等)

if(strcmp(str1,"helloworld")==0){

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

}else{

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

}

return0;

}三、实用工具代码(高频使用)1.排序算法(冒泡排序、选择排序)(1)冒泡排序(简单易理解,相邻元素对比交换)c

#include<stdio.h>

//冒泡排序:将数组从小到大排序

voidbubbleSort(intarr[],intlen){

//外层循环:控制排序轮次,共len-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[]={5,2,9,1,5,6};

intlen=sizeof(arr)/sizeof(arr[0]);//计算数组长度

printf("排序前:");

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

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

}

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

printf("\n排序后:");

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

printf("%d",arr[i]);//结果:125569

}

return0;

}(2)选择排序(每轮找最小值,放在前面)c

#include<stdio.h>

//选择排序:从小到大排序

voidselectSort(intarr[],intlen){

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

intminIndex=i;//假设当前i是最小值的下标

//找当前轮次的最小值下标

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

if(arr[j]<arr[minIndex]){

minIndex=j;//更新最小值下标

}

}

//交换最小值和当前i位置的元素

inttemp=arr[i];

arr[i]=arr[minIndex];

arr[minIndex]=temp;

}

}

intmain(){

intarr[]={7,3,8,4,2};

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

selectSort(arr,len);

printf("排序后:");

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

printf("%d",arr[i]);//结果:23478

}

return0;

}2.数组查找(线性查找、二分查找)(1)线性查找(遍历数组,逐个对比,适合无序数组)c

#include<stdio.h>

//线性查找:查找目标值,返回下标(找不到返回-1)

intlinearSearch(intarr[],intlen,inttarget){

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

if(arr[i]==target){

returni;//找到,返回下标

}

}

return-1;//找不到

}

intmain(){

intarr[]={10,23,5,17,8};

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

inttarget=17;

intindex=linearSearch(arr,len,target);

if(index!=-1){

printf("找到目标值%d,下标为:%d\n",target,index);//结果:下标3

}else{

printf("未找到目标值%d\n",target);

}

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[]={2,5,8,12,16,23};//必须是有序数组

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

inttarget=12;

intindex=binarySearch(arr,len,target);

if(index!=-1){

printf("找到目标值%d,下标为:%d\n",target,index);//结果:下标3

}else{

printf("未找到目标值%d\n",target);

}

return0;

}3.结构体(存储不同类型的相关数据)c

#include<stdio.h>

#include<string.h>

//定义结构体:struct结构体名{成员列表};

structStudent{

charname[20];//姓名

intage;//年龄

floatscore;//成绩

};

intmain(){

//定义结构体变量并初始化

structStudentstu1={"张三",18,92.5};

//访问结构体成员(用.操作符)

printf("姓名:%s\n",);

printf("年龄:%d\n",stu1.age);

printf("成绩:%.1f\n",stu1.score);

//修改结构体成员

strcpy(,"李四");

stu1.age=19;

printf("\n修改后:\n");

printf("姓名:%s\n",);

printf("年龄:%d\n",stu1.age);

//结构体指针(用->操作符访问成员)

structStudent*p=&stu1;

printf("\n结构体指针访问:\n");

printf("姓名:%s\n",p->name);

printf("成绩:%.1f\n",p->score);

return0;

}4.文件操作(读取文件、写入文件)(1)写入文件c

温馨提示

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

评论

0/150

提交评论