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("年龄:XX\n");

printf("专业:计算机科学与技术\n");

printf("爱好:编程、阅读\n");

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){

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

printf("余数:%d\n",a%b);

}else{

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

}

return0;

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

#include<stdio.h>

intmain(){

intnum;

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

scanf("%d",&num);

if(num%2==0){

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

}else{

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

}

return0;

}6.输入三个整数,求最大值c

#include<stdio.h>

intmain(){

inta,b,c,max;

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

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

max=a;

if(b>max)max=b;

if(c>max)max=c;

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

return0;

}7.输入三个整数,按从小到大排序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;

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

}9.求一个整数的绝对值c

#include<stdio.h>

intmain(){

intnum,abs_num;

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

scanf("%d",&num);

abs_num=num>=0?num:-num;//三目运算符

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

return0;

}10.输入两个整数,求最大公约数(GCD)c

#include<stdio.h>

intmain(){

inta,b,temp;

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

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

//辗转相除法求最大公约数

while(b!=0){

temp=a%b;

a=b;

b=temp;

}

printf("最大公约数是:%d\n",a);

return0;

}11.输入两个整数,求最小公倍数(LCM)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;

//最小公倍数=两数之积/最大公约数

lcm=(a*b)/gcd;

printf("最小公倍数是:%d\n",lcm);

return0;

}12.输入一个浮点数,保留2位小数输出c

#include<stdio.h>

intmain(){

floatnum;

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

scanf("%f",&num);

printf("保留2位小数:%.2f\n",num);

return0;

}13.输入一个字符,判断其是否为大写字母、小写字母、数字或其他字符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;

}14.输入一个大写字母,转换为小写字母(反之亦然)c

#include<stdio.h>

intmain(){

charch;

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

scanf("%c",&ch);

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

//大写转小写(ASCII码差32)

printf("转换后:%c\n",ch+32);

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

//小写转大写

printf("转换后:%c\n",ch-32);

}else{

printf("输入的不是字母!\n");

}

return0;

}15.用if-else语句判断成绩等级(90-100优秀,80-89良好,70-79中等,60-69及格,<60不及格)c

#include<stdio.h>

intmain(){

intscore;

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

scanf("%d",&score);

if(score>=90&&score<=100){

printf("优秀\n");

}elseif(score>=80&&score<=89){

printf("良好\n");

}elseif(score>=70&&score<=79){

printf("中等\n");

}elseif(score>=60&&score<=69){

printf("及格\n");

}elseif(score>=0&&score<60){

printf("不及格\n");

}else{

printf("成绩输入错误!\n");

}

return0;

}16.用switch语句判断成绩等级c

#include<stdio.h>

intmain(){

intscore;

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

scanf("%d",&score);

switch(score/10){

case10:

case9:printf("优秀\n");break;

case8:printf("良好\n");break;

case7:printf("中等\n");break;

case6:printf("及格\n");break;

case5:

case4:

case3:

case2:

case1:

case0:printf("不及格\n");break;

default:printf("成绩输入错误!\n");

}

return0;

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

}18.输入一个月份,判断该月份有多少天(考虑闰年)c

#include<stdio.h>

intmain(){

intmonth,year,days;

printf("请输入年份和月份(用空格分隔):");

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

switch(month){

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

days=31;break;

case4:case6:case9:case11:

days=30;break;

case2:

//判断闰年

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

days=29;

}else{

days=28;

}

break;

default:

printf("月份输入错误!\n");

return1;//异常退出

}

printf("%d年%d月有%d天\n",year,month,days);

return0;

}19.输出1-10的所有整数c

#include<stdio.h>

intmain(){

inti;

//for循环实现

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

printf("%d",i);

}

printf("\n");

return0;

}20.输出10-1的所有整数(倒序)c

#include<stdio.h>

intmain(){

inti;

for(i=10;i>=1;i--){

printf("%d",i);

}

printf("\n");

return0;

}二、循环结构类(21-40)21.用while循环输出1-100的所有整数c

#include<stdio.h>

intmain(){

inti=1;

while(i<=100){

printf("%d",i);

i++;

}

printf("\n");

return0;

}22.用do-while循环输出1-100的所有整数c

#include<stdio.h>

intmain(){

inti=1;

do{

printf("%d",i);

i++;

}while(i<=100);

printf("\n");

return0;

}23.计算1-100的所有整数和c

#include<stdio.h>

intmain(){

inti,sum=0;

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

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

}

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

return0;

}24.计算1-100的所有奇数和c

#include<stdio.h>

intmain(){

inti,sum=0;

for(i=1;i<=100;i+=2){//步长为2,只取奇数

sum+=i;

}

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

return0;

}25.计算1-100的所有偶数和c

