1、基础知识1,判断一个正整数是否为质数。#include int main(void) int a,i; printf(please input a number:n); scanf(%d,&a); for (i=2;ia;i+) if(a%i=0) break; if(i=a|1=a) printf(%d is a prime numbern,a); else printf(%d is not a prime numbern,a); getchar(); return 0;2循环的嵌套,计算式子的值。#include int main(void) int i,j; long t=5,sum=0
2、; for(i=1;i=10;i+) for(j=1;ji;j+) t=t*5; sum=sum+t; t=5; printf(The result is n%ld,sum); getchar(); return 0;解析:这是一个典型的二重循环的例子,内层循环用来求解,n=1,2,.10;外层循环用来求解总和。本程序运行结果为:122070303.打印出“水仙花数” 所谓“水仙花数”就是指1个三位数,各位数字的立方和等于该数本身。例如。#include int main(void) int i,a,b,c; for(i=100;i1000;i+) a=i/100; b=i%100/10; c
3、=i%100%10; if(i=a*a*a+b*b*b+c*c*c) printf( %d ,i); getchar(); return 0;本程序运行结果为:153 370 371 4074.计算式子的和。分析:这也是一个典型的二重循环的问题,玄幻嵌套。#include int main(void) int i,j; long t,sum=0; for(i=1;i=10;i+) for(j=1,t=1;j=i;j+) t=t*j; sum=sum+t; printf(The result is: %ld,sum); getchar(); return 0;本程序运行结果为:The resul
4、t is: 40379135.找出50-100内的全部质数。分析:同样为二重的循环嵌套问题,内层循环用于判断质数,外城循环的作用是筛选出50-100的所有质数。#include int main(void) int i,j; for(i=50;i=100;i+) for(j=2;ji;j+) if(i%j=0) break; if(i=j) printf( %d ,i); /表明内层循环顺利结束,也就表明i为质数 getchar(); return 0;本程序运行结果为:53 59 61 67 71 73 79 83 89 976.函数的嵌套调用。(计算式子的值)解析:本题目可以直接用循环嵌套
5、调用即可,但是用函数嵌套的话可读性更强。#include int POW(int n) int i,j=1; for (i=1;i=n;i+) j=j*n; return j;int sum(int n) int i,s=0; for(i=1;i=n;i+) s=s+POW(i); return s;int main(void) int S; S=sum(5); printf(The result is: %d,S); getchar(); return 0;程序运行结果为: The result is:34137.求得阶乘采用递归调用实现。#include long Fact(int n)
6、if(n=0) return 1; else return n*Fact(n-1);int main(void) int n; long f; printf(Please input a number:n); scanf(%d,&n); f=Fact(n); printf(Fact(%d)=%ld,n,f); getchar(); return 0;8.选择排序演示。(一维数组的应用)从小到大排列。#include #define MAX 10int main(void) int i,j,t,sortMAX,min; printf(Please input ten interger:n); f
7、or(i=0;iMAX;i+) scanf(%d,&sorti); for(i=0;iMAX-1;i+) min=sorti; for(j=i+1;jMAX;j+) if(sortjmin) t=min; min=sortj; sortj=t; sorti=min; 比较结束,将min值放在第一个位置上。 printf(The result of sort is:n); for(i=0;iMAX;i+) printf( %d ,sorti); getchar(); return 0;9、应用二维数组实现矩阵的转置运算。#include int main(void) int i,j,a34,b4
8、3; printf(Please input 3x4 matrixn); for(i=0;i3;i+) for(j=0;j4;j+) scanf(%d,aij); for(i=0;i4;i+) for(j=0;j3;j+) bij=aji; printf(The revier matrix isn); for(i=0;i4;i+) for(j=0;j3;j+) printf(%d,bij); printf(n); getchar(); return 0;10、矩阵的乘法#include int main(void) int A33=(1,2,0),(2,3,5),(1,1,1); int B3
9、3=(2,2,3),(1,3,1),(0,0,1); int C33/*=(0,0,0),(0,0,0),(0,0,0)*/; int i,j,k; for(i=0;i3;i+) for(j=0;j3;j+) for(k=0;k3;k+) Cij=/*Cij+*/Aik*Bkj; printf(The result isn); for(i=0;i3;i+) for(j=0;j3;j+) printf( %d ,Cij); printf(n); getchar(); return 0;11、用指针变量作为函数的参数解决两个变量的内容对调问题。#include int swap(int *x,in
10、t *y) int t; t=*x; *x=*y; *y=t;int main(void) int a=1,b=10; printf(a=%d,b=%dn,a,b); swap(&a,&b); printf(a=%d,b=%dn,a,b); getchar(); return 0;11.输入X,Y,Z三个整数,编写一个程序使它们按照从小到大的顺序输出。#include void swap(int *x,int *y) int t; t=*x;*x=*y;*y=t;void exchange(int *p1,int *p2,int *p3) if(*p1*p2) swap(p1,p2); if(
11、*p2*p3) swap(p2,p3); if(*p1*p2) swap(p1,p2);int main(void) int x,y,z; scanf(%d,%d,%d,&x,&y,&z); exchange(&x,&y,&z); printf(%d,%d,%dn,x,y,z); getchar(); return 0;12、用指针引用数组元素的方法输出一个数组中的元素。#include int main(void) int a5,i,*p; p=a; for(i=0;i5;i+) scanf(%d,p+); p=a; for(i=0;i5;i+) printf( %d ,*(p+); get
12、char(); return 0;13,编写函数,实现“从10个数中找出最大值和最小值”,并给出测试函数。#include int max,min;void max_min_value(int array,int n) int *p,*array_end; array_end=array+n; max=min=*array; for(p=array+1;pmax) max=*p; else if(*pmin) min=*p; int main(void) int i,number10; printf(Input 10 interger numbers:n); for(i=0;i10;i+) s
13、canf(%d,&numberi); max_min_value(number,10); printf(nmax=%d,min=%dn,max,min); getch(); return 0;14.编写一个函数实现矩阵的转置运算。#include void inputmatrix(int (*a)4,int,int);void outputmatrix(int (*b)4,int ,int);void reverse(int (*a)4,int (*b)3);int main(void) int a34,b43; printf(Please input 3x4 matrix:n); input
14、matrix(a,3,4); reverse(a,b); printf(The revier matrix is:n); outputmatrix(b,4,3); getch(); return 0;void inputmatrix(int (*a)4,int n,int m) int i,j; for(i=0;in;i+) for(j=0;jm;j+) scanf(%d,*(a+i)+j); void outputmatrix(int (*b)4,int n,int m) int i,j; for(i=0;in;i+) for(j=0;jm;j+) printf( %d ,*(b+i)+j)
15、; printf(n); void reverse(int (*a)4,int (*b)3) int i,j; for(i=0;i4;i+) for(j=0;j3;j+) bij=aji; 15、采用一次性输入输出的方法进行字符串操作。#include int main() char str20; scanf(%s,str); printf(%s,str); getch(); return 0;16、编写一个函数,要求把一个字符串的内容复制到另一个字符串中。#include copy(char *s,char *q);int main() char *str,strcp20,*p; str=h
16、ello world!; p=strcp; copy(str,p); printf(%s,strcp); getch(); return 0;copy(char *s,char *q) int i=0; while(*(s+i) *q=*(s+i); i+; q+; *q=0;17、指向函数的指针演示。#include int main() int max(int a,int b); int (*pmax)(); int x,y,z; pmax=max; printf(input 2 interger:n); scanf(%d %d,&x,&y); z=(*pmax)(x,y); printf
17、(max=%d,z); getch(); return 1;int max(int a,int b) if(ab) return a; else return b;18、返回指针的函数。(返回值为指针的函数演示)#include int main() int maxp(int *p,int n); int a10,*max,i; printf(input 10 interger:n); for(i=0;i10;i+) scanf(%d,&ai); max=maxp(a,10); printf(The maxnum is: %d ,*max); getch(); return 1;int max
18、p(int *p,int n) int i,*max; max=p; for(i=0;i*max) max=p+i; return max;19、对学生信息记录按照学号从小到大顺序排序。(结构体应用) 对一般的数据类型数组,可以选用“冒泡排序”,也可以选择排序的算法。这些算法对于结构体数组同样适用。记住在结构体应用中定义后“;“必不可少啊。#include #define MAX 6struct stu int num; char name5;int main(void) int i,j; struct stu sortMAX,min,t; printf(Please input six st
19、udents records:n); for(i=0;iMAX;i+) printf(number:); scanf(%d,&sorti.num); printf(name:); scanf(%s,&sorti.name); for(i=0;iMAX-1;i+) min=sorti; for(j=i+1;jMAX;j+) if(sortj.nummin.num) t=min;min=sortj;sortj=t; sorti=min; printf(The result of sort is:n); for(i=0;iMAX;i+) printf(%d,%sn,sorti.num,sorti.n
20、ame); getch(); return 0;20、顺序表的应用。(插入,删除,初始化顺序表)#include #include conio.h#define maxsize 10typedef int elemtype;typedef struct int *elem; int length; int listsize;Sqlist;void iniSqlist(Sqlist *L) L-elem=(int *)malloc(maxsize*sizeof(elemtype); if(!L-elem) exit(0); L-length=0; L-listsize=maxsize;void
21、insertelem(Sqlist *L,int i,elemtype item) elemtype *base,*insertptr,*p; if(iL-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-elemi-1); for(p=&(L-elemL-length-1);plength+;void delelem(Sq
22、list *L,int i) elemtype *delitem,*q; if(iL-length) exit(0); delitem=&(L-elemi-1); q=L-elem+L-length-1; for(+delitem;delitemlength-;int main(void) Sqlist l; int i; iniSqlist(&l); for(i=0;i15;i+) insertelem(&l,i+1,i+1); printf(nThe content of the list isn); for(i=0;il.length;i+) printf(%d,l.elemi); de
23、lelem(&l,5); printf(nDelete the fifth elementn); for(i=0;il.length;i+) printf(%d,l.elemi); getch(); return 0; 21、将一个数插入到有序的数列中,要求插入后仍然保持数列的有序性。完整的实验程序:#include stdafx.h#include #include #include #include using namespace std;#define N 10void selectsort(int b,int n) int i,j,k,temp; for (i=0;i=n-2;i+)
24、k=i; for(j=i+1;j=n-1;j+) if(bjbk) k=j; if(k!=i) temp=bi;bi=bk;bk=temp; void output(int b,int n) int i; coutendl; for(i=0;in;i+) coutbi ; coutendl;void main() int i,x,n,aN; coutplease input the number of intergers: n; coutplease input n intergers: endl; for(i=0;iai; selectsort(a,n); output(a,n); cout
25、please input the number which you want to sort:x; i=n-1; while(i=0)&(xai) ai+1=ai; i-; ai+1=x; output(a,n+1);实验结果如下:22、猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上,将剩下的桃子吃掉了一半又多吃了一个;以后每天早上都吃了前一天的剩下的一半零一个;到第10天早上就只剩下一个桃子了。编写程序,求第一天共摘了多少个桃子?分析:设第一天的桃子数为x1,第二天的桃子树为x2.即前一天的桃子树是后一天桃子树加1后的2倍。由此可得:第9天得桃子数是第10天得桃子数加1后的2倍。 第8天得桃子数是第9天得桃子数加1后的2倍。 .
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1