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

下载本文档

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

文档简介

C语言经典例程一、基础语法类(入门必学)例程1:HelloWorld(第一个C程序)功能:输出"HelloWorld!",熟悉C语言基本结构(头文件、主函数、输出语句)。c

#include<stdio.h>//引入标准输入输出头文件,用于printf函数

intmain(){//主函数,C程序的入口,程序从这里开始执行

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

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

}说明:每个C程序必须有且仅有一个main()函数,printf是stdio.h中的库函数,用于向控制台输出内容。例程2:求两个整数的和与差功能:接收用户输入的两个整数,计算并输出它们的和与差,熟悉输入语句scanf、变量定义。c

#include<stdio.h>

intmain(){

inta,b,sum,diff;//定义4个整型变量,a、b存储输入值,sum存和,diff存差

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

scanf("%d%d",&a,&b);//输入语句,%d表示接收整型,&是取地址符,将输入值存入变量

sum=a+b;//计算和

diff=a-b;//计算差

printf("和:%d\n差:%d\n",sum,diff);//输出结果,按顺序对应sum和diff

return0;

}例程3:判断奇偶数功能:输入一个整数,判断其是奇数还是偶数,熟悉if-else条件判断语句。c

#include<stdio.h>

intmain(){

intnum;

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

scanf("%d",&num);

//取余运算:偶数对2取余为0,奇数为1

if(num%2==0){

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

}else{

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

}

return0;

}二、循环结构类(核心逻辑)例程4:用for循环求1~100的和功能:计算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,累加每次的i

}

printf("1~100的和为:%d\n",sum);

return0;

}例程5:用while循环求n的阶乘功能:输入一个正整数n,计算n!(n的阶乘,n!=n×(n-1)×...×1),熟悉while循环。c

#include<stdio.h>

intmain(){

intn,fact=1;//fact存储阶乘结果,初始值为1(乘法的初始值不能为0)

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

scanf("%d",&n);

if(n<0){

printf("错误:负数没有阶乘\n");

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

}

inti=1;

//while循环:只要i<=n,就执行循环体

while(i<=n){

fact*=i;//等价于fact=fact*i

i++;//i自增,避免死循环

}

printf("%d的阶乘为:%d\n",n,fact);

return0;

}例程6:用do-while循环实现菜单(循环至少执行一次)功能:实现一个简单的菜单,要求至少显示一次菜单,熟悉do-while循环的特性(先执行、后判断)。c

#include<stdio.h>

intmain(){

intchoice;

//do-while循环:先执行循环体,再判断条件,确保至少执行一次

do{

printf("=====简单菜单=====\n");

printf("1.显示欢迎语\n");

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

printf("请输入你的选择(1/2):");

scanf("%d",&choice);

switch(choice){//多分支判断,配合菜单使用

case1:

printf("欢迎使用C语言例程!\n");

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

case2:

printf("程序退出,再见!\n");

break;

default:

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

}

}while(choice!=2);//当选择不是2时,继续循环

return0;

}三、数组与字符串类(常用场景)例程7:求数组的最大值和最小值功能:定义一个整型数组,遍历数组,找出其中的最大值和最小值,熟悉数组的定义和遍历。c

#include<stdio.h>

intmain(){

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

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

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

intmax=arr[0],min=arr[0];//初始化最大值和最小值为数组第一个元素

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

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

if(arr[i]>max){

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

}

if(arr[i]<min){

min=arr[i];//更新最小值

}

}

printf("数组的最大值:%d\n",max);

printf("数组的最小值:%d\n",min);

return0;

}例程8:字符串反转(如"abc"→"cba")功能:输入一个字符串,将其反转后输出,熟悉字符串的存储、strlen函数的使用。c

#include<stdio.h>

#include<string.h>//引入字符串处理头文件,用于strlen函数

intmain(){

charstr[100];//定义字符数组,存储字符串(最多99个字符,最后一个是结束符'\0')

printf("请输入一个字符串:");

gets(str);//读取字符串(也可用scanf("%s",str),但无法读取空格)

intlen=strlen(str);//计算字符串长度(不包含结束符'\0')

chartemp;//临时变量,用于交换字符

//双指针法:第一个字符和最后一个字符交换,依次向中间靠拢

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

temp=str[i];

str[i]=str[len-1-i];

str[len-1-i]=temp;

}

