100个常用C语言程序_第1页
100个常用C语言程序_第2页
100个常用C语言程序_第3页
100个常用C语言程序_第4页
100个常用C语言程序_第5页
已阅读5页,还剩24页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

100个常用C语言程序说明:本合集包含100个C语言常用程序,涵盖基础入门、数组操作、指针应用、函数调用、结构体、文件操作、算法入门等核心场景,代码简洁规范、注释清晰,可直接复制运行,适合C语言初学者练习、巩固知识点,也可作为日常开发参考。所有程序均基于标准C语言(C99标准)编写,兼容主流编译器(Dev-C++、VS、GCC等)。一、基础入门程序(1-20个)1.第一个C语言程序(HelloWorld)c

#include<stdio.h>

intmain(){

//输出HelloWorld

printf("HelloWorld!\n");

return0;

}2.输入输出一个整数c

#include<stdio.h>

intmain(){

intnum;

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

scanf("%d",&num);//输入整数

printf("你输入的整数是:%d\n",num);//输出整数

return0;

}3.计算两个整数的和c

#include<stdio.h>

intmain(){

inta,b,sum;

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

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

sum=a+b;

printf("两数之和:%d\n",sum);

return0;

}4.计算两个整数的差、积、商c

#include<stdio.h>

intmain(){

inta,b;

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

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

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

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

if(b!=0){//避免除数为0

printf("商:%d\n",a/b);

}else{

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

}

return0;

}5.输入一个浮点数并输出c

#include<stdio.h>

intmain(){

floatnum;

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

scanf("%f",&num);

printf("你输入的浮点数是:%.2f\n",num);//保留2位小数

return0;

}6.计算圆的面积和周长c

#include<stdio.h>

#definePI3.14159//定义圆周率常量

intmain(){

floatr,area,perimeter;

printf("请输入圆的半径:");

scanf("%f",&r);

area=PI*r*r;//面积公式:πr²

perimeter=2*PI*r;//周长公式:2πr

printf("圆的面积:%.2f\n",area);

printf("圆的周长:%.2f\n",perimeter);

return0;

}7.输入三角形的三边长,计算面积(海伦公式)c

#include<stdio.h>

#include<math.h>//用于sqrt()函数

intmain(){

floata,b,c,s,area;

printf("请输入三角形的三边长(用空格分隔):");

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

//判断是否能构成三角形

if(a+b>c&&a+c>b&&b+c>a){

s=(a+b+c)/2;//半周长

area=sqrt(s*(s-a)*(s-b)*(s-c));//海伦公式

printf("三角形的面积:%.2f\n",area);

}else{

printf("这三条边不能构成三角形!\n");

}

return0;

}8.输入两个数,比较大小并输出较大值c

#include<stdio.h>

intmain(){

inta,b,max;

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

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

//方法1:if-else判断

if(a>b){

max=a;

}else{

max=b;

}

//方法2:三目运算符(简洁写法)

//max=a>b?a:b;

printf("较大的数是:%d\n",max);

return0;

}9.输入三个数,排序并输出(从小到大)c

#include<stdio.h>

intmain(){

inta,b,c,temp;

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

scanf("%d%d%d",&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;

}10.判断一个整数是奇数还是偶数c

#include<stdio.h>

intmain(){

intnum;

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

scanf("%d",&num);

if(num%2==0){

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

}else{

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

}

return0;

}11.判断一个整数是否为正数、负数或零c

#include<stdio.h>

intmain(){

intnum;

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

scanf("%d",&num);

if(num>0){

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

}elseif(num<0){

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

}else{

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

}

return0;

}12.输入一个年份,判断是否为闰年c

#include<stdio.h>

intmain(){

intyear;

printf("请输入一个年份:");

scanf("%d",&year);

//闰年判断条件:能被4整除但不能被100整除,或能被400整除

if((year%4==0&&year%100!=0)||(year%400==0)){

printf("%d是闰年\n",year);

}else{

printf("%d不是闰年\n",year);

}

return0;

}13.输入一个月份,判断对应的季节c

#include<stdio.h>

intmain(){

intmonth;

printf("请输入月份(1-12):");

scanf("%d",&month);

switch(month){

case3:

case4:

case5:

printf("春季\n");

break;

case6:

case7:

case8:

printf("夏季\n");

break;

case9:

case10:

case11:

printf("秋季\n");

break;

case12:

case1:

case2:

printf("冬季\n");

break;

default:

printf("输入的月份无效!\n");

}

return0;

}14.简单计算器(实现加减乘除)c

#include<stdio.h>

intmain(){

floata,b;

charop;

printf("请输入表达式(格式:aopb,如3+5):");

scanf("%f%c%f",&a,&op,&b);

switch(op){

case'+':

printf("%.2f+%.2f=%.2f\n",a,b,a+b);

break;

case'-':

printf("%.2f-%.2f=%.2f\n",a,b,a-b);

break;

case'*':

printf("%.2f*%.2f=%.2f\n",a,b,a*b);

break;

case'/':

if(b!=0){

printf("%.2f/%.2f=%.2f\n",a,b,a/b);

}else{

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

}

break;

default:

printf("输入的运算符无效!\n");

}

return0;

}15.输出1到10的整数c

#include<stdio.h>

intmain(){

inti;

//for循环实现

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

printf("%d",i);

}

printf("\n");

return0;

}16.输出1到100的偶数c

