c语言初学必背代码.docx
《c语言初学必背代码.docx》由会员分享,可在线阅读,更多相关《c语言初学必背代码.docx(20页珍藏版)》请在冰豆网上搜索。
c语言初学必背代码
c语言初学必背代码
//1.成绩判断
#include
intmain()
{
//成绩
intscore;
printf("请输入你的成绩:
\n");
scanf("%d",&score);
//判断
if(score>=0&&score<60)
{
printf("不及格\n");
}
elseif(60<=score&&score<80)
{
printf("中等\n");
}
elseif(80<=score&&score<100)
{
printf("优秀\n");
}
else
{
printf("输入错误!
\n");
}
}
//2.计算1到100的和
#include
intmain()
{
intsum=0;//存结果变量
inti;
for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}
//3.最大公约数
#include
//求m,n的最大公约数
intmain()
{
intm,n;
inti,k;
printf("请输入两个数:
");
scanf("%d%d",&m,&n);
//三元运算符找较小的那个
k=mm:
n;
//从较小的那个数倒着往前找
for(i=k;i>=1;i--)
{
//这是公约数
if((m%i==0)&&(n%i==0))
{
printf("最大公约数是%d\n",i);
break;//跳出for循环
}
}
}
//4.最小公倍数
#include
//求m,n的最小公倍数
intmain()
{
intm,n;
intmax,min;//m,n中较大,较小的那个
printf("公鸡%d,母鸡%d,小鸡%d\n",i,j,100-i-j);
}
}
}
}
//1,2,5凑100银币问题
intmain3()
{
intcount=0;//情况数
inti,j;//5分个数,2分个数
for(i=0;i<=20;i++)//5分个数
{
for(j=0;j<=50;j++)//2分个数
{
if((5*i+2*j)<=100)
{
count++;
printf("%d:
5分%d个,2分%d个,1分%d个\n",count,i,j,100-5*i-2*j);
}
}
}
}
//8.一维数组的最大值、最小值、平均值
#include
#defineN10//宏定义常量
intmain()
{
inti;//下标索引
intmax,min;
doublesum=0;//累加和
inta[N]={58,58,96,100,25,55,66,88,99,77};
max=a[0];//假设第一个最大
min=a[0];//假设第一个最小
for(i=1;i{
if(a[i]>max)//比最大值还大
max=a[i];//你才是最大
if(a[i]min=a[i];//你才是最小
sum+=a[i];
}
printf("max=%d,min=%d\n",max,min);
printf("average=%.2lf\n",sum/N);
}
//9.二维数组的最大值、最小值、平均值
#include
intmain()
{
inti;//第几行
intj;//第几列
inta[3][4]={{1,2,3,4},{5,-6,7,8},{9,19,39,0}};
intmax=a[0][0];//假设你最大
intmin=a[0][0];//假设你最小
doubleaverage;//平均值
doublesum=0;//总和
for(i=0;i<3;i++)//必定3行
{
for(j=0;j<4;j++)//必定4列
{
printf("%5d",a[i][j]);
sum+=a[i][j];
if(a[i][j]>max)
max=a[i][j];
if(a[i][j]min=a[i][j];
}
printf("\n");
}
average=sum/(3*4);
printf("max=%d,min=%d,avg=%.2lf\n",max,min,average);
}
//10.二维数组转置
#include
//二维数组转置:
行变列,列变行
intmain()
{
inti;//第几行
intj;//第几列
inta[3][4]={{1,2,3,4},{5,-6,7,8},{9,19,39,0}};
intb[4][3];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
//矩阵转置
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
b[j][i]=a[i][j];
}
}
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf("%5d",b[i][j]);
}
printf("\n");
}
}
//11.冒泡排序
#include
#defineN10//宏定义常量
intmain()
{
inti;//下标索引
intj;
inttmp;//临时交换用
inta[N]={58,58,96,100,25,55,66,88,99,77};
//外层循环一定是N-1
for(i=0;i{
//两两交换,大的往后走
for(j=0;j{
//交换
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
for(i=0;i{
printf("%d",a[i]);;
}
printf("\n");
}
//12.结构冒泡排序
#include
//结构定义,用户自定义类型
typedefstructstudent{
charsno[20];//学号
charname[20];//姓名
intage;//年龄
chargender;//性别
chartel[20];//电话
};
intmain()
{
inti;
intj;
doublesum=0;
structstudenttmp;//两两交换临时用;
//结构数组
structstudentteam[5];
for(i=0;i<5;i++)
{
printf("请输入第%d个队员的信息:
\n",i+1);
scanf("%s%s%d%c%s",team[i].sno,team[i].name,&team[i].age,&team[i].gender,team[i].tel);
}
//按年龄冒泡排序
for(i=0;i<5;i++)
{
for(j=0;j<5-i-1;j++)
{
//两两交换
if(team[j].age>team[j+1].age)
{
tmp=team[j];
team[j]=team[j+1];
team[j+1]=tmp;
}
}
}
//取值
printf("%-12s%-10s%-5s%-5s%-15s\n","学号","姓名","年龄","性别","电话");
for(i=0;i<5;i++)
{
printf("%-12s%-10s%-5d%-5c%-15s\n",team[i].sno,team[i].name,team[i].age,team[i].gender,team[i].tel);
}
}
//13.结构数组找年龄最大值
#include
//结构定义,用户自定义类型
typedefstructstudent{
charsno[20];//学号
charname[20];//姓名
intage;//年龄
chargender;//性别
chartel[20];//电话
};
intmain()
{
inti;
structstudenttmp;//找最大临时用
//结构数组
structstudentteam[5];
for(i=0;i<5;i++)
{
printf("请输入第%d个队员的信息:
\n",i+1);
scanf("%s%s%d%c%s",team[i].sno,team[i].name,&team[i].age,&team[i].gender,team[i].tel);
}
//取值
printf("%-12s%-10s%-5s%-5s%-15s\n","学号","姓名","年龄","性别","电话");
for(i=0;i<5;i++)
{
printf("%-12s%-10s%-5d%-5c%-15s\n",team[i].sno,team[i].name,team[i].age,team[i].gender,team[i].tel);
}
//找学号最大的那一个
tmp=team[0];
for(i=1;i<5;i++)
{
if(strcmp(team[i].sno,tmp.sno)>0)
{
tmp=team[i];
}
}
printf("学号最大的队员如下:
\n");
printf("%-12s%-10s%-5d%-5c%-15s\n",tmp.sno,tmp.name,tmp.age,tmp.gender,tmp.tel);
}
//14.文件读写
#include
#include
//结构定义,用户自定义类型
typedefstructstudent{
charsno[20];//学号
charname[20];//姓名
intage;//年龄
chargender;//性别
chartel[20];//电话
};
//文件读写
intmain()
{
structstudent*s,*p1;//个数未知
FILE*fp;
inti,n=0;
charbuf[1024];//fgets缓冲区
//打开文件
fp=fopen("e:
\\test.txt","r");
while(fgets(buf,1024,fp)!
=NULL)
n++;
fclose(fp);
//指向一个可以存储n个student结构的内存空间
s=(structstudent*)malloc(sizeof(structstudent)*n);
p1=s;//不要动头位置s的值
//打开文件
fp=fopen("e:
\\test.txt","r");
for(i=0;i{
//从文件中读入一行
fscanf(fp,"%s%s%d%c%s",p1->sno,p1->name,&p1->age,&p1->gender,p1->tel);
p1++;
}
fclose(fp);
p1=s;
for(i=0;i<3;i++)
{
printf("%s%s%d%c%s\n",p1->sno,p1->name,p1->age,p1->gender,p1->tel);
}
free(s);
}
//15.输入三角形三边长计算周长和面积
#include
#include
intmain()
{
doublearea,perimeter,s,a,b,c;
printf("请输入三边长abc:
");
scanf("%lf%lf%lf",&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));
perimeter=a+b+c;
printf("area=%.2f,perimeter=%.2f\n",area,perimeter);
}
else
{
printf("三边长无法构成三角形。
\n");
}
return0;
}
//16.输入年份和月份输出对应那一月的天数,要处理闰年
#include
intmain()
{
intyear,month;
intleap=0;
scanf("%d%d",&year,&month);
if((year%4==0&&year%100!
=0)||year%400==0)//闰年2月29天
{
leap=1;
}
switch(month)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
printf("31");break;
case4:
case6:
case9:
case11:
printf("30");break;
case2:
printf("%d",28+leap);break;
default:
printf("error");break;
}
return0;
}
//17.1,2,5分硬币问题
#include
intmain()
{
intsum=0;
for(inti=0;i<=20;i++)//5分
{
for(intj=0;j<=50;j++)//2分
{
if(5*i+2*j<=100)
sum++;
else
break;
}
}
printf("%d\n",sum);
}
//18.100到200所有的素数
#include
intmain()
{
inti,j,n;
//外层
for(i=100;i<=200;i++)
{
n=i;
//内层
for(j=2;j<=n-1;j++)
{
if(n%j==0)
break;//不是素数
}
if(j==n)//没找到
printf("%d是素数\n",n);
else
printf("%d不是素数\n",n);
}
}
//19.输入一个数n,计算12+22+32+…+n2
#include
intmain()
{
intsum=0;
inti,k;
scanf("%d",&k);
i=1;
while(i<=k)
{
sum=sum+i*i;
i++;
}
printf("sum=%d\n",sum);
}
//20.指针交换
//定义一个方法swap()通过指针交换两个整数,并在main()中调用
#include
voidswap(int*pa,int*pb)
{
inttmp=*pa;
*pa=*pb;
*pb=tmp;
}
intmain()
{
inta=3;
intb=5;
int*pa=&a;
int*pb=&b;
swap(pa,pb);
printf("a=%d,b=%d\n",a,b);
}