经典C语言源代码.docx
- 文档编号:8874864
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:26
- 大小:25.07KB
经典C语言源代码.docx
《经典C语言源代码.docx》由会员分享,可在线阅读,更多相关《经典C语言源代码.docx(26页珍藏版)》请在冰豆网上搜索。
经典C语言源代码
经典C语言源代码
1、
(1)某年某月某日是星期几
#include〈stdio。
h>
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;i dayth=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;i〈SIZE;i++){ if(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;i scanf_s(”%f",&data[i]); } for(i=0;i min=i; for(j=i+1;j〈SIZE;j++) if(data[j] min=j; temp=data[min]; data[min]=data[i]; data[i]=temp; } printf("\n排序后的结果是: \n"); for(i=0;i〈SIZE;i++) printf(”%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;i scanf_s("%f”,&a[i]); } voidshow_array(floata[],intsize){ inti; for(i=0;i printf("%5.2f”,a[i]); printf("\n"); } voidsort(floata[],intsize){ inti,min,j; floattemp; for(i=0;i〈SIZE;i++){ min=i; for(j=i+1;j if(a[j]〈a[min]) 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;i printf(”%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(;pa〈qa+SIZE;pa++) scanf_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〈9—i;j++)//每轮进行9—i次交换 { if(a[j]〉a[j+1]) { temp=a[j]; a[j]=a[j+1];//大的沉底,小的上浮 a[j+1]=temp; } } } printf(”排序结果: \n"); for(i=0;i〈10;i++) printf(”%4d",a[i]); } 9、两数组A,B,要求A A: 4,7,9 B: 1,3,5,8,9 变换后 A: 1,3,5 B: 4,7,8,9,9 #include voidReArranger(int*A,int*B,intm,intn)//A和B是各有m个和n个整数的非降序数组,本算法将B数组元素逐个插入到A中,使A中各元素均不大于B中各元素,且两数组仍保持非降序排列。 { intx,j,i; while(A[m—1]〉B[0]) { x=A[m—1]; A[m-1]=B[0];//交换A[m—1]和B[0] j=1; while(j〈n&&B[j] B[j—1]=B[j++];//寻找A[m-1]的插入位置 B[j—1]=x; x=A[m-1]; i=m-2; while(i〉=0&&A[i]〉x) A[i+1]=A[i-—];//寻找B[0]的插入位置 A[i+1]=x; } } voidmain()//这里主要介绍算法思想,主函数就简单写了 { intA[3],B[5],i; printf(”输入第一个数组: "); for(i=0;i〈3;i++){ scanf_s("%d”,&A[i]); } printf(”\n输入第二个数组: ”); for(i=0;i<5;i++){ scanf_s("%d”,&B[i]); } ReArranger(A,B,3,5); printf(”\n输出第一个数组: ”); for(i=0;i〈3;i++) printf(”%d",A[i]); printf(”\n\n"); printf(”输出第二个数组: ”); for(i=0;i〈5;i++) printf(”%d",B[i]); printf(”\n"); } 10、符合1+6+3=3+2+5=1+4+5有哪几组 A1 BC64 DEF到325 #include h> voidmain(){ inta,b,c,d,e,f; for(a=1;a〈=6;a++) for(b=1;b<=6;b++){ if(b==a) continue; for(c=1;c<=6;c++){ if((c==a)||(c==b)) continue; for(d=1;d〈=6;d++){ if((d==a)||(d==b)||(d==c)) continue; for(e=1;e〈=6;e++){ if((e==a)||(e==b)||(e==c)||(e==d)) continue; f=21-(a+b+c+d+e); if((a+b+d==d+e+f)&&(a+b+d==a+c+f)){ printf(”%d\n”,a); printf("%d%d\n”,b,c); printf(”%d%d%d\n",d,e,f); } } } } } } 11、输入一串字符,升序排序,折半查找其中一字符 #include h〉 void*sortString(charunsort[],intlength){ for(inti=0;i for(intj=i+1;j if(unsort[i]>unsort[j]){ inttemp=unsort[j]; unsort[j]=unsort[i]; unsort[i]=temp; } } } } voidmain(){ chars1[50]; gets(s1); charvalue; scanf_s(”%c",&value); printf(”s1: %s\n",s1); printf("value: %c\n",value); intlength=strlen(s1); printf("length: %d\n”,length); sortString(s1,length); printf(”s1: %s\n”,s1); intstart=0,end=length-1; intmid=(end+start)/2; while(start<=end&&s1[mid]! =value){ mid=(end+start)/2; if(value〉s1[mid]) start=mid+1; else end=mid—1; } if(mid) printf("该字符在已知字符串中,即在第%d个\n”,mid); else printf("该字符不在已知字符串中\n”); } 12、100—300和500—700直接素数,m不被2到根号m直接任一整除 #include h〉 intisprime(intn) { if(n〈2) return0; for(inti=2;i〈n/2;i++) if(n%i==0) return0; return1; } voidmain() { inti,k=0; for(i=100;i〈=300;i++) if(isprime(i)) { printf("%3d”,i); k++; if(k%10==0)printf(”\n"); } for(i=500;i〈=700;i++) if(isprime(i)) { printf("%3d",i); k++; if(k%10==0)printf(”\n”); } printf(”\n”); } 13、判断一个数是否是素数 #include h> #include〈math。 h〉 voidmain() { intm,i,k; printf("请输入一个整数: ”); scanf_s(”%d”,&m); k=(int)sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>k) printf("%d是素数.\n”,m); else printf("%d不是素数。 \n”,m); } 14、一个数是否含有数字5 #include h> #include h> boolis5Num(intnum){ inttemp=num%10; while(temp! =5&&num〉10){ num=num/10; temp=num%10; } if(temp! =5) returnfalse; else returntrue; } voidmain(){ intnum; printf(”输入一个数: \n”); scanf_s(”%d",&num); if(is5Num(num)) printf(”含5\n”); else printf(”不含5\n”); } 15、一个排好序的数组,插入一个数 #include〈stdio。 h> voidmain(){ inta[11]={1,2,3,4,5,6,7,8,9,10}; intnum; printf(”插入前数组为: \n”); for(inti=0;i〈10;i++) printf(”%3d”,a[i]); printf("\n"); printf("请输入一个数: \n”); scanf_s("%d",&num); if(num>a[9]) a[10]=num; else{ for(inti=0;i〈10;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 经典 语言 源代码