#include<stdio.h>

intmain(){

inti;

printf("1到100的偶数:\n");

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

printf("%d",i);

if(i%10==0){//每10个换行

printf("\n");

}

}

return0;

}17.输出1到100的奇数c

#include<stdio.h>

intmain(){

inti;

printf("1到100的奇数:\n");

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

printf("%d",i);

if((i+1)%10==0){//每10个换行

printf("\n");

}

}

return0;

}18.计算1到100的总和c

#include<stdio.h>

intmain(){

inti,sum=0;

//for循环实现

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

sum+=i;

}

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

//公式法验证:sum=n*(n+1)/2

printf("公式法计算:%d\n",100*101/2);

return0;

}19.计算1到10的阶乘(n!=1×2×3×…×n)c

#include<stdio.h>

intmain(){

inti,n=10,factorial=1;

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

factorial*=i;

}

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

return0;

}20.输入一个正整数,计算其阶乘c

#include<stdio.h>

intmain(){

intn,i,factorial=1;

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

scanf("%d",&n);

if(n<0){

printf("请输入正整数!\n");

}else{

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

factorial*=i;

}

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

}

return0;

}二、数组操作程序(21-40个)21.定义一个整型数组,存储5个元素并输出c

#include<stdio.h>

intmain(){

//方法1:直接初始化

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

//方法2:部分初始化,未初始化元素默认为0

//intarr[5]={1,2};

printf("数组元素:");

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

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

}

printf("\n");

return0;

}22.输入5个整数,存入数组并输出c

#include<stdio.h>

intmain(){

intarr[5];

inti;

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

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

scanf("%d",&arr[i]);//给数组元素赋值

}

printf("你输入的数组元素:");

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

printf("%d",arr[i]);//输出数组元素

}

printf("\n");

return0;

}23.计算数组中所有元素的和c

#include<stdio.h>

intmain(){

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

intsum=0,i;

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

sum+=arr[i];

}

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

return0;

}24.查找数组中的最大值c

#include<stdio.h>

intmain(){

intarr[5]={15,28,7,46,32};

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

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

if(arr[i]>max){

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

}

}

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

return0;

}25.查找数组中的最小值c

#include<stdio.h>

intmain(){

intarr[5]={15,28,7,46,32};

intmin=arr[0],i;//假设第一个元素是最小值

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

if(arr[i]<min){

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

}

}

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

return0;

}26.查找数组中指定元素的下标(若不存在,提示未找到)c

#include<stdio.h>

intmain(){

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

inttarget,i,index=-1;//index初始化为-1,表示未找到

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

scanf("%d",&target);

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

if(arr[i]==target){

index=i;

break;//找到后退出循环

}

}

if(index!=-1){

printf("元素%d的下标是:%d\n",target,index);

}else{

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

}

return0;

}27.对数组进行冒泡排序(从小到大)c

#include<stdio.h>

intmain(){

intarr[5]={35,12,48,5,27};

inti,j,temp;

intn=5;//数组长度

//冒泡排序核心逻辑:两两比较,交换位置

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

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

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

//交换两个元素

temp=arr[j];

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

arr[j+1]=temp;

}

}

}

printf("冒泡排序后(从小到大):");

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

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

}

printf("\n");

return0;

}28.对数组进行冒泡排序(从大到小)c

#include<stdio.h>

intmain(){

intarr[5]={35,12,48,5,27};

inti,j,temp;

intn=5;

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

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

if(arr[j]<arr[j+1]){//只需修改判断条件

temp=arr[j];

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

arr[j+1]=temp;

}

}

}

printf("冒泡排序后(从大到小):");

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

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

}

printf("\n");

return0;

}29.对数组进行选择排序(从小到大)c

#include<stdio.h>

intmain(){

intarr[5]={35,12,48,5,27};

inti,j,temp,minIndex;

intn=5;

//选择排序核心逻辑:每轮找到最小值,与当前位置交换

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

minIndex=i;//假设当前位置是最小值下标

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

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

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

}

}

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

