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

下载本文档

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

文档简介

100个经典C语言程序一、基础语法类(1-20)1.第一个C语言程序(HelloWorld)c

#include<stdio.h>

intmain(){

//输出HelloWorld

printf("HelloWorld!\n");

return0;

}2.输出个人信息c

#include<stdio.h>

intmain(){

printf("姓名:XXX\n");

printf("性别:XXX\n");

printf("年龄:XX\n");

printf("专业:C语言学习\n");

return0;

}3.定义并输出基本数据类型c

#include<stdio.h>

intmain(){

inta=10;//整型

floatb=3.14f;//单精度浮点型

doublec=3.14159;//双精度浮点型

chard='A';//字符型

printf("整型a:%d\n",a);

printf("单精度浮点型b:%f\n",b);

printf("双精度浮点型c:%lf\n",c);

printf("字符型d:%c\n",d);

return0;

}4.输入两个整数并输出其和c

#include<stdio.h>

intmain(){

inta,b,sum;

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

scanf("%d%d",&a,&b);//输入两个整数

sum=a+b;//计算和

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

return0;

}5.输入三个整数,输出最大值c

#include<stdio.h>

intmain(){

inta,b,c,max;

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

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

max=a;//假设a是最大值

if(b>max)max=b;

if(c>max)max=c;

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

return0;

}6.输入一个整数,判断其奇偶性c

#include<stdio.h>

intmain(){

intnum;

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

scanf("%d",&num);

if(num%2==0){

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

}else{

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

}

return0;

}7.输入一个整数,判断其是否为正数、负数或零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;

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

#include<stdio.h>

intmain(){

inta,b;

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

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

if(a>b){

printf("%d>%d\n",a,b);

}elseif(a<b){

printf("%d<%d\n",a,b);

}else{

printf("%d=%d\n",a,b);

}

return0;

}9.输入一个字符,判断其是否为大写字母、小写字母或数字c

#include<stdio.h>

intmain(){

charch;

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

scanf("%c",&ch);

if(ch>='A'&&ch<='Z'){

printf("%c是大写字母\n",ch);

}elseif(ch>='a'&&ch<='z'){

printf("%c是小写字母\n",ch);

}elseif(ch>='0'&&ch<='9'){

printf("%c是数字\n",ch);

}else{

printf("%c是其他字符\n",ch);

}

return0;

}10.简单计算器(加减乘除)c

#include<stdio.h>

intmain(){

floata,b,result;

charop;

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

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

switch(op){

case'+':result=a+b;break;

case'-':result=a-b;break;

case'*':result=a*b;break;

case'/':

if(b==0){

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

return1;

}

result=a/b;

break;

default:printf("错误:无效运算符\n");return1;

}

printf("结果:%.2f\n",result);

return0;

}11.输入一个整数,输出其绝对值c

#include<stdio.h>

intmain(){

intnum;

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

scanf("%d",&num);

if(num<0){

num=-num;//负数取反得到绝对值

}

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

return0;

}12.用三元运算符求两个数的最大值c

#include<stdio.h>

intmain(){

inta,b,max;

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

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

max=(a>b)?a:b;//三元运算符:条件成立取a,否则取b

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

return0;

}13.输入年份,判断是否为闰年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;

}14.输入月份,判断该月有多少天c

#include<stdio.h>

intmain(){

intmonth,year;

printf("请输入年份和月份(格式:年份月份):");

scanf("%d%d",&year,&month);

switch(month){

case1:case3:case5:case7:case8:case10:case12:

printf("该月有31天\n");break;

case4:case6:case9:case11:

printf("该月有30天\n");break;

case2:

//判断闰年,2月有29天,平年28天

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

printf("该月有29天\n");

}else{

printf("该月有28天\n");

}

break;

default:printf("错误:无效月份\n");

}

return0;

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

#include<stdio.h>

intmain(){

inti;

//for循环遍历1到10

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%10==9){//每10个数字换行

printf("\n");

}

}

return0;

}18.计算1到100的累加和c

