经典C语言源代码Word格式.docx
- 文档编号:19862709
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:25
- 大小:21.46KB
经典C语言源代码Word格式.docx
《经典C语言源代码Word格式.docx》由会员分享,可在线阅读,更多相关《经典C语言源代码Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
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"
day);
dayth=day;
flag=(year%400==0)||(year%4==0&
&
year%100!
=0);
if(flag)
month_day[2]=29;
for(i=1;
i<
month;
i++)
dayth=dayth+month_day[i];
%d/%d/%d是第%d天\n"
year,month,day,dayth);
2、30个数中找最小的数及其位置
#defineSIZE30
inti;
floatdata[SIZE];
intmin;
请输入%d个浮点数:
SIZE);
for(i=0;
SIZE;
i++){
//scanf_s("
%f"
data[i]);
data[i]=rand()%30+1;
printf("
%f、"
data[i]);
min=0;
if(data[i]<
data[min])
min=i;
最小值是%5.2f,位置是%5d\n"
data[min],min);
3、30个数从小到大排序
(1)
inti,j;
floatdata[SIZE],temp;
请输入%d个整型数:
scanf_s("
min=i;
for(j=i+1;
j<
j++)
if(data[j]<
min=j;
temp=data[min];
data[min]=data[i];
data[i]=temp;
}
\n排序后的结果是:
%5.2f"
(2)模块化程序(数组名作为函数参数)
#defineSIZE5
voidaccept_array(floata[],intsize);
voidsort(floata[],intsize);
voidshow_array(floata[],intsize);
floatscore[SIZE];
accept_array(score,SIZE);
排序前:
"
show_array(score,SIZE);
sort(score,SIZE);
排序后:
voidaccept_array(floata[],intsize){
请输入%d个分数:
size);
size;
a[i]);
voidshow_array(floata[],intsize){
%5.2f"
a[i]);
voidsort(floata[],intsize){
inti,min,j;
floattemp;
j++)
if(a[j]<
a[min])
temp=a[min];
a[min]=a[i];
a[i]=temp;
4、
(1)指针加减:
#defineSIZE10
inta[SIZE]={1,2,3,4,5,6,7,8,9,10};
int*pa,i;
pa=&
a[0];
//pa=a;
%d"
*pa);
//printf("
*(pa+1));
pa++;
(2)指针比较:
int*qa;
pa=qa=&
请输入%d整型数:
for(;
pa<
qa+SIZE;
pa++)
%d"
pa);
for(pa--;
qa<
=pa;
pa--)
5、两字符串相连:
string.h"
voidstr_cat(charstr1[],charstr2[]);
inti,j;
charstr1[160];
charstr2[80];
请输入第一个字符串:
gets(str1);
请输入第二个字符串:
gets(str2);
str_cat(str1,str2);
puts(str1);
voidstr_cat(charstr1[],charstr2[]){
i=0;
while(str1[i]!
='
\0'
)
i++;
j=0;
while(str2[j]!
){
str1[i]=str2[j];
j++;
str1[i]='
;
6、二维数组(a,b转置)
inti,j,b[2][3];
inta[3][2]={{1,2},{3,4},{5,6}};
2;
for(j=0;
3;
b[i][j]=a[j][i];
\na:
printf("
%5d"
a[i][j]);
\nb:
for(i=0;
b[i][j]);
7、输入一个二维数组并输出(指针)
intx[2][3];
scanf_s("
*(x+i)+j);
putchar('
\n'
%d"
*(*(x+i)+j));
putchar('
8、冒泡法排序一个数组
#definesize10
voidmaopao(inta[]);
inta[10];
请输入10个整数:
10;
maopao(a);
voidmaopao(inta[]){
inti,j,temp;
9;
i++){//进行9轮排序
9-i;
j++)//每轮进行9-i次交换
if(a[j]>
a[j+1])
{
temp=a[j];
a[j]=a[j+1];
//大的沉底,小的上浮
a[j+1]=temp;
}
排序结果:
%4d"
9、两数组A,B,要求A<
B,如
A:
4,7,9
B:
1,3,5,8,9
变换后
1,3,5
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]<
x)
B[j-1]=B[j++];
//寻找A[m-1]的插入位置
B[j-1]=x;
i=m-2;
while(i>
=0&
A[i]>
A[i+1]=A[i--];
//寻找B[0]的插入位置
A[i+1]=x;
voidmain()//这里主要介绍算法思想,主函数就简单写了
intA[3],B[5],i;
输入第一个数组:
i<
3;
A[i]);
\n输入第二个数组:
5;
B[i]);
ReArranger(A,B,3,5);
\n输出第一个数组:
A[i]);
\n\n"
输出第二个数组:
B[i]);
10、符合1+6+3=3+2+5=1+4+5有哪几组
A1
BC64
DEF到325
inta,b,c,d,e,f;
for(a=1;
a<
=6;
a++)
for(b=1;
b<
b++){
if(b==a)
continue;
for(c=1;
c<
c++){
if((c==a)||(c==b))
continue;
for(d=1;
d<
d++){
if((d==a)||(d==b)||(d==c))
continue;
for(e=1;
e<
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);
%d%d\n"
b,c);
%d%d%d\n"
d,e,f);
}
}
}
11、输入一串字符,升序排序,折半查找其中一字符
void*sortString(charunsort[],intlength){
for(inti=0;
length;
for(intj=i+1;
j++){
if(unsort[i]>
unsort[j]){
inttemp=unsort[j];
unsort[j]=unsort[i];
unsort[i]=temp;
chars1[50];
gets(s1);
charvalue;
%c"
value);
s1:
%s\n"
s1);
value:
%c\n"
value);
intlength=strlen(s1);
length:
%d\n"
length);
sortString(s1,length);
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)
该字符在已知字符串中,即在第%d个\n"
mid);
else
该字符不在已知字符串中\n"
12、100-300和500-700直接素数,m不被2到根号m直接任一整除
intisprime(intn)
if(n<
2)
return0;
for(inti=2;
n/2;
if(n%i==0)
return0;
return1;
voidmain()
inti,k=0;
for(i=100;
=300;
if(isprime(i))
%3d"
i);
k++;
if(k%10==0)printf("
for(i=500;
=700;
13、判断一个数是否是素数
math.h>
intm,i,k;
请输入一个整数:
m);
k=(int)sqrt(m);
for(i=2;
=k;
if(m%i==0)
break;
if(i>
k)
%d是素数。
m);
%d不是素数。
14、一个数是否含有数字5
stdbool.h>
boolis5Num(intnum){
inttemp=num%10;
while(temp!
=5&
num>
10){
num=num/10;
temp=num%10;
if(temp!
=5)
returnfalse;
returntrue;
intnum;
输入一个数:
num);
if(is5Num(num))
含5\n"
不含5\n"
15、一个排好序的数组,插入一个数
inta[11]={1,2,3,4,5,6,7,8,9,10};
插入前数组为:
10;
%3d"
请输入一个数:
if(num>
a[9])
a[10]=num;
else{
for(inti=0;
i++)
if(num<
a[i]){
for(intj=9;
j>
=i;
j--)
a[j+1]=a[j];
a[i]=num;
break;
插入后数组为:
=10;
16、牛顿迭代法:
doublefunc(doublex){//函数
returnx*x*x+2.0*x*x+3.0*x+4.0;
doublefunc1(doublex){//导函数
return3*x*x+4*x+3;
voidNewton(doublex0,doubleprecision){//迭代次数
doublex1;
intk;
if(func1(x0)==0.0){//若通过初值,函数返回为0
迭代过程中倒数为0!
return;
x1=x0-func(x0)/func1(x0);
//进行牛顿迭代计算
while(!
(func1(x1-x0)<
precision||fabs(func(x1))<
precision)){
x0=x1;
//准备下一次迭代
if(func1(x0)==0.0)//若通过初值,函数返回值为0
x1=x0-fu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 经典 语言 源代码