C语言程序100题(完整版)_第1页
C语言程序100题(完整版)_第2页
C语言程序100题(完整版)_第3页
C语言程序100题(完整版)_第4页
C语言程序100题(完整版)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序100题(完整版)本文整理C语言程序设计100题,涵盖基础语法、数组、指针、函数、结构体、文件操作、链表等核心知识点,从入门到高阶层层递进,每道题均包含完整代码、详细注释及功能说明。所有案例均经过调试可正常运行,注重实用性和易懂性,兼顾初学者巩固基础与进阶者提升能力,助力快速掌握C语言编程技巧、提升问题解决能力。第一部分基础入门篇(1-20题)本部分聚焦C语言基础语法,包括变量、常量、运算符、条件判断、循环结构等,帮助初学者快速上手C语言编程,掌握基本编程逻辑。题1:输出"HelloWorld!"功能:最基础的C语言程序,实现屏幕输出指定字符串,熟悉C语言程序的基本结构。c

#include<stdio.h>

intmain(){

//输出HelloWorld!,printf为C语言格式化输出函数

printf("HelloWorld!\n");

return0;//程序正常结束,返回0

}说明:#include<stdio.h>引入标准输入输出头文件,main()函数是C程序的入口,printf()用于输出内容,\n表示换行。题2:计算两个整数的和功能:从键盘输入两个整数,计算并输出它们的和,熟悉变量定义、输入函数scanf()的使用。c

#include<stdio.h>

intmain(){

inta,b,sum;//定义三个整型变量,a、b存储输入的整数,sum存储和

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

scanf("%d%d",&a,&b);//从键盘输入两个整数,&表示取变量地址

sum=a+b;//计算两个数的和

printf("两个数的和为:%d\n",sum);//输出结果,%d表示输出整型数据

return0;

}题3:判断一个数是否为偶数功能:输入一个整数,判断其是否为偶数,熟悉if-else条件判断语句和取余运算符%的使用。c

#include<stdio.h>

intmain(){

intnum;

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

scanf("%d",&num);

//偶数能被2整除,取余结果为0;否则为奇数

if(num%2==0){

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

}else{

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

}

return0;

}题4:求三个整数中的最大值功能:输入三个整数,找出其中的最大值,熟悉多条件判断和逻辑运算符的使用。c

#include<stdio.h>

intmain(){

inta,b,c,max;

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

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

//先比较a和b,将较大值赋给max,再比较max和c

max=a>b?a:b;//三目运算符,等价于if(a>b)max=a;elsemax=b;

max=max>c?max:c;

printf("三个数中的最大值为:%d\n",max);

return0;

}题5:计算1到10的累加和功能:使用for循环计算1+2+...+10的和,熟悉for循环的基本用法。c

#include<stdio.h>

intmain(){

inti,sum=0;//sum初始化为0,避免随机值影响结果

//for循环三要素:初始化i=1,循环条件i<=10,循环后i自增1

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

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

}

printf("1到10的累加和为:%d\n",sum);

return0;

}题6:使用while循环求1到n的累加和功能:输入一个正整数n,使用while循环计算1到n的累加和,对比for循环与while循环的用法。c

#include<stdio.h>

intmain(){

intn,i=1,sum=0;

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

scanf("%d",&n);

//while循环:先判断条件,条件成立则执行循环体

while(i<=n){

sum+=i;

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

}

printf("1到%d的累加和为:%d\n",n,sum);

return0;

}题7:使用do-while循环输出1到10功能:使用do-while循环输出1到10的数字,熟悉do-while循环“先执行、后判断”的特点。c

#include<stdio.h>

intmain(){

inti=1;

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

do{

printf("%d",i);

i++;

}while(i<=10);

printf("\n");

return0;

}题8:计算一个数的阶乘功能:输入一个正整数n,计算n的阶乘(n!=1×2×3×...×n),熟悉循环与乘法运算的结合。c

#include<stdio.h>

intmain(){

intn,i;

longlongfactorial=1;//阶乘结果可能很大,用longlong类型避免溢出

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

scanf("%d",&n);

//处理异常情况:n为负数时提示错误

if(n<0){

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

return1;//程序异常结束,返回非0值

}

for(i=1;i<=n;i++){

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

}

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

return0;

}题9:输出100以内的所有奇数功能:使用循环输出100以内的所有奇数,熟悉循环与条件判断的结合使用。c

#include<stdio.h>