printf("反转后的字符串:%s\n",str);

return0;

}例程9:统计字符串中字母、数字、其他字符的个数功能:输入一个字符串,统计其中大写字母、小写字母、数字、其他字符的数量,熟悉字符判断函数。c

#include<stdio.h>

#include<string.h>

intmain(){

charstr[100];

intupper=0,lower=0,digit=0,other=0;//分别统计四类字符

printf("请输入一个字符串:");

gets(str);

intlen=strlen(str);

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

if(str[i]>='A'&&str[i]<='Z'){

upper++;//大写字母

}elseif(str[i]>='a'&&str[i]<='z'){

lower++;//小写字母

}elseif(str[i]>='0'&&str[i]<='9'){

digit++;//数字

}else{

other++;//其他字符

}

}

printf("大写字母:%d个\n",upper);

printf("小写字母:%d个\n",lower);

printf("数字:%d个\n",digit);

printf("其他字符:%d个\n",other);

return0;

}四、指针类(C语言核心)例程10:用指针访问变量功能:通过指针变量访问和修改普通变量的值,理解指针的本质(地址)。c

#include<stdio.h>

intmain(){

inta=10;

int*p=&a;//定义指针变量p,指向变量a的地址(&a是a的地址)

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

printf("变量a的地址:%p\n",&a);//%p用于输出地址

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

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

*p=20;//通过指针修改a的值

printf("修改后,变量a的值:%d\n",a);

return0;

}例程11:用指针遍历数组功能:通过指针遍历数组,替代数组下标,理解数组名与指针的关系(数组名本质是数组首元素的地址)。c

#include<stdio.h>

intmain(){

intarr[]={1,2,3,4,5};

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

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

printf("用指针遍历数组:");

//指针p每次自增1,指向数组下一个元素(int型指针自增1,偏移4个字节)

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

printf("%d",*(p+i));//*(p+i)等价于arr[i]

}

printf("\n");

//另一种遍历方式:移动指针本身

p=arr;//重置指针指向首元素

printf("移动指针遍历数组:");

while(p<arr+len){

printf("%d",*p);

p++;//指针移动,指向next元素

}

printf("\n");

return0;

}五、函数类(模块化编程)例程12:自定义函数求两数最大值功能:定义一个自定义函数,接收两个整数,返回它们的最大值,熟悉函数的定义、声明和调用。c

#include<stdio.h>

//函数声明:告诉编译器,有一个函数叫max,接收两个int参数,返回int值

intmax(intx,inty);

intmain(){

inta,b;

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

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

intresult=max(a,b);//调用max函数,传入a和b,接收返回值

printf("最大值:%d\n",result);

return0;

}

//函数定义:实现max函数的功能

intmax(intx,inty){

returnx>y?x:y;//三目运算符,等价于if-else判断

}例程13:用函数实现冒泡排序(数组排序)功能:定义冒泡排序函数,对数组进行升序排序,熟悉函数操作数组(通过指针或数组名)。c

#include<stdio.h>

//冒泡排序函数:arr是数组,len是数组长度

voidbubbleSort(intarr[],intlen){

//外层循环:控制排序轮数,共len-1轮

for(inti=0;i<len-1;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]);

}

bubbleSort(arr,len);//调用冒泡排序函数,数组名作为参数(传递首地址)

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

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

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

}

printf("\n");

return0;

}六、综合案例(实战应用)例程14:简易计算器(实现加减乘除)功能:接收用户输入的两个数和运算符,实现加减乘除运算,整合条件判断、循环、函数等知识点。c

#include<stdio.h>

//自定义函数:实现加减乘除运算

floatcalculate(floata,floatb,charop){

switch(op){

case'+':

returna+b;

case'-':

returna-b;

case'*':

returna*b;

case'/':

if(b==0){

printf("错误:除数不能为0!\n");

温馨提示

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

评论

0/150

提交评论