#include<stdio.h>

intmain(){

inti,sum=0;

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

sum+=i;//累加

}

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

return0;

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

#include<stdio.h>

intmain(){

inti,fact=1;

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

fact*=i;//阶乘计算

}

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

return0;

}20.用while循环输出1到10c

#include<stdio.h>

intmain(){

inti=1;

while(i<=10){

printf("%d",i);

i++;//自增

}

printf("\n");

return0;

}二、数组类(21-40)21.定义一个整型数组,输出所有元素c

#include<stdio.h>

intmain(){

intarr[5]={1,2,3,4,5};//定义并初始化数组

inti;

printf("数组元素:");

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

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

}

printf("\n");

return0;

}22.输入5个整数存入数组,输出最大值c

#include<stdio.h>

intmain(){

intarr[5],i,max;

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

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

scanf("%d",&arr[i]);//输入数组元素

}

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

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

if(arr[i]>max){

max=arr[i];

}

}

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

return0;

}23.输入5个整数存入数组,输出最小值c

#include<stdio.h>

intmain(){

intarr[5],i,min;

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

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

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

}

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

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

if(arr[i]<min){

min=arr[i];

}

}

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

return0;

}24.输入5个整数存入数组,计算所有元素的和与平均值c

#include<stdio.h>

intmain(){

intarr[5],i,sum=0;

floatavg;

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

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

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

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

}

avg=sum/5.0;//计算平均值(注意用5.0避免整数除法)

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

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

return0;

}25.输入5个整数存入数组,将数组元素逆序输出c

#include<stdio.h>

intmain(){

intarr[5],i;

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

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

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

}

printf("数组逆序输出:");

for(i=4;i>=0;i--){

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

}

printf("\n");

return0;

}26.定义一个字符数组,输入字符串并输出c

#include<stdio.h>

intmain(){

charstr[50];//定义字符数组,存储字符串

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

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

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

return0;

}27.输入一个字符串,计算其长度(不使用strlen函数)c

#include<stdio.h>

intmain(){

charstr[50];

intlen=0,i=0;

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

scanf("%s",str);

//遍历字符串,直到遇到结束符'\0'

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

len++;

i++;

}

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

return0;

}28.输入一个字符串,将其转换为大写(不使用toupper函数)c

#include<stdio.h>

intmain(){

charstr[50];

inti=0;

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

scanf("%s",str);

//小写字母转大写:ASCII码减32

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

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

str[i]-=32;

}

i++;

}

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

return0;

}29.输入一个字符串,将其转换为小写(不使用tolower函数)c

#include<stdio.h>

intmain(){

charstr[50];

inti=0;

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

scanf("%s",str);

//大写字母转小写:ASCII码加32

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

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

str[i]+=32;

}

i++;

}

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

return0;

}30.输入两个字符串,比较其是否相等(不使用strcmp函数)c

#include<stdio.h>

intmain(){

charstr1[50],str2[50];

inti=0,flag=1;//flag=1表示相等,0表示不相等

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

scanf("%s",str1);

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

scanf("%s",str2);

//遍历两个字符串,逐字符比较

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

if(str1[i]!=str2[i]){

flag=0;

break;

}

i++;

}

if(flag==1){

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

}else{

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

}

return0;

}31.输入一个字符串,统计其中字母的个数c

#include<stdio.h>

intmain(){

charstr[50];

inti=0,count=0;

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

scanf("%s",str);

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

//判断是否为字母(大写或小写)

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

count++;

}

i++;

}

printf("字符串中字母的个数:%d\n",count);

return0;

}32.输入一个字符串,统计其中数字的个数c

#include<stdio.h>

intmain(){

charstr[50];

inti=0,count=0;

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

scanf("%s",str);

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

//判断是否为数字

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

count++;

}

i++;

}

printf("字符串中数字的个数:%d\n",count);

return0;

}33.定义一个二维数组,输出所有元素c

#include<stdio.h>

