基础知识.docx

上传人:b****6 文档编号:5731896 上传时间:2022-12-31 格式:DOCX 页数:25 大小:261.98KB
下载 相关 举报
基础知识.docx_第1页
第1页 / 共25页
基础知识.docx_第2页
第2页 / 共25页
基础知识.docx_第3页
第3页 / 共25页
基础知识.docx_第4页
第4页 / 共25页
基础知识.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

基础知识.docx

《基础知识.docx》由会员分享,可在线阅读,更多相关《基础知识.docx(25页珍藏版)》请在冰豆网上搜索。

基础知识.docx

基础知识

1,判断一个正整数是否为质数。

#include

intmain(void)

{

inta,i;

printf("pleaseinputanumber:

\n");

scanf("%d",&a);

for(i=2;i

{

if(a%i==0)break;

}

if(i==a||1==a)

printf("%disaprimenumber\n",a);

else

printf("%disnotaprimenumber\n",a);

getchar();

return0;

}

 

2循环的嵌套,计算式子

的值。

#include

intmain(void)

{

inti,j;

longt=5,sum=0;

for(i=1;i<=10;i++)

{

for(j=1;j

t=t*5;

sum=sum+t;

t=5;

}

printf("Theresultis\n%ld",sum);

getchar();

return0;

}

解析:

这是一个典型的二重循环的例子,内层循环用来求解

,n=1,2,...10;外层循环用来求解总和

本程序运行结果为:

12207030

3.打印出“水仙花数”

所谓“水仙花数”就是指1个三位数,各位数字的立方和等于该数本身。

例如

#include

intmain(void)

{

inti,a,b,c;

for(i=100;i<1000;i++)

{

a=i/100;

b=i%100/10;

c=i%100%10;

if(i==a*a*a+b*b*b+c*c*c)

printf("%d",i);

}

getchar();

return0;

}

本程序运行结果为:

153370371407

 

4.计算式子

的和。

分析:

这也是一个典型的二重循环的问题,玄幻嵌套。

#include

intmain(void)

{

inti,j;

longt,sum=0;

for(i=1;i<=10;i++)

{

for(j=1,t=1;j<=i;j++)

t=t*j;

sum=sum+t;

}

printf("Theresultis:

%ld",sum);

getchar();

return0;

}

本程序运行结果为:

Theresultis:

4037913

 

5.找出50---100内的全部质数。

分析:

同样为二重的循环嵌套问题,内层循环用于判断质数,外城循环的作用是筛选出50-100的所有质数。

#include

intmain(void)

{

inti,j;

for(i=50;i<=100;i++)

{

for(j=2;j

if(i%j==0)break;

if(i==j)printf("%d",i);//表明内层循环顺利结束,也就表明i为质数

}

getchar();

return0;

}

本程序运行结果为:

53596167717379838997

6.函数的嵌套调用。

(计算式子

的值)

解析:

本题目可以直接用循环嵌套调用即可,但是用函数嵌套的话可读性更强。

#include

intPOW(intn)

{

inti,j=1;

for(i=1;i<=n;i++)

j=j*n;

returnj;

}

intsum(intn)

{

inti,s=0;

for(i=1;i<=n;i++)

s=s+POW(i);

returns;

}

intmain(void)

{

intS;

S=sum(5);

printf("Theresultis:

%d",S);

getchar();

return0;

}

程序运行结果为:

Theresultis:

3413

7.求

得阶乘

采用递归调用实现。

#include

longFact(intn)

{

if(n==0)

return1;

else

returnn*Fact(n-1);

}

intmain(void)

{

intn;

longf;

printf("Pleaseinputanumber:

\n");

scanf("%d",&n);

f=Fact(n);

printf("Fact(%d)=%ld",n,f);

getchar();

return0;

}

8.选择排序演示。

(一维数组的应用)从小到大排列。

#include

#defineMAX10

intmain(void)

{

inti,j,t,sort[MAX],min;

printf("Pleaseinputteninterger:

\n");

for(i=0;i

scanf("%d",&sort[i]);

for(i=0;i

{

min=sort[i];

for(j=i+1;j

if(sort[j]

{

t=min;

min=sort[j];

sort[j]=t;

}

sort[i]=min;比较结束,将min值放在第一个位置上。

}

printf("Theresultofsortis:

\n");

for(i=0;i

printf("%d",sort[i]);

getchar();

return0;

}

 

9、应用二维数组实现矩阵的转置运算。

#include

intmain(void)

{

inti,j,a[3][4],b[4][3];

printf("Pleaseinput3x4matrix\n");

for(i=0;i<3;i++)

for(j=0;j<4;j++)

scanf("%d",a[i][j]);

for(i=0;i<4;i++)

for(j=0;j<3;j++)

b[i][j]=a[j][i];

printf("Thereviermatrixis\n");

for(i=0;i<4;i++)

{

for(j=0;j<3;j++)

printf("%d",b[i][j]);

printf("\n");

}

getchar();

return0;

}

10、矩阵的乘法

#include

intmain(void)

{

intA[3][3]={(1,2,0),(2,3,5),(1,1,1)};

intB[3][3]={(2,2,3),(1,3,1),(0,0,1)};

intC[3][3]/*={(0,0,0),(0,0,0),(0,0,0)}*/;

inti,j,k;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

for(k=0;k<3;k++)

{

C[i][j]=/*C[i][j]+*/A[i][k]*B[k][j];

}

printf("Theresultis\n");

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%d",C[i][j]);

printf("\n");

}

getchar();

return0;

}

 

11、用指针变量作为函数的参数解决两个变量的内容对调问题。

#include

intswap(int*x,int*y)

{

intt;

t=*x;

*x=*y;

*y=t;

}

intmain(void)

{

inta=1,b=10;

printf("a=%d,b=%d\n",a,b);

swap(&a,&b);

printf("a=%d,b=%d\n",a,b);

getchar();

return0;

}

 

11.输入X,Y,Z三个整数,编写一个程序使它们按照从小到大的顺序输出。

#include

voidswap(int*x,int*y)

{

intt;

t=*x;*x=*y;*y=t;

}

voidexchange(int*p1,int*p2,int*p3)

{

if(*p1>*p2)

swap(p1,p2);

if(*p2>*p3)

swap(p2,p3);

if(*p1>*p2)

swap(p1,p2);

}

intmain(void)

{

intx,y,z;

scanf("%d,%d,%d",&x,&y,&z);

exchange(&x,&y,&z);

printf("%d,%d,%d\n",x,y,z);

getchar();

return0;

}

12、用指针引用数组元素的方法输出一个数组中的元素。

#include

intmain(void)

{

inta[5],i,*p;

p=a;

for(i=0;i<5;i++)

scanf("%d",p++);

p=a;

for(i=0;i<5;i++)

printf("%d",*(p++));

getchar();

return0;

}

13,编写函数,实现“从10个数中找出最大值和最小值”,并给出测试函数。

#include

intmax,min;

voidmax_min_value(intarray[],intn)

{

int*p,*array_end;

array_end=array+n;

max=min=*array;

for(p=array+1;p

{

if(*p>max)

max=*p;

else

if(*p

min=*p;

}

}

intmain(void)

{

inti,number[10];

printf("Input10intergernumbers:

\n");

for(i=0;i<10;i++)

scanf("%d",&number[i]);

max_min_value(number,10);

printf("\nmax=%d,min=%d\n",max,min);

getch();

return0;

}

14.编写一个函数实现矩阵的转置运算。

#include

voidinputmatrix(int(*a)[4],int,int);

voidoutputmatrix(int(*b)[4],int,int);

voidreverse(int(*a)[4],int(*b)[3]);

intmain(void)

{

inta[3][4],b[4][3];

printf("Pleaseinput3x4matrix:

\n");

inputmatrix(a,3,4);

reverse(a,b);

printf("Thereviermatrixis:

\n");

outputmatrix(b,4,3);

getch();

return0;

}

voidinputmatrix(int(*a)[4],intn,intm)

{

inti,j;

for(i=0;i

{

for(j=0;j

{

scanf("%d",*(a+i)+j);

}

}

}

voidoutputmatrix(int(*b)[4],intn,intm)

{

inti,j;

for(i=0;i

{

for(j=0;j

{

printf("%d",*(b+i)+j);

}

printf("\n");

}

}

voidreverse(int(*a)[4],int(*b)[3])

{

inti,j;

for(i=0;i<4;i++)

{

for(j=0;j<3;j++)

b[i][j]=a[j][i];

}

}

15、采用一次性输入输出的方法进行字符串操作。

#include

intmain()

{

charstr[20];

scanf("%s",str);

printf("%s",str);

getch();

return0;

}

16、编写一个函数,要求把一个字符串的内容复制到另一个字符串中。

#include

copy(char*s,char*q);

intmain()

{

char*str,strcp[20],*p;

str="helloworld!

";

p=strcp;

copy(str,p);

printf("%s",strcp);

getch();

return0;

}

copy(char*s,char*q)

{

inti=0;

while(*(s+i))

{

*q=*(s+i);

i++;

q++;

}

*q='\0';

}

17、指向函数的指针演示。

#include

intmain()

{

intmax(inta,intb);

int(*pmax)();

intx,y,z;

pmax=max;

printf("input2interger:

\n");

scanf("%d%d",&x,&y);

z=(*pmax)(x,y);

printf("max=%d",z);

getch();

return1;

}

intmax(inta,intb)

{

if(a>b)

returna;

else

returnb;

}

 

18、返回指针的函数。

(返回值为指针的函数演示)

#include

intmain()

{

intmaxp(int*p,intn);

inta[10],*max,i;

printf("input10interger:

\n");

for(i=0;i<10;i++)

{

scanf("%d",&a[i]);

}

max=maxp(a,10);

printf("Themaxnumis:

%d",*max);

getch();

return1;

}

intmaxp(int*p,intn)

{

inti,*max;

max=p;

for(i=0;i

{

if(*(p+i)>*max)

max=p+i;

}

returnmax;

}

 

19、对学生信息记录按照学号从小到大顺序排序。

(结构体应用)

对一般的数据类型数组,可以选用“冒泡排序”,也可以选择排序的算法。

这些算法对于结构体数组同样适用。

记住在结构体应用中定义后“;“必不可少啊。

#include

#defineMAX6

structstu

{

intnum;

charname[5];

};

intmain(void)

{

inti,j;

structstusort[MAX],min,t;

printf("Pleaseinputsixstudentsrecords:

\n");

for(i=0;i

{

printf("number:

");

scanf("%d",&sort[i].num);

printf("name:

");

scanf("%s",&sort[i].name);

}

for(i=0;i

{

min=sort[i];

for(j=i+1;j

if(sort[j].num

{

t=min;min=sort[j];sort[j]=t;

}

sort[i]=min;

}

printf("Theresultofsortis:

\n");

for(i=0;i

printf("%d,%s\n",sort[i].num,sort[i].name);

getch();

return0;

}

 

20、顺序表的应用。

(插入,删除,初始化顺序表)

#include

#include"conio.h"

#definemaxsize10

typedefintelemtype;

typedefstruct

{

int*elem;

intlength;

intlistsize;

}Sqlist;

voidiniSqlist(Sqlist*L)

{

L->elem=(int*)malloc(maxsize*sizeof(elemtype));

if(!

L->elem)

exit(0);

L->length=0;

L->listsize=maxsize;

}

voidinsertelem(Sqlist*L,inti,elemtypeitem)

{

elemtype*base,*insertptr,*p;

if(i<1||i>L->length+1)

exit(0);

if(L->length>=L->listsize)

{

base=(elemtype*)realloc(L->elem,(L->listsize+10)*sizeof(elemtype));

L->elem=base;

L->listsize=L->listsize+100;

}

insertptr=&(L->elem[i-1]);

for(p=&(L->elem[L->length-1]);p

*(p+1)=*p;

*insertptr=item;

L->length++;

}

voiddelelem(Sqlist*L,inti)

{

elemtype*delitem,*q;

if(i<1||i>L->length)

exit(0);

delitem=&(L->elem[i-1]);

q=L->elem+L->length-1;

for(++delitem;delitem<=q;++delitem)*(delitem-1)=*delitem;

L->length--;

}

intmain(void)

{

Sqlistl;

inti;

iniSqlist(&l);

for(i=0;i<15;i++)

{

insertelem(&l,i+1,i+1);

}

printf("\nThecontentofthelistis\n");

for(i=0;i

printf("%d",l.elem[i]);

delelem(&l,5);

printf("\nDeletethefifthelement\n");

for(i=0;i

printf("%d",l.elem[i]);

getch();

return0;

}

 

21、将一个数插入到有序的数列中,要求插入后仍然保持数列的有序性。

完整的实验程序:

#include"stdafx.h"

#include

#include

#include

#include

usingnamespacestd;

#defineN10

voidselectsort(intb[],intn)

{

inti,j,k,temp;

for(i=0;i<=n-2;i++)

{

k=i;

for(j=i+1;j<=n-1;j++)

if(b[j]

if(k!

=i)

{

temp=b[i];b[i]=b[k];b[k]=temp;

}

}

}

voidoutput(intb[],intn)

{

inti;

cout<

for(i=0;i

cout<

cout<

}

voidmain()

{

inti,x,n,a[N];

cout<<"pleaseinputthenumberofintergers:

"<

cin>>n;

cout<<"pleaseinput"<

"<

for(i=0;i

{

cin>>a[i];

}

selectsort(a,n);

output(a,n);

cout<<"pleaseinputthenumberwhichyouwanttosort:

"<

cin>>x;

i=n-1;

while((i>=0)&&(x

{

a[i+1]=a[i];

i--;

}

a[i+1]=x;

output(a,n+1);

}

实验结果如下:

22、猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上,将剩下的桃子吃掉了一半又多吃了一个;以后每天早上都吃了前一天的剩下的一半零一个;到第10天早上就只剩下一个桃子了。

编写程序,求第一天共摘了多少个桃子?

分析:

设第一天的桃子数为x1,第二天的桃子树为x2.即前一天的桃子树是后一天桃子树加1后的2倍。

由此可得:

第9天得桃子数是第10天得桃子数加1后的2倍。

第8天得桃子数是第9天得桃子数加1后的2倍。

.....

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1