temp=arr[i];

arr[i]=arr[minIndex];

arr[minIndex]=temp;

}

printf("选择排序后(从小到大):");

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

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

}

printf("\n");

return0;

}30.数组元素逆序输出(不修改原数组)c

#include<stdio.h>

intmain(){

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

inti,n=5;

printf("原数组:");

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

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

}

printf("\n逆序输出:");

for(i=n-1;i>=0;i--){

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

}

printf("\n");

return0;

}31.数组元素逆序存放(修改原数组)c

#include<stdio.h>

intmain(){

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

inti,j,temp,n=5;

printf("原数组:");

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

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

}

//逆序存放:首尾元素交换

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

temp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

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

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

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

}

printf("\n");

return0;

}32.向数组中插入一个元素(指定位置)c

#include<stdio.h>

intmain(){

intarr[6]={10,20,30,40,50};//预留一个位置插入

intn=5;//原数组长度

intinsertNum,insertIndex,i;

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

scanf("%d",&insertNum);

printf("请输入要插入的位置(0-%d):",n);

scanf("%d",&insertIndex);

//判断插入位置是否合法

if(insertIndex<0||insertIndex>n){

printf("插入位置无效!\n");

return0;

}

//元素后移,腾出插入位置

for(i=n;i>insertIndex;i--){

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

}

//插入元素

arr[insertIndex]=insertNum;

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

//输出插入后的数组

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

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

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

}

printf("\n");

return0;

}33.从数组中删除一个指定元素(删除第一个匹配项)c

#include<stdio.h>

intmain(){

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

intn=5;

intdeleteNum,i,j,flag=0;//flag标记是否找到要删除的元素

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

scanf("%d",&deleteNum);

//查找要删除的元素

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

if(arr[i]==deleteNum){

flag=1;

//元素前移,覆盖要删除的元素

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

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

}

n--;//数组长度减1

break;

}

}

if(flag){

printf("删除后的数组:");

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

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

}

printf("\n");

}else{

printf("未找到要删除的元素!\n");

}

return0;

}34.计算数组中元素的平均值c

#include<stdio.h>

intmain(){

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

intsum=0,i,n=5;

floatavg;

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

sum+=arr[i];

}

avg=(float)sum/n;//强制转换为浮点数,避免整数除法

printf("数组元素的平均值:%.2f\n",avg);

return0;

}35.统计数组中偶数和奇数的个数c

#include<stdio.h>

intmain(){

intarr[5]={10,15,22,37,40};

intevenCount=0,oddCount=0,i,n=5;

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

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

evenCount++;//偶数计数

}else{

oddCount++;//奇数计数

}

}

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

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

return0;

}36.定义一个字符数组,存储字符串并输出c

#include<stdio.h>

intmain(){

//方法1:直接初始化

charstr[20]="HelloCLanguage";

//方法2:逐个字符初始化

//charstr[20]={'H','e','l','l','o','','C','','L','a','n','g','u','a','g','e','\0'};

printf("字符串:%s\n",str);

return0;

}37.输入一个字符串并输出c

#include<stdio.h>

intmain(){

charstr[20];

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

scanf("%s",str);//输入字符串(不包含空格)

//若要输入包含空格的字符串,使用gets()或fgets()

//fgets(str,20,stdin);

printf("你输入的字符串:%s\n",str);

return0;

}38.计算字符串的长度(不使用strlen函数)c

#include<stdio.h>

intmain(){

charstr[20]="HelloC";

intlen=0,i;

//字符串以'\0'结尾,遍历到'\0'停止

while(str[i]!='\0'){

len++;

i++;

}

printf("字符串\"%s\"的长度:%d\n",str,len);

return0;

}39.计算字符串的长度(使用strlen函数)c

#include<stdio.h>

#include<string.h>//包含strlen函数的头文件

intmain(){

charstr[20]="HelloCLanguage";

intlen=strlen(str);//strlen()返回字符串长度(不含'\0')

printf("字符串\"%s\"的长度:%d\n",str,len);

return0;

}40.字符串拼接(不使用strcat函数)c

#include<stdio.h>

intmain(){

charstr1[50]="Hello";

charstr2[20]="CLanguage";

inti=0,j=0;

//先找到str1的结尾('\0')

while(str1[i]!='\0'){

i++;

}

//将str2的字符逐个拼接到str1后面

while(str2[j]!='\0'){

str1[i]=str2[j];

i++;

j++;

}

str1[i]='\0';//拼接后添加字符串结束符

printf("拼接后的字符串:%s\n",str1);

return0;

}三、指针应用程序(41-55个)41.用指针访问整型变量c

#include<stdio.h>