intmain(){

inti;

printf("100以内的所有奇数:\n");

for(i=1;i<=100;i+=2){//i从1开始,每次加2,直接获取奇数

printf("%d",i);

//每输出10个奇数换行,提升可读性

if(i%10==9){

printf("\n");

}

}

return0;

}题10:判断一个数是否为素数功能:输入一个正整数,判断其是否为素数(只能被1和自身整除的大于1的整数),熟悉循环与条件判断的进阶用法。c

#include<stdio.h>

intmain(){

intnum,i,flag=1;//flag为标志位,1表示素数,0表示非素数

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

scanf("%d",&num);

//素数判断逻辑:大于1,且不能被2到sqrt(num)之间的任何数整除

if(num<=1){

flag=0;//1及以下的数不是素数

}else{

for(i=2;i*i<=num;i++){//优化:只需判断到sqrt(num)

if(num%i==0){

flag=0;

break;//找到一个除数,直接退出循环,无需继续判断

}

}

}

if(flag==1){

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

}else{

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

}

return0;

}题11:输出100以内的所有素数功能:结合素数判断逻辑,输出100以内的所有素数,熟悉循环嵌套的使用。c

#include<stdio.h>

intmain(){

intnum,i,flag;

printf("100以内的所有素数:\n");

//外层循环遍历100以内的所有整数

for(num=2;num<=100;num++){

flag=1;//初始化标志位为1(默认是素数)

//内层循环判断当前num是否为素数

for(i=2;i*i<=num;i++){

if(num%i==0){

flag=0;

break;

}

}

if(flag==1){

printf("%d",num);

}

}

printf("\n");

return0;

}题12:将输入的整数逆序输出功能:输入一个整数,将其逆序输出(如输入123,输出321),熟悉取余和整除运算的结合。c

#include<stdio.h>

intmain(){

intnum,reverse=0,remainder;

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

scanf("%d",&num);

//逆序逻辑:每次取最后一位数字,拼接到reverse中

while(num!=0){

remainder=num%10;//取最后一位数字

reverse=reverse*10+remainder;//拼接数字

num=num/10;//去掉最后一位数字

}

printf("逆序后的数字为:%d\n",reverse);

return0;

}题13:计算两个数的最大公约数功能:输入两个正整数,使用辗转相除法计算它们的最大公约数,熟悉循环与取余运算的实际应用。c

#include<stdio.h>

intmain(){

inta,b,temp;

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

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

//辗转相除法:a=b*q+r,直到r=0,此时b为最大公约数

while(b!=0){

temp=a%b;//取余数r

a=b;//将b赋值给a

b=temp;//将余数r赋值给b

}

printf("两个数的最大公约数为:%d\n",a);

return0;

}题14:计算两个数的最小公倍数功能:输入两个正整数,利用最大公约数计算最小公倍数(最小公倍数=两数乘积/最大公约数)。c

#include<stdio.h>

intmain(){

inta,b,temp,gcd,lcm;

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

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

//先计算最大公约数

intx=a,y=b;//保存原始值,用于后续计算最小公倍数

while(y!=0){

temp=x%y;

x=y;

y=temp;

}

gcd=x;//x即为最大公约数

lcm=(a*b)/gcd;//计算最小公倍数

printf("两个数的最小公倍数为:%d\n",lcm);

return0;

}题15:使用switch语句判断成绩等级功能:输入学生成绩(0-100),使用switch语句判断成绩等级(90-100为A,80-89为B,70-79为C,60-69为D,60以下为E)。c

#include<stdio.h>

intmain(){

intscore;

printf("请输入学生成绩(0-100):");

scanf("%d",&score);

//处理成绩异常情况

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

printf("输入错误!成绩应在0-100之间。\n");

return1;

}

//switch语句:根据score/10的值判断等级

switch(score/10){

case10:

case9:printf("成绩等级:A\n");break;//90-100对应A

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

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

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

default:printf("成绩等级:E\n");break;//60以下对应E

}

return0;

}题16:输出斐波那契数列的前n项功能:输入一个正整数n,输出斐波那契数列的前n项(斐波那契数列:1,1,2,3,5,8...,从第三项开始,每一项等于前两项之和)。c

#include<stdio.h>

intmain(){

intn,i,a=1,b=1,c;

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

scanf("%d",&n);

if(n<=0){

printf("输入错误!n应为正整数。\n");

return1;

}

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

for(i=1;i<=n;i++){

printf("%d",a);

c=a+b;//计算下一项

a=b;//更新a为前一项的后一项

b=c;//更新b为新计算的项

}

printf("\n");

return0;

}题17:计算一个数的绝对值功能:输入一个整数,计算并输出它的绝对值,熟悉条件判断和数学运算。c