#include<stdio.h>

intmain(){

inti,sum=0;

for(i=2;i<=100;i+=2){//步长为2,只取偶数

sum+=i;

}

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

return0;

}26.计算n的阶乘(n!=1×2×3×...×n)c

#include<stdio.h>

intmain(){

intn,i;

longlongfactorial=1;//用longlong防止溢出(n较大时)

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

scanf("%d",&n);

if(n<0){

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

return1;

}

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

factorial*=i;

}

printf("%d!=%lld\n",n,factorial);

return0;

}27.计算1!+2!+3!+...+n!c

#include<stdio.h>

intmain(){

intn,i;

longlongfactorial=1,sum=0;

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

scanf("%d",&n);

if(n<0){

printf("输入错误!\n");

return1;

}

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

factorial*=i;//计算当前i的阶乘

sum+=factorial;//累加阶乘和

}

printf("1!+2!+...+%d!=%lld\n",n,sum);

return0;

}28.输入一个正整数,判断其是否为素数c

#include<stdio.h>

intmain(){

intnum,i,flag=1;//flag=1表示素数,0表示非素数

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

scanf("%d",&num);

if(num<=1){

flag=0;//1和小于1的数不是素数

}

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

if(num%i==0){

flag=0;

break;//找到一个约数,直接退出循环

}

}

if(flag==1){

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

}else{

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

}

return0;

}29.输出1-100的所有素数c

#include<stdio.h>

intmain(){

intnum,i,flag;

printf("1-100的素数有:\n");

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

flag=1;

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

if(num%i==0){

flag=0;

break;

}

}

if(flag==1){

printf("%d",num);

}

}

printf("\n");

return0;

}30.输入一个正整数,求其所有因数c

#include<stdio.h>

intmain(){

intnum,i;

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

scanf("%d",&num);

printf("%d的因数有:",num);

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

if(num%i==0){

printf("%d",i);

}

}

printf("\n");

return0;

}31.输入一个正整数,求其各位数字之和c

#include<stdio.h>

intmain(){

intnum,sum=0,temp;

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

scanf("%d",&num);

temp=num;//保存原始数字

while(temp!=0){

sum+=temp%10;//取个位数字

temp/=10;//去掉个位数字

}

printf("%d的各位数字之和为:%d\n",num,sum);

return0;

}32.输入一个正整数,将其各位数字反转(如123→321)c

#include<stdio.h>

intmain(){

intnum,reverse=0,temp;

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

scanf("%d",&num);

temp=num;

while(temp!=0){

reverse=reverse*10+temp%10;//拼接个位数字

temp/=10;

}

printf("%d反转后为:%d\n",num,reverse);

return0;

}33.输出斐波那契数列的前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");

return1;

}

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

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

printf("%d",a);

c=a+b;//下一项=前两项之和

a=b;//更新前一项

b=c;//更新后一项

}

printf("\n");

return0;

}34.用循环打印等腰三角形(由*组成)c

#include<stdio.h>

intmain(){

intn,i,j,k;

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

scanf("%d",&n);

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

//打印空格

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

printf("");

}

//打印*

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

printf("*");

}

printf("\n");//换行

}

return0;

}35.用循环打印直角三角形(由*组成)c

#include<stdio.h>

intmain(){

intn,i,j;

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

scanf("%d",&n);

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

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

printf("*");

}

printf("\n");

}

return0;

}36.用循环打印倒直角三角形(由*组成)c

#include<stdio.h>

intmain(){

intn,i,j;

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

scanf("%d",&n);

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

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

printf("*");

}

printf("\n");

}

return0;

}37.打印99乘法表c

#include<stdio.h>

intmain(){

inti,j;

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

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

printf("%d×%d=%d\t",j,i,i*j);

}

printf("\n");

}

return0;

}38.输入一个正整数,判断其是否为回文数(如121、12321)c

#include<stdio.h>

intmain(){

intnum,temp,reverse=0;

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

scanf("%d",&num);

temp=num;

//反转数字

while(temp!=0){

reverse=reverse*10+temp%10;

temp/=10;

}

//判断反转后的数字与原数字是否相等

if(reverse==num){

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

}else{

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

}

return0;

}39.计算1到n之间能被3或5整除的所有数的和c

#include<stdio.h>

intmain(){

intn,i,sum=0;

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

scanf("%d",&n);

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

if(i%3==0||i%5==0){

sum+=i;

}

}

printf("1到%d之间能被3或5整除的数的和为:%d\n",n,sum);

return0;

}40.用循环实现输入一个数,求其平方根(不用sqrt函数)c

#include<stdio.h>