intmain(){

intnum=100;

int*p=#//定义指针p,指向num的地址

printf("num的值:%d\n",num);

printf("num的地址:%p\n",&num);

printf("指针p的值(num的地址):%p\n",p);

printf("指针p指向的值(*p):%d\n",*p);

//通过指针修改num的值

*p=200;

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

return0;

}42.用指针访问数组元素c

#include<stdio.h>

intmain(){

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

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

inti,n=5;

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

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

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

}

printf("\n");

return0;

}43.用指针修改数组元素的值c

#include<stdio.h>

intmain(){

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

int*p=arr;

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

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

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

}

//通过指针修改数组元素

*(p+2)=300;//修改arr[2]的值为300

*(p+4)=500;//修改arr[4]的值为500

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

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

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

}

printf("\n");

return0;

}44.用指针计算数组元素的和c

#include<stdio.h>

intmain(){

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

int*p=arr;

intsum=0,i,n=5;

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

sum+=*(p+i);

}

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

return0;

}45.用指针查找数组中的最大值c

#include<stdio.h>

intmain(){

intarr[5]={15,28,7,46,32};

int*p=arr;

intmax=*p,i,n=5;

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

if(*(p+i)>max){

max=*(p+i);

}

}

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

return0;

}46.用指针实现数组逆序c

#include<stdio.h>

intmain(){

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

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

int*q=arr+4;//指向数组尾元素

inttemp,n=5;

printf("原数组:");

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

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

}

//指针交换首尾元素

while(p<q){

temp=*p;

*p=*q;

*q=temp;

p++;

q--;

}

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

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

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

}

printf("\n");

return0;

}47.指针作为函数参数(修改实参的值)c

#include<stdio.h>

//函数:通过指针修改实参的值

voidswap(int*a,int*b){

inttemp=*a;

*a=*b;

*b=temp;

}

intmain(){

intx=10,y=20;

printf("交换前:x=%d,y=%d\n",x,y);

swap(&x,&y);//传递x和y的地址

printf("交换后:x=%d,y=%d\n",x,y);

return0;

}48.指针作为函数参数(传递数组)c

#include<stdio.h>

//函数:通过指针打印数组

voidprintArray(int*p,intn){

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

printf("%d",*(p+i));

}

printf("\n");

}

intmain(){

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

printf("数组元素:");

printArray(arr,5);//传递数组首地址和长度

return0;

}49.用指针函数返回数组元素的地址c

#include<stdio.h>

//指针函数:返回数组中最大值的地址

int*findMax(int*p,intn){

int*maxP=p;//假设首元素是最大值,指向首元素

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

if(*(p+i)>*maxP){

maxP=p+i;//更新最大值的地址

}

}

returnmaxP;

}

intmain(){

intarr[5]={15,28,7,46,32};

int*maxP=findMax(arr,5);

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

printf("最大值的地址:%p\n",maxP);

return0;

}50.二级指针的基本使用c

#include<stdio.h>

intmain(){

intnum=100;

int*p=#//一级指针,指向num

int**pp=&p;//二级指针,指向一级指针p

printf("num的值:%d\n",num);

printf("*p的值(num):%d\n",*p);

printf("**pp的值(num):%d\n",**pp);

printf("p的地址:%p\n",&p);

printf("pp的值(p的地址):%p\n",pp);

return0;

}51.用指针操作字符数组(输出字符串)c

#include<stdio.h>

intmain(){

charstr[20]="HelloC";

char*p=str;//指针指向字符串首地址

printf("用指针输出字符串:");

//遍历字符串,直到'\0'停止

while(*p!='\0'){

printf("%c",*p);

p++;//指针移动到下一个字符

}

printf("\n");

return0;

}52.用指针实现字符串复制(不使用strcpy函数)c

#include<stdio.h>

intmain(){

charstr1[50],str2[20]="HelloCLanguage";

char*p1=str1,*p2=str2;

//将str2的字符复制到str1

while(*p2!='\0'){

*p1=*p2;

p1++;

p2++;

}

*p1='\0';//复制结束符

printf("str1:%s\n",str1);

printf("str2:%s\n",str2);

return0;

}53.用指针比较两个字符串的大小(不使用strcmp函数)c

#include<stdio.h>

intcompareStr(char*p1,char*p2){

while(*p1!='\0'&&*p2!='\0'){

if(*p1!=*p2){

return*p1-*p2;//不相等,返回差值

}

p1++;

p2++;

}

//一个字符串结束,比较长度

return*p1-*p2;

}

intmain(){

charstr1[20]="Hello";

charstr2[20]="Hello";

intres=compareStr(str1,str2);

if(res==0){

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

}elseif(res>0){

printf("str1>str2\n")

温馨提示

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

评论

0/150

提交评论