intmain(){

//定义3行4列的二维数组并初始化

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

inti,j;

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

for(i=0;i<3;i++){//遍历行

for(j=0;j<4;j++){//遍历列

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

}

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

}

return0;

}34.输入3行3列的二维数组,计算所有元素的和c

#include<stdio.h>

intmain(){

intarr[3][3],i,j,sum=0;

printf("请输入3行3列的二维数组(每行3个数字,用空格分隔):\n");

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

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

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

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

}

}

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

return0;

}35.输入3行3列的二维数组,输出其主对角线元素(左上角到右下角)c

#include<stdio.h>

intmain(){

intarr[3][3],i,j;

printf("请输入3行3列的二维数组(每行3个数字,用空格分隔):\n");

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

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

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

}

}

printf("主对角线元素:");

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

printf("%d",arr[i][i]);//主对角线:行号=列号

}

printf("\n");

return0;

}36.输入3行3列的二维数组,输出其副对角线元素(右上角到左下角)c

#include<stdio.h>

intmain(){

intarr[3][3],i,j;

printf("请输入3行3列的二维数组(每行3个数字,用空格分隔):\n");

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

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

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

}

}

printf("副对角线元素:");

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

printf("%d",arr[i][2-i]);//副对角线:行号+列号=2(3-1)

}

printf("\n");

return0;

}37.对一个整型数组进行升序排序(冒泡排序)c

#include<stdio.h>

intmain(){

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

inti,j,temp;

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

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

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

}

//冒泡排序:相邻元素比较,大的往后移

for(i=0;i<4;i++){//外层循环:排序轮数(n个元素排n-1轮)

for(j=0;j<4-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<5;i++){

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

}

printf("\n");

return0;

}38.对一个整型数组进行降序排序(冒泡排序)c

#include<stdio.h>

intmain(){

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

inti,j,temp;

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

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

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

}

//降序冒泡排序:相邻元素比较,小的往后移

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

for(j=0;j<4-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<5;i++){

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

}

printf("\n");

return0;

}39.输入一个整数,在数组中查找其是否存在(线性查找)c

#include<stdio.h>

intmain(){

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

intnum,i,flag=0;//flag=1表示找到,0表示未找到

printf("请输入要查找的整数:");

scanf("%d",&num);

//线性查找:遍历数组逐元素比较

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

if(arr[i]==num){

flag=1;

break;

}

}

if(flag==1){

printf("%d在数组中,下标为%d\n",num,i);

}else{

printf("%d不在数组中\n",num);

}

return0;

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

#include<stdio.h>

intmain(){

intarr[6]={1,2,3,4,5};//预留一个位置插入元素

intnum,pos,i;

printf("请输入要插入的整数:");

scanf("%d",&num);

printf("请输入插入位置(0-5):");

scanf("%d",&pos);

//从最后一个元素开始,向后移动,为插入元素腾出位置

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

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

}

arr[pos]=num;//插入元素

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

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

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

}

printf("\n");

return0;

}三、函数类(41-60)41.定义一个函数,实现两个整数的加法c

#include<stdio.h>

//加法函数:接收两个int参数,返回它们的和

intadd(inta,intb){

returna+b;

}

intmain(){

intx,y,sum;

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

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

sum=add(x,y);//调用加法函数

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

return0;

}42.定义一个函数,判断一个整数是否为奇数c

#include<stdio.h>

//判断奇数函数:是奇数返回1,否则返回0

intisOdd(intnum){

if(num%2!=0){

return1;

}else{

return0;

}

}

intmain(){

intnum;

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

scanf("%d",&num);

if(isOdd(num)){

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

}else{

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

}

return0;

}43.定义一个函数,计算一个整数的阶乘c

#include<stdio.h>

//阶乘函数:接收一个int参数,返回其阶乘

intfactorial(intn){

intfact=1;

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

fact*=i;

}

returnfact;

}

intmain(){

intn;

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

scanf("%d",&n);

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

return0;

}44.定义一个函数,计算两个整数的最大值c

#include<stdio.h>

//求最大值函数:返回两个整数中的较大值