#include<stdio.h>

intmain(){

intnum,abs_num;

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

scanf("%d",&num);

//绝对值逻辑:正数和0的绝对值是自身,负数的绝对值是其相反数

if(num<0){

abs_num=-num;

}else{

abs_num=num;

}

printf("%d的绝对值为:%d\n",num,abs_num);

return0;

}题18:使用循环打印等腰三角形功能:输入三角形的行数,使用循环打印等腰三角形(由*组成),熟悉循环嵌套和格式控制。c

#include<stdio.h>

intmain(){

intn,i,j,k;

printf("请输入等腰三角形的行数:");

scanf("%d",&n);

//外层循环控制行数

for(i=1;i<=n;i++){

//内层循环1:打印空格,控制三角形的缩进

for(j=1;j<=n-i;j++){

printf("");

}

//内层循环2:打印*,控制每一行的*数量

for(k=1;k<=2*i-1;k++){

printf("*");

}

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

}

return0;

}题19:输入三个数,按从小到大的顺序输出功能:输入三个整数,将它们按从小到大的顺序排列并输出,熟悉多条件判断和变量交换。c

#include<stdio.h>

intmain(){

inta,b,c,temp;

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

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

//交换逻辑:确保a<=b<=c

if(a>b){

temp=a;

a=b;

b=temp;

}

if(a>c){

temp=a;

a=c;

c=temp;

}

if(b>c){

temp=b;

b=c;

c=temp;

}

printf("从小到大的顺序为:%d%d%d\n",a,b,c);

return0;

}题20:计算1到n的平方和功能:输入一个正整数n,计算1²+2²+...+n²的和,熟悉循环与平方运算的结合。c

#include<stdio.h>

intmain(){

intn,i;

longlongsum=0;//平方和可能较大,用longlong类型

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

scanf("%d",&n);

for(i=1;i<=n;i++){

sum+=i*i;//累加每个数的平方

}

printf("1到%d的平方和为:%lld\n",n,sum);

return0;

}第二部分进阶提升篇(21-60题)本部分聚焦C语言进阶知识点,包括数组、指针、函数、结构体、枚举等,提升编程逻辑性和灵活性,解决更复杂的编程问题。题21:定义一个整型数组,求数组元素的最大值和最小值功能:定义一个包含10个整型元素的数组,初始化或从键盘输入元素,找出数组中的最大值和最小值。c

#include<stdio.h>

intmain(){

intarr[10];//定义一个包含10个元素的整型数组

inti,max,min;

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

//从键盘输入10个元素,存入数组

for(i=0;i<10;i++){

scanf("%d",&arr[i]);

}

//初始化max和min为数组的第一个元素

max=arr[0];

min=arr[0];

//遍历数组,更新max和min

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

if(arr[i]>max){

max=arr[i];

}

if(arr[i]<min){

min=arr[i];

}

}

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

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

return0;

}题22:计算数组元素的平均值功能:定义一个整型数组,计算数组所有元素的平均值(保留2位小数),熟悉数组遍历和浮点运算。c

#include<stdio.h>

intmain(){

intarr[5]={10,20,30,40,50};//初始化数组

inti,sum=0;

floatavg;//平均值可能为小数,用float类型

//遍历数组,计算元素总和

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

sum+=arr[i];

}

avg=(float)sum/5;//强制转换为float类型,避免整数除法

printf("数组元素的平均值为:%.2f\n",avg);//%.2f表示保留2位小数

return0;

}题23:将数组元素逆序存放功能:定义一个数组,将数组元素逆序存放(如原数组[1,2,3,4,5],逆序后[5,4,3,2,1]),熟悉数组操作和元素交换。c

#include<stdio.h>

intmain(){

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

inti,temp,len=5;

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

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

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

}

//逆序逻辑:首尾元素交换,依次向中间靠拢

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

temp=arr[i];

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

arr[len-1-i]=temp;

}

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

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

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

}

printf("\n");

return0;

}题24:统计数组中偶数和奇数的个数功能:输入一个整型数组,统计数组中偶数和奇数的个数,熟悉数组遍历和条件判断的结合。c

#include<stdio.h>

intmain(){

intarr[8],i,even=0,odd=0;//even统计偶数个数,odd统计奇数个数

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

for(i=0;i<8;i++){

scanf("%d",&arr[i]);

}

//遍历数组,判断每个元素是偶数还是奇数

for(i=0;i<8;i++){

if(arr[i]%2==0){

even++;

}else{

odd++;

}

}

printf("数组中偶数的个数:%d\n",even);

printf("数组中奇数的个数:%d\n",odd);

return0;

}题25:查找数组中指定元素的位置功能:输入一个整型数组和一个指定元素,查找该元素在数组中的位置(若有多个,输出第一个出现的位置),熟悉数组遍历和查找逻辑。c

