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〈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〈B,如
A:
4,7,9
B:
1,3,5,8,9
变换后
A:
1,3,5
B:
4,7,8,9,9
#includeh〉
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(jB[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
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〈stdio。
h〉
void*sortString(charunsort[],intlength){
for(inti=0;ifor(intj=i+1;jif(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
intisprime(intn)
{
if(n〈2)
return0;
for(inti=2;iif(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
#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〈stdio。
h〉
#include〈stdbool。
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、一个排好序的数组,插入一个数
#includevoidmain(){
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++)
if(numfor(intj=9;j〉=i;j--)
a[j+1]=a[j];
a[i]=num;
break;
}
}
printf(”插入后数组为:
\n");
for(inti=0;i〈=10;i++)
printf("%3d",a[i]);
printf(”\n”);
}
16、牛顿迭代法:
#include〈stdio.h〉
#include