intmain(){

floatnum,x=1.0,eps=1e-6;//eps为精度,控制误差

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

scanf("%f",&num);

if(num<0){

printf("负数没有平方根!\n");

return1;

}

//牛顿迭代法求平方根

while(x*x-num>eps||num-x*x>eps){

x=(x+num/x)/2;

}

printf("%f的平方根约为:%.6f\n",num,x);

return0;

}三、数组类(41-60)41.定义一个一维数组,存储1-10的整数,然后遍历输出c

#include<stdio.h>

intmain(){

intarr[10],i;

//给数组赋值

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

arr[i]=i+1;

}

//遍历输出

printf("数组元素:");

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

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

}

printf("\n");

return0;

}42.输入10个整数存入数组,然后输出c

#include<stdio.h>

intmain(){

intarr[10],i;

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

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

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

}

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

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

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

}

printf("\n");

return0;

}43.输入10个整数存入数组,求数组元素的最大值c

#include<stdio.h>

intmain(){

intarr[10],i,max;

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

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

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

}

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

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

if(arr[i]>max){

max=arr[i];

}

}

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

return0;

}44.输入10个整数存入数组,求数组元素的最小值c

#include<stdio.h>

intmain(){

intarr[10],i,min;

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

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

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

}

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

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

if(arr[i]<min){

min=arr[i];

}

}

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

return0;

}45.输入10个整数存入数组,求数组元素的平均值c

#include<stdio.h>

intmain(){

intarr[10],i,sum=0;

floatavg;

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

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

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

sum+=arr[i];

}

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

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

return0;

}46.输入10个整数存入数组,求数组元素的总和c

#include<stdio.h>

intmain(){

intarr[10],i,sum=0;

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

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

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

sum+=arr[i];

}

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

return0;

}47.输入10个整数存入数组,将数组元素按从小到大排序(冒泡排序)c

#include<stdio.h>

intmain(){

intarr[10],i,j,temp;

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

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

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

}

//冒泡排序(从小到大)

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

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

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

}

printf("\n");

return0;

}48.输入10个整数存入数组,将数组元素按从大到小排序(选择排序)c

#include<stdio.h>

intmain(){

intarr[10],i,j,temp,max_index;

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

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

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

}

//选择排序(从大到小)

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

max_index=i;//假设当前索引是最大值索引

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

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

max_index=j;//更新最大值索引

}

}

//交换当前元素和最大值元素

temp=arr[i];

arr[i]=arr[max_index];

arr[max_index]=temp;

}

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

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

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

}

printf("\n");

return0;

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

#include<stdio.h>

intmain(){

intarr[10],i,target,flag=0,index;

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){

flag=1;

index=i;

break;

}

}

if(flag==1){

printf("%d存在于数组中,索引为:%d\n",target,index);

}else{

printf("%d不存在于数组中\n",target);

}

return0;

}50.对已排序的数组,输入一个整数,用二分查找判断该数是否存在c

#include<stdio.h>

intmain(){

intarr[10]={1,3,5,7,9,11,13,15,17,19};//已排序数组

inttarget,left=0,right=9,mid,flag=0;

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

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

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

}

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

scanf("%d",&target);

//二分查找

while(left<=right){

mid=(left+right)/2;

if(arr[mid]==target){

flag=1;

break;

}elseif(arr[mid]<target){

left=mid+1;//目标在右半部分

}else{

right=mid-1;//目标在左半部分

}

}

if(flag==1){

printf("%d存在于数组中,索引为:%d\n",target,mid);

}else{

printf("%d不存在于数组中\n",target);

}

return0;

}51.输入10个整数存入数组,统计某个数字出现的次数c

#include<stdio.h>

intmain(){

intarr[10],i,target,count=0;

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){

count++;

}

}

printf("%d在数组中出现了%d次\n",target,count);

return0;

}52.定义一个二维数组(3行4列),赋值后遍历输出c

#include<stdio.h>

intmain(){

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\t",arr[i][j]);

}

printf("\n");//换行

}

return0;

}53.输入3行4列的二维数组,然后遍历输出c

#include<stdio.h>

intmain(){

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

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

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

printf("第%d行:",i+1);

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

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

}

}

printf("你输入的二维数组:\n");

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

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

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

}

printf("\n");

}

return0;

}54.求二维数组(3行4列)的所有元素之和c

#include<stdio.h>

intmain(){

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

printf("请输入3行4列的二维数组:\n");

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

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

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

sum+=arr[i][j];

}

}

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

return0;

}55.求二维数组(3行4列)每行元素的和c

#include<stdio.h>

intmain(){

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

printf("请输入3行4列的二维数组:\n");

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

温馨提示

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

评论

0/150

提交评论