intmax(inta,intb){

return(a>b)?a:b;

}

intmain(){

intx,y;

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

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

printf("最大值:%d\n",max(x,y));

return0;

}45.定义一个函数,计算两个整数的最小值c

#include<stdio.h>

//求最小值函数:返回两个整数中的较小值

intmin(inta,intb){

return(a<b)?a:b;

}

intmain(){

intx,y;

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

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

printf("最小值:%d\n",min(x,y));

return0;

}46.定义一个函数,将一个整数转换为绝对值c

#include<stdio.h>

//绝对值函数:返回一个整数的绝对值

intabsValue(intnum){

return(num<0)?-num:num;

}

intmain(){

intnum;

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

scanf("%d",&num);

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

return0;

}47.定义一个函数,判断一个年份是否为闰年c

#include<stdio.h>

//闰年判断函数:是闰年返回1,否则返回0

intisLeapYear(intyear){

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

return1;

}else{

return0;

}

}

intmain(){

intyear;

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

scanf("%d",&year);

if(isLeapYear(year)){

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

}else{

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

}

return0;

}48.定义一个函数,计算数组所有元素的和c

#include<stdio.h>

//数组求和函数:接收数组和数组长度,返回元素和

intarraySum(intarr[],intlen){

intsum=0;

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

sum+=arr[i];

}

returnsum;

}

intmain(){

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

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

printf("数组元素和:%d\n",arraySum(arr,len));

return0;

}49.定义一个函数,输出数组所有元素c

#include<stdio.h>

//数组输出函数:接收数组和数组长度,输出所有元素

voidprintArray(intarr[],intlen){

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

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

}

printf("\n");

}

intmain(){

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

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

printf("数组元素:");

printArray(arr,len);//调用输出函数

return0;

}50.定义一个函数,对数组进行升序排序(冒泡排序)c

#include<stdio.h>

//冒泡排序函数:对数组进行升序排序

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;

}

}

}

}

intmain(){

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

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;

}51.定义一个函数,查找数组中指定元素的下标c

#include<stdio.h>

//查找函数:找到返回下标,未找到返回-1

intfindIndex(intarr[],intlen,intnum){

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

if(arr[i]==num){

returni;

}

}

return-1;

}

intmain(){

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

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

intnum,index;

printf("请输入要查找的整数:");

scanf("%d",&num);

index=findIndex(arr,len,num);

if(index!=-1){

printf("%d在数组中的下标为:%d\n",num,index);

}else{

printf("%d不在数组中\n",num);

}

return0;

}52.定义一个函数,实现字符串的复制(不使用strcpy函数)c

#include<stdio.h>

//字符串复制函数:将src复制到dest

voidstrCopy(chardest[],charsrc[]){

inti=0;

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

dest[i]=src[i];

i++;

}

dest[i]='\0';//给目标字符串加上结束符

}

intmain(){

charsrc[50],dest[50];

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

scanf("%s",src);

strCopy(dest,src);//调用复制函数

printf("复制后的字符串:%s\n",dest);

return0;

}53.定义一个函数,计算字符串的长度(不使用strlen函数)c

#include<stdio.h>

//字符串长度函数:返回字符串长度

intstrLength(charstr[]){

intlen=0;

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

len++;

}

returnlen;

}

intmain(){

charstr[50];

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

scanf("%s",str);

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

return0;

}54.定义一个函数,比较两个字符串是否相等(不使用strcmp函数)c

#include<stdio.h>

//字符串比较函数:相等返回1,否则返回0

intstrCompare(charstr1[],charstr2[]){

inti=0;

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

if(str1[i]!=str2[i]){

return0;

}

i++;

}

return1;

}

intmain(){

charstr1[50],str2[50];

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

scanf("%s",str1);

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

scanf("%s",str2);

if(strCompare(str1,str2)){

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

}else{

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

}

return0;

}55.定义一个函数,实现两个整数的交换(使用指针)c

#include<stdio.h>

/

温馨提示

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

评论

0/150

提交评论