经典C语言源代码.docx
《经典C语言源代码.docx》由会员分享,可在线阅读,更多相关《经典C语言源代码.docx(25页珍藏版)》请在冰豆网上搜索。
![经典C语言源代码.docx](https://file1.bdocx.com/fileroot1/2022-10/10/3ace881e-102a-4b9b-a08b-375a5afb0712/3ace881e-102a-4b9b-a08b-375a5afb07121.gif)
经典C语言源代码
经典C语言源代码
1、
(1)某年某月某日是星期几
#include
intmain()
{
intyear,month,day;
while(scanf_s("%d%d%d",&year,&month,&day)!
=EOF)
{
if(month==1||month==2)//判断month是否为1或2
{
year--;
month+=12;
}
intc=year/100;
inty=year-c*100;
intweek=(c/4)-2*c+(y+y/4)+(13*(month+1)/5)+day-1;
while(week<0){week+=7;}
week%=7;
switch(week)
{
case1:
printf("Monday\n");break;
case2:
printf("Tuesday\n");break;
case3:
printf("Wednesday\n");break;
case4:
printf("Thursday\n");break;
case5:
printf("Friday\n");break;
case6:
printf("Saturday\n");break;
case0:
printf("Sunday\n");break;
}
}
return0;
}
1、
(2)某年某月某日是第几天(一维数组)
#include"stdio.h"
voidmain(){
inti,flag,year,month,day,dayth;
intmonth_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入年/月/日:
\n");
scanf_s("%d/%d/%d",&year,&month,&day);
dayth=day;
flag=(year%400==0)||(year%4==0&&year%100!
=0);
if(flag)
month_day[2]=29;
for(i=1;idayth=dayth+month_day[i];
printf("%d/%d/%d是第%d天\n",year,month,day,dayth);
}
2、30个数中找最小的数及其位置
#include"stdio.h"
#defineSIZE30
voidmain(){
inti;
floatdata[SIZE];
intmin;
printf("请输入%d个浮点数:
\n",SIZE);
for(i=0;i//scanf_s("%f",&data[i]);
data[i]=rand()%30+1;
printf("%f、",data[i]);
}
min=0;
for(i=1;iif(data[i]min=i;
}
printf("最小值是%5.2f,位置是%5d\n",data[min],min);
}
3、30个数从小到大排序
(1)
#include"stdio.h"
#defineSIZE30
voidmain(){
inti,j;
floatdata[SIZE],temp;
intmin;
printf("请输入%d个整型数:
\n",SIZE);
for(i=0;iscanf_s("%f",&data[i]);
}
for(i=0;imin=i;
for(j=i+1;jif(data[j]min=j;
temp=data[min];
data[min]=data[i];
data[i]=temp;
}
printf("\n排序后的结果是:
\n");
for(i=0;iprintf("%5.2f",data[i]);
}
(2)模块化程序(数组名作为函数参数)
#include"stdio.h"
#defineSIZE5
voidaccept_array(floata[],intsize);
voidsort(floata[],intsize);
voidshow_array(floata[],intsize);
voidmain(){
floatscore[SIZE];
accept_array(score,SIZE);
printf("排序前:
");
show_array(score,SIZE);
sort(score,SIZE);
printf("排序后:
");
show_array(score,SIZE);
}
voidaccept_array(floata[],intsize){
inti;
printf("请输入%d个分数:
",size);
for(i=0;iscanf_s("%f",&a[i]);
}
voidshow_array(floata[],intsize){
inti;
for(i=0;iprintf("%5.2f",a[i]);
printf("\n");
}
voidsort(floata[],intsize){
inti,min,j;
floattemp;
for(i=0;imin=i;
for(j=i+1;jif(a[j]min=j;
temp=a[min];
a[min]=a[i];
a[i]=temp;
}
}
4、
(1)指针加减:
#include"stdio.h"
#defineSIZE10
voidmain(){
inta[SIZE]={1,2,3,4,5,6,7,8,9,10};
int*pa,i;
pa=&a[0];
//pa=a;
printf("\n");
for(i=0;iprintf("%d",*pa);
//printf("%d",*(pa+1));
pa++;
}
}
(2)指针比较:
#include"stdio.h"
#defineSIZE10
voidmain(){
inta[SIZE]={1,2,3,4,5,6,7,8,9,10};
int*pa,i;
int*qa;
pa=qa=&a[0];
printf("请输入%d整型数:
",SIZE);
for(;pascanf_s("%d",pa);
for(pa--;qa<=pa;pa--)
printf("%d",*pa);
}
5、两字符串相连:
#include"stdio.h"
#include"string.h"
voidstr_cat(charstr1[],charstr2[]);
voidmain(){
inti,j;
charstr1[160];
charstr2[80];
printf("请输入第一个字符串:
");
gets(str1);
printf("请输入第二个字符串:
");
gets(str2);
str_cat(str1,str2);
puts(str1);
}
voidstr_cat(charstr1[],charstr2[]){
inti,j;
i=0;
while(str1[i]!
='\0')
i++;
j=0;
while(str2[j]!
='\0'){
str1[i]=str2[j];
i++;j++;
}
str1[i]='\0';
}
6、二维数组(a,b转置)
#include"stdio.h"
voidmain(){
inti,j,b[2][3];
inta[3][2]={{1,2},{3,4},{5,6}};
for(i=0;i<2;i++){
for(j=0;j<3;j++)
b[i][j]=a[j][i];
}
printf("\na:
\n");
for(i=0;i<3;i++){
for(j=0;j<2;j++)
printf("%5d",a[i][j]);
printf("\n");
}
printf("\nb:
\n");
for(i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%5d",b[i][j]);
printf("\n");
}
}
7、输入一个二维数组并输出(指针)
#include"stdio.h"
voidmain(){
intx[2][3];
inti,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf_s("%d",*(x+i)+j);
putchar('\n');
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%d",*(*(x+i)+j));
putchar('\n');
}
}
8、冒泡法排序一个数组
#include"stdio.h"
#definesize10
voidmaopao(inta[]);
voidmain(){
inta[10];
inti;
printf("请输入10个整数:
\n");
for(i=0;i<10;i++)
scanf_s("%d",&a[i]);
maopao(a);
}
voidmaopao(inta[]){
inti,j,temp;
for(i=0;i<9;i++){//进行9轮排序
for(j=0;j