版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计经典实例一、基础语法类(入门必练)实例1:HelloWorld(第一个C程序)题目要求编写程序,在屏幕上输出“HelloWorld!”,熟悉C语言的基本结构(头文件、主函数、输出语句)。核心知识点头文件#include<stdio.h>(标准输入输出库)、主函数main()、输出函数printf()、语句结束符;。完整代码c
#include<stdio.h>//引入标准输入输出头文件,用于使用printf函数
intmain(){//主函数,程序的入口,所有C程序必须有且只有一个main函数
printf("HelloWorld!\n");//输出语句,\n表示换行
return0;//主函数返回值,0表示程序正常结束
}运行结果HelloWorld!实例2:求两个整数的和、差、积、商题目要求从键盘输入两个整数,计算并输出它们的和、差、积、商(注意:除数不能为0,需增加判断)。核心知识点输入函数scanf()、变量定义、算术运算符(+、-、*、/)、条件判断if-else。完整代码c
#include<stdio.h>
intmain(){
inta,b;//定义两个整型变量,用于存储输入的两个整数
//提示用户输入两个整数
printf("请输入两个整数(用空格分隔):");
scanf("%d%d",&a,&b);//读取用户输入的值,&表示取变量地址
//计算并输出和、差、积
printf("和:%d+%d=%d\n",a,b,a+b);
printf("差:%d-%d=%d\n",a,b,a-b);
printf("积:%d*%d=%d\n",a,b,a*b);
//判断除数是否为0,避免除零错误
if(b!=0){
printf("商:%d/%d=%d\n",a,b,a/b);//整数除法,结果取整
}else{
printf("错误:除数不能为0!\n");//除数为0时输出错误提示
}
return0;
}运行结果(示例)请输入两个整数(用空格分隔):103
和:10+3=13
差:10-3=7
积:10*3=30
商:10/3=3二、数组类(基础进阶)实例3:求数组的最大值、最小值和平均值题目要求定义一个包含10个整型元素的数组,从键盘输入数组元素,计算并输出数组的最大值、最小值和平均值(保留2位小数)。核心知识点数组定义、数组遍历(for循环)、变量初始化、平均值计算(注意数据类型转换)。完整代码c
#include<stdio.h>
intmain(){
intarr[10];//定义一个包含10个整型元素的数组
intmax,min;
intsum=0;//用于存储数组元素的和,初始化为0
floatavg;//平均值,用float类型存储,保留小数
//输入数组元素
printf("请输入10个整数(用空格分隔):");
for(inti=0;i<10;i++){//遍历数组,i从0到9(数组下标从0开始)
scanf("%d",&arr[i]);//给数组的第i个元素赋值
sum+=arr[i];//累加数组元素,计算总和
}
//初始化最大值和最小值(取数组第一个元素作为初始值)
max=arr[0];
min=arr[0];
//遍历数组,寻找最大值和最小值
for(inti=1;i<10;i++){
if(arr[i]>max){//如果当前元素大于max,更新max
max=arr[i];
}
if(arr[i]<min){//如果当前元素小于min,更新min
min=arr[i];
}
}
//计算平均值,sum是int类型,10是int类型,需转换为float避免整数除法
avg=(float)sum/10;
//输出结果,%.2f表示保留2位小数
printf("数组的最大值:%d\n",max);
printf("数组的最小值:%d\n",min);
printf("数组的平均值:%.2f\n",avg);
return0;
}运行结果(示例)请输入10个整数(用空格分隔):58310271946
数组的最大值:10
数组的最小值:1
数组的平均值:5.50实例4:数组排序(冒泡排序)题目要求定义一个包含8个整型元素的数组,从键盘输入元素后,使用冒泡排序法将数组元素按从小到大的顺序排列并输出。核心知识点冒泡排序原理(相邻元素比较、交换)、双重for循环、数组元素交换(借助临时变量)。完整代码c
#include<stdio.h>
intmain(){
intarr[8];
inttemp;//临时变量,用于交换数组元素
//输入数组元素
printf("请输入8个整数(用空格分隔):");
for(inti=0;i<8;i++){
scanf("%d",&arr[i]);
}
//冒泡排序:外层循环控制排序轮数(共n-1轮,n为数组长度)
for(inti=0;i<7;i++){
//内层循环控制每轮比较次数(每轮减少1次,因为最后i个元素已排序好)
for(intj=0;j<7-i;j++){
//相邻元素比较,若前一个大于后一个,交换两者位置
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
//输出排序后的数组
printf("排序后的数组(从小到大):");
for(inti=0;i<8;i++){
printf("%d",arr[i]);
}
printf("\n");
return0;
}运行结果(示例)请输入8个整数(用空格分隔):93571826
排序后的数组(从小到大):12356789三、指针类(核心难点)实例5:使用指针访问数组元素题目要求定义一个整型数组,使用指针遍历数组,输出数组的所有元素,并计算数组元素的总和。核心知识点指针定义、指针与数组的关系(数组名是数组首元素的地址)、指针自增(指向数组下一个元素)。完整代码c
#include<stdio.h>
intmain(){
intarr[5]={10,20,30,40,50};//定义并初始化数组
int*p=arr;//定义指针p,指向数组首元素(arr等价于&arr[0])
intsum=0;
//使用指针遍历数组并计算总和
printf("数组元素:");
for(inti=0;i<5;i++){
printf("%d",*p);//*p表示指针p指向的元素的值
sum+=*p;//累加指针指向的元素
p++;//指针自增,指向数组下一个元素
}
printf("\n数组元素的总和:%d\n",sum);
return0;
}运行结果数组元素:1020304050
数组元素的总和:150实例6:指针作为函数参数(交换两个变量的值)题目要求编写一个函数,使用指针作为参数,交换主函数中两个变量的值,并输出交换前后的值。核心知识点函数定义、指针作为函数参数、地址传递(修改实参的值)、函数调用。完整代码c
#include<stdio.h>
//定义交换函数,参数为两个int类型的指针
voidswap(int*x,int*y){
inttemp;
temp=*x;//保存指针x指向的值
*x=*y;//将指针y指向的值赋给指针x指向的变量
*y=temp;//将保存的值赋给指针y指向的变量
}
intmain(){
inta=5,b=10;
printf("交换前:a=%d,b=%d\n",a,b);
//调用swap函数,传入a和b的地址(&a、&b)
swap(&a,&b);
printf("交换后:a=%d,b=%d\n",a,b);
return0;
}运行结果交换前:a=5,b=10
交换后:a=10,b=5四、函数与递归类(进阶提升)实例7:递归求n的阶乘题目要求编写递归函数,计算并输出n的阶乘(n!=n×(n-1)×...×1,规定0!=1),从键盘输入n的值(n≥0)。核心知识点递归函数定义、递归终止条件(避免死循环)、阶乘的数学逻辑。完整代码c
#include<stdio.h>
//递归函数:计算n的阶乘
intfactorial(intn){
//递归终止条件:n=0或n=1时,阶乘为1
if(n==0||n==1){
return1;
}else{
//递归调用:n!=n×(n-1)!
returnn*factorial(n-1);
}
}
intmain(){
intn;
printf("请输入一个非负整数n:");
scanf("%d",&n);
//判断输入是否合法(n≥0)
if(n<0){
printf("错误:请输入非负整数!\n");
}else{
printf("%d!=%d\n",n,factorial(n));
}
return0;
}运行结果(示例)请输入一个非负整数n:5
5!=120实例8:函数实现素数判断题目要求编写一个判断素数的函数,从键盘输入一个整数,调用函数判断该数是否为素数,并输出判断结果(素数:大于1的正整数,除了1和自身外,不能被其他数整除)。核心知识点函数返回值、素数判断逻辑(遍历2到√n)、函数调用、条件判断。完整代码c
#include<stdio.h>
#include<math.h>//引入数学库,用于使用sqrt函数(求平方根)
//判断素数的函数,返回1表示是素数,返回0表示不是素数
intisPrime(intnum){
//特殊情况:小于等于1的数不是素数
if(num<=1){
return0;
}
//遍历2到sqrt(num),判断是否能整除num
for(inti=2;i<=sqrt(num);i++){
if(num%i==0){//能被整除,不是素数
return0;
}
}
//遍历结束,没有能整除的数,是素数
return1;
}
intmain(){
intnum;
printf("请输入一个整数:");
scanf("%d",&num);
//调用isPrime函数,根据返回值判断并输出结果
if(isPrime(num)){
printf("%d是素数\n",num);
}else{
printf("%d不是素数\n",num);
}
return0;
}运行结果(示例)示例1:请输入一个整数:17
17是素数
示例2:请输入一个整数:18
18不是素数五、结构体类(综合应用)实例9:结构体存储学生信息并输出题目要求定义一个学生结构体(包含学号、姓名、年龄、成绩),输入3个学生的信息,然后遍历输出所有学生的信息。核心知识点结构体定义(struct)、结构体数组、结构体成员访问(.运算符)、遍历结构体数组。完整代码c
#include<stdio.h>
#include<string.h>//用于字符串赋值(strcpy函数)
//定义学生结构体
structStudent{
intid;//学号
charname[20];//姓名(字符串数组)
intage;//年龄
floatscore;//成绩
};
intmain(){
//定义结构体数组,存储3个学生的信息
structStudentstu[3];
//输入3个学生的信息
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 硝苯地平考试题目及答案解析
- 事业单位兽医招聘笔试题及答案分享
- 关于灵芝的试题及精准答案
- 外科护士模拟试题及答案呈现
- 2025-2026学年开原市三年级数学第二学期期末质量跟踪监视试题含答案解析
- 心肺复苏应急相关试题及参考答案
- 医博士关于心悸的题目及答案
- WPS模拟题目2及完整答案
- 小学方程单元测试卷及答案
- 2026公司企业党员个人工作思想报告(3篇)
- 2025年海南三沙市事业单位公开招聘笔试试卷(含完整答案解析)
- 江苏盐城东台市2026年专职网格员招聘考试试卷-含答案解析
- 浙江省杭州市富阳区共同体学校2026-2027学年六上数学期末调研模拟试题含解析
- 2026年公务员遴选本土实务笔试习题及答案
- 2026年1月浙江省选考物理试题(纯答案版)
- 译林版三年级英语下册Unit2 Clean our classroom作业单
- 东方枢纽集团笔试题答案
- k近邻算法课件
- 中国平安IQ测评题库
- 食物与能量的转换
- 中级护士聘任申请书范文
评论
0/150
提交评论