#include<stdio.h>

intmain(){

intarr[10],i,target,index=-1;//index存储元素位置,初始化为-1(表示未找到)

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

for(i=0;i<10;i++){

scanf("%d",&arr[i]);

}

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

scanf("%d",&target);

//遍历数组,查找目标元素

for(i=0;i<10;i++){

if(arr[i]==target){

index=i;

break;//找到第一个匹配元素,退出循环

}

}

if(index!=-1){

printf("元素%d在数组中的位置为:第%d个(下标为%d)\n",target,index+1,index);

}else{

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

}

return0;

}题26:对数组元素进行升序排序(冒泡排序)功能:使用冒泡排序算法,对整型数组进行升序排序,熟悉冒泡排序的核心逻辑和循环嵌套。c

#include<stdio.h>

intmain(){

intarr[6]={5,2,9,1,5,6};

inti,j,temp,len=6;

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

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

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

}

//冒泡排序核心逻辑:两两比较,将较大的元素逐步“冒泡”到数组末尾

for(i=0;i<len-1;i++){//外层循环控制排序轮数

for(j=0;j<len-1-i;j++){//内层循环控制每轮比较次数

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

//交换两个元素

temp=arr[j];

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

arr[j+1]=temp;

}

}

}

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

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

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

}

printf("\n");

return0;

}题27:对数组元素进行降序排序(选择排序)功能:使用选择排序算法,对整型数组进行降序排序,熟悉选择排序的核心逻辑。c

#include<stdio.h>

intmain(){

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

inti,j,temp,max_index,len=7;

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

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

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

}

//选择排序核心逻辑:每轮找出最大值的下标,与当前轮次的起始位置交换

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

max_index=i;//假设当前轮次起始位置的元素是最大值

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

if(arr[j]>arr[max_index]){

max_index=j;//更新最大值下标

}

}

//交换当前起始位置元素和最大值元素

temp=arr[i];

arr[i]=arr[max_index];

arr[max_index]=temp;

}

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

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

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

}

printf("\n");

return0;

}题28:求数组元素的总和与乘积功能:输入一个整型数组,计算数组所有元素的总和与乘积,熟悉数组遍历和算术运算。c

#include<stdio.h>

intmain(){

intarr[5],i;

longlongsum=0,product=1;//乘积可能很大,用longlong类型

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

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

scanf("%d",&arr[i]);

sum+=arr[i];//累加求和

product*=arr[i];//累乘求积

}

printf("数组元素的总和:%lld\n",sum);

printf("数组元素的乘积:%lld\n",product);

return0;

}题29:删除数组中指定元素功能:输入一个整型数组和一个指定元素,删除数组中所有该元素(若存在),并输出删除后的数组,熟悉数组元素的删除逻辑。c

#include<stdio.h>

intmain(){

intarr[10]={2,5,2,7,2,9,3,2,1,2};

inti,j,target,len=10;

printf("原数组:");

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

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

}

printf("\n请输入要删除的元素:");

scanf("%d",&target);

//删除逻辑:遍历数组,将不等于目标元素的元素保留,覆盖原数组

j=0;

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

if(arr[i]!=target){

arr[j]=arr[i];

j++;

}

}

printf("删除元素%d后的数组:",target);

for(i=0;i<j;i++){

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

}

printf("\n");

return0;

}题30:向数组中插入指定元素功能:输入一个已升序排序的整型数组、一个指定元素和插入位置,将元素插入到指定位置,保持数组升序,熟悉数组元素的插入逻辑。c

#include<stdio.h>

intmain(){

intarr[11]={1,3,5,7,9,11,13,15,17,19};//预留一个位置用于插入

inti,pos,target,len=10;

printf("原升序数组:");

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

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

}

printf("\n请输入要插入的元素:");

scanf("%d",&target);

printf("请输入插入位置(1-%d):",len+1);

scanf("%d",&pos);

pos--;//转换为数组下标(从0开始)

//插入逻辑:从插入位置后移所有元素,腾出位置插入目标元素

for(i=len;i>pos;i--){

arr[i]=arr[i-1];

}

arr[pos]=target;

len++;//数组长度加1

printf("插入后的数组:");

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

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

}

printf("\n");

