基础知识Word下载.docx
- 文档编号:18718956
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:25
- 大小:261.98KB
基础知识Word下载.docx
《基础知识Word下载.docx》由会员分享,可在线阅读,更多相关《基础知识Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
,sum);
解析:
这是一个典型的二重循环的例子,内层循环用来求解
,n=1,2,...10;
外层循环用来求解总和
。
本程序运行结果为:
12207030
3.打印出“水仙花数”
所谓“水仙花数”就是指1个三位数,各位数字的立方和等于该数本身。
例如
inti,a,b,c;
for(i=100;
1000;
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);
153370371407
4.计算式子
的和。
分析:
这也是一个典型的二重循环的问题,玄幻嵌套。
longt,sum=0;
for(j=1,t=1;
=i;
t=t*j;
Theresultis:
%ld"
4037913
5.找出50---100内的全部质数。
同样为二重的循环嵌套问题,内层循环用于判断质数,外城循环的作用是筛选出50-100的所有质数。
for(i=50;
=100;
for(j=2;
if(i%j==0)break;
if(i==j)printf("
//表明内层循环顺利结束,也就表明i为质数
53596167717379838997
6.函数的嵌套调用。
(计算式子
的值)
本题目可以直接用循环嵌套调用即可,但是用函数嵌套的话可读性更强。
intPOW(intn)
inti,j=1;
for(i=1;
=n;
j=j*n;
returnj;
intsum(intn)
inti,s=0;
s=s+POW(i);
returns;
intS;
S=sum(5);
%d"
S);
程序运行结果为:
Theresultis:
3413
7.求
得阶乘
采用递归调用实现。
longFact(intn)
if(n==0)
return1;
returnn*Fact(n-1);
intn;
longf;
Pleaseinputanumber:
n);
f=Fact(n);
Fact(%d)=%ld"
n,f);
8.选择排序演示。
(一维数组的应用)从小到大排列。
#defineMAX10
inti,j,t,sort[MAX],min;
Pleaseinputteninterger:
for(i=0;
MAX;
scanf("
sort[i]);
MAX-1;
min=sort[i];
for(j=i+1;
if(sort[j]<
min)
{
t=min;
min=sort[j];
sort[j]=t;
}
sort[i]=min;
比较结束,将min值放在第一个位置上。
Theresultofsortis:
sort[i]);
9、应用二维数组实现矩阵的转置运算。
inti,j,a[3][4],b[4][3];
Pleaseinput3x4matrix\n"
3;
for(j=0;
4;
scanf("
a[i][j]);
b[i][j]=a[j][i];
Thereviermatrixis\n"
b[i][j]);
10、矩阵的乘法
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(k=0;
k<
k++)
C[i][j]=/*C[i][j]+*/A[i][k]*B[k][j];
Theresultis\n"
C[i][j]);
11、用指针变量作为函数的参数解决两个变量的内容对调问题。
intswap(int*x,int*y)
intt;
t=*x;
*x=*y;
*y=t;
inta=1,b=10;
a=%d,b=%d\n"
a,b);
swap(&
a,&
b);
11.输入X,Y,Z三个整数,编写一个程序使它们按照从小到大的顺序输出。
voidswap(int*x,int*y)
*x=*y;
*y=t;
voidexchange(int*p1,int*p2,int*p3)
if(*p1>
*p2)
swap(p1,p2);
if(*p2>
*p3)
swap(p2,p3);
intx,y,z;
%d,%d,%d"
x,&
y,&
z);
exchange(&
%d,%d,%d\n"
x,y,z);
12、用指针引用数组元素的方法输出一个数组中的元素。
inta[5],i,*p;
p=a;
5;
p++);
*(p++));
13,编写函数,实现“从10个数中找出最大值和最小值”,并给出测试函数。
intmax,min;
voidmax_min_value(intarray[],intn)
int*p,*array_end;
array_end=array+n;
max=min=*array;
for(p=array+1;
p<
array_end;
p++)
if(*p>
max)
max=*p;
if(*p<
min=*p;
inti,number[10];
Input10intergernumbers:
10;
number[i]);
max_min_value(number,10);
\nmax=%d,min=%d\n"
max,min);
getch();
14.编写一个函数实现矩阵的转置运算。
voidinputmatrix(int(*a)[4],int,int);
voidoutputmatrix(int(*b)[4],int,int);
voidreverse(int(*a)[4],int(*b)[3]);
inta[3][4],b[4][3];
Pleaseinput3x4matrix:
inputmatrix(a,3,4);
reverse(a,b);
Thereviermatrixis:
outputmatrix(b,4,3);
voidinputmatrix(int(*a)[4],intn,intm)
n;
m;
{
*(a+i)+j);
}
voidoutputmatrix(int(*b)[4],intn,intm)
*(b+i)+j);
voidreverse(int(*a)[4],int(*b)[3])
b[i][j]=a[j][i];
15、采用一次性输入输出的方法进行字符串操作。
intmain()
charstr[20];
%s"
str);
16、编写一个函数,要求把一个字符串的内容复制到另一个字符串中。
copy(char*s,char*q);
char*str,strcp[20],*p;
str="
helloworld!
"
;
p=strcp;
copy(str,p);
strcp);
copy(char*s,char*q)
inti=0;
while(*(s+i))
*q=*(s+i);
i++;
q++;
*q='
\0'
17、指向函数的指针演示。
intmax(inta,intb);
int(*pmax)();
pmax=max;
input2interger:
%d%d"
y);
z=(*pmax)(x,y);
max=%d"
z);
intmax(inta,intb)
if(a>
b)
returna;
returnb;
18、返回指针的函数。
(返回值为指针的函数演示)
intmaxp(int*p,intn);
inta[10],*max,i;
input10interger:
a[i]);
max=maxp(a,10);
Themaxnumis:
*max);
intmaxp(int*p,intn)
inti,*max;
max=p;
if(*(p+i)>
*max)
max=p+i;
returnmax;
19、对学生信息记录按照学号从小到大顺序排序。
(结构体应用)
对一般的数据类型数组,可以选用“冒泡排序”,也可以选择排序的算法。
这些算法对于结构体数组同样适用。
记住在结构体应用中定义后“;
“必不可少啊。
#defineMAX6
structstu
intnum;
charname[5];
};
structstusort[MAX],min,t;
Pleaseinputsixstudentsrecords:
number:
sort[i].num);
name:
sort[i].name);
if(sort[j].num<
min.num)
min=sort[j];
sort[j]=t;
sort[i]=min;
%d,%s\n"
sort[i].num,sort[i].name);
20、顺序表的应用。
(插入,删除,初始化顺序表)
#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);
length=0;
listsize=maxsize;
voidinsertelem(Sqlist*L,inti,elemtypeitem)
elemtype*base,*insertptr,*p;
if(i<
1||i>
length+1)
if(L->
length>
=L->
listsize)
base=(elemtype*)realloc(L->
elem,(L->
listsize+10)*sizeof(elemtype));
L->
elem=base;
listsize=L->
listsize+100;
insertptr=&
(L->
elem[i-1]);
for(p=&
elem[L->
length-1]);
insertptr;
p--)
*(p+1)=*p;
*insertptr=item;
length++;
voiddelelem(Sqlist*L,inti)
elemtype*delitem,*q;
length)
delitem=&
q=L->
elem+L->
length-1;
for(++delitem;
delitem<
=q;
++delitem)*(delitem-1)=*delitem;
length--;
Sqlistl;
inti;
iniSqlist(&
l);
15;
insertelem(&
l,i+1,i+1);
}
\nThecontentofthelistis\n"
l.length;
l.elem[i]);
delelem(&
l,5);
\nDeletethefifthelement\n"
21、将一个数插入到有序的数列中,要求插入后仍然保持数列的有序性。
完整的实验程序:
stdafx.h"
iostream>
conio.h>
math.h>
usingnamespacestd;
#defineN10
voidselectsort(intb[],intn)
inti,j,k,temp;
for(i=0;
=n-2;
k=i;
=n-1;
if(b[j]<
b[k])k=j;
if(k!
=i)
temp=b[i];
b[i]=b[k];
b[k]=temp;
voidoutput(intb[],intn)
cout<
<
endl;
cout<
b[i]<
"
voidmain()
inti,x,n,a[N];
pleaseinputthenumberofintergers:
cin>
>
pleaseinput"
n<
intergers:
cin>
a[i];
selectsort(a,n);
output(a,n);
pleaseinputthenumberwhichyouwanttosort:
x;
i=n-1;
while((i>
=0)&
&
(x<
a[i]))
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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基础知识
![提示](https://static.bdocx.com/images/bang_tan.gif)