return0;

}题31:使用指针访问数组元素功能:定义一个整型数组,使用指针遍历数组并输出所有元素,熟悉指针与数组的关联关系。c

#include<stdio.h>

intmain(){

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

int*p,i,len=5;

p=arr;//指针p指向数组首元素(等价于p=&arr[0])

printf("使用指针访问数组元素:");

//方式1:通过指针偏移访问

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

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

}

printf("\n");

//方式2:通过指针自增访问

printf("使用指针自增访问数组元素:");

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

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

printf("%d",*p);

p++;//指针自增,指向next元素

}

printf("\n");

return0;

}题32:使用指针求数组的最大值和最小值功能:使用指针遍历数组,找出数组中的最大值和最小值,熟悉指针操作与数组遍历的结合。c

#include<stdio.h>

intmain(){

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

int*p,max,min,len=8;

p=arr;//指针指向数组首元素

max=*p;

min=*p;

//指针遍历数组,更新max和min

for(p=arr+1;p<arr+len;p++){

if(*p>max){

max=*p;

}

if(*p<min){

min=*p;

}

}

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

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

return0;

}题33:使用指针实现数组逆序功能:使用指针操作,将数组元素逆序存放,熟悉指针的偏移和元素交换。c

#include<stdio.h>

intmain(){

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

int*p1,*p2,temp,len=6;

p1=arr;//指针p1指向数组首元素

p2=arr+len-1;//指针p2指向数组尾元素

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

for(p1=arr;p1<=p2;p1++){

printf("%d",*p1);

}

//逆序逻辑:首尾指针交换元素,逐步向中间靠拢

p1=arr;

while(p1<p2){

temp=*p1;

*p1=*p2;

*p2=temp;

p1++;

p2--;

}

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

for(p1=arr;p1<arr+len;p1++){

printf("%d",*p1);

}

printf("\n");

return0;

}题34:定义一个函数,求两个整数的和功能:定义一个自定义函数,接收两个整数参数,返回它们的和,熟悉函数的定义、声明和调用。c

#include<stdio.h>

//函数声明:告诉编译器函数的返回值类型、函数名和参数列表

intadd(inta,intb);

intmain(){

intx,y,sum;

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

scanf("%d%d",&x,&y);

sum=add(x,y);//调用add函数,传入参数x和y,接收返回值

printf("两个数的和为:%d\n",sum);

return0;

}

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

intadd(inta,intb){

returna+b;//返回两个参数的和

}题35:定义一个函数,判断一个数是否为素数功能:定义一个自定义函数,接收一个整数参数,返回1(素数)或0(非素数),熟悉函数的返回值和条件判断。c

#include<stdio.h>

//函数声明:判断一个数是否为素数,返回1(是)或0(否)

intisPrime(intnum);

intmain(){

intnum;

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

scanf("%d",&num);

if(isPrime(num)==1){

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

}else{

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

}

return0;

}

//函数定义:素数判断逻辑

intisPrime(intnum){

inti;

if(num<=1){

return0;//1及以下不是素数

}

for(i=2;i*i<=num;i++){

if(num%i==0){

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

}

}

return1;//不能被整除,是素数

}题36:定义一个函数,计算一个数的阶乘功能:定义一个自定义函数,接收一个正整数参数,返回其阶乘,熟悉函数的递归调用(或循环实现)。c

#include<stdio.h>

//函数声明:计算n的阶乘,返回longlong类型(避免溢出)

longlongfactorial(intn);

intmain(){

intn;

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

scanf("%d",&n);

if(n<0){

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

return1;

}

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

return0;

}

//函数定义:使用递归实现阶乘(n!=n*(n-1)!)

longlongfactorial(intn){

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

return1;//递归终止条件:0!和1!都等于1

}

returnn*factorial(n-1);//递归调用

}题37:使用函数实现数组排序功能:定义一个排序函数,接收数组和数组长度作为参数,对数组进行升序排序,熟悉函数与数组的结合使用。c

#include<stdio.h>

//函数声明:对整型数组进行升序排序(冒泡排序)

voidbubbleSort(intarr[],intlen);

//函数声明:打印数组元素

voidprintArray(intarr[],intlen);

intmain(){

intarr[7]={6,2,8,1,9,3,7};

intlen=7;

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

printArray(arr,len);

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

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

printArray(arr,len);

return0;

}

//函数定义:冒泡排序

voidbubbleSort(intarr[],intlen){

inti,j,temp;

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

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

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

temp=arr[j];

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

arr[j+1]=temp;

}

}

}

}

//函数定义:打印数组

voidpri

温馨提示

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

评论

0/150

提交评论