C语言程序设计实训指导书(5)

2019-05-26 18:14

return(s); }

/*两个数之积*/ int mul(int x,int y) {

int s; s=x*y; return(s); }

/*两个数之商*/ int div(int x,int y) {

int s; s=x+y; return(x/y); }

/*主函数*/ main() {int a,b; char ch; while(1)

{printf(“*************\\n”); printf(“*+----------add*\\n”); printf(“*------------sub*\\n”); printf(“**-----------mul*\\n”); printf(“*/-----------div*\\n”); printf(“*0----------exit\\n”); printf(“*************\\n”); printf(“input your choice:”); scanf(“%c”,&ch);

printf(“input two number:\\n”); scanf(“%d%d”,&a,&b); switch(ch) {

case ‘+’:k=add(a,b);break; case ‘-’:k=sub(a,b);break; case ‘*’:k=mul(a,b);break; case ‘/’:k=div(a,b);break; case ‘0’:exit(1);break; default:printf(“error!\\n”);}

printf(“%d%c%d=%d\\n”,a,ch,b,k); } } }

程序3:用递归法计算n!(通过函数的递归调用计算阶乘) 算法分析: 递归数学模型

#include “stdio.h” long power(int n)

{ long f;

if(n>1) f=power(n-1)*n; else f=1;

return(f); } main()

{ int n; long y;

printf(\ scanf(\ y=power(n);

printf(\ getch(); }

程序4:编写函数实现由小到大排序。 算法思路:

1.多个数据用数组存放,在主函数中接收数据。 2.把数据传送到用户自定义函数中。 3.在用户自定义函数中实现排序过程。 4.在主函数中输出排好序的数据。 void sort(int array[],int n) {

int i,j,k,t;

for(i=0;i

for(j=i+1;j

if(array[j]

t= array[k]; array[k]= array[i]; array[i]=t; } }

#include “stdio.h” main()

{int a[10],i;

printf(“enter the array:\\n”); for(i=0;i<10;i++) scanf(“%d”,&a[i]); sort(a,10);

printf(“the sorted array:\\n”); for(i=0;i<10;i++) printf(“%d”,a[i]); printf(“\\n”); }

实训题目

1、定义函数fun_a()判断某数是否为素数,若是素数返回值为1,不是则返回值为0。

2、编写一个加减乘除运算的小系统,当输入为0时退出,用函数实现各项功能。 ***************************** * 1---------加法 * * 2---------减法 * * 3---------乘法 * * 4---------除法 * * 0---------退出 * ***************************** 请输入你的选择(0-4):

3、编写函数实现求一维数组最大数的功能。 4、编写函数实现字符串连接功能。

第四部分 数据类型构造与模块化程序设计

(指针的应用)

[实训目的及要求] 通过本次实训内容,使学生对C语言指针有一个系统的认识,并在此基础上掌握指向简单变量的指针、指向数组的指针、指向字符串的指针的定义、引用及应用,同时指针与函数的结合应用是一个重点和难点,通过具体题目的训练能领会指针的本质,并应用在程序设计中。

程序1:指向简单变量的指针变量的应用。 main( )

{ int a,b,*p1,*p2;/*定义指针变量p1和p2*/ a=100; b=10;

p1=&a; p2=&b; /*为指针变量p1和p2赋一个指向*/ printf(\

printf(\输出指针变量p1和p2指向的变量的值*/ }

程序2:利用指向数组的指针变量输出数组的全部元素。 #include “stdio.h” main( )

{int *p,i,a[10];

p=&a[0]; /*把数组的首地址赋给指针变量p,使p指向一维数组*/

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

scanf(\通过指针变量接收数组元素的值*/ printf(\ p=&a[0];

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

printf(\利用指向一维数组的指针变量输出元素的值*/ }

程序3:指针的延伸应用,也可用数组名访问元素。 #include “stdio.h” main ( ) {int a[10]; int i;

for (i=0;i<10;i++) scanf(\ printf(\

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

printf(\ }

程序4:指针变量作为函数参数的应用--排序。 #include “stdio.h”

void sort(int *x,int n) {int i,j,k,t;

for (i=0;i

for (j=i+1;j

if (*(x+j)>*(x+k)) k=j; if (k!=i) { t=*(x+i);

*(x+i)=*(x+k); *(x+k)=t;} } } main ( ) { int i,a[10];

for (i=0;i<10;i++) scanf(\ sort(a,10);

for (i=0;i<10;i++) printf(\ }

程序5:有一个长度不大于40的字符串,已知其中共包含两个字符“A”,求处于两个字符“A”中间的字符个数,及这些字符。 算法分析:

1.定义字符数组a[40],b[40],计数器n=0; 2.接收字符数组a; /*用户自定义函数 */

{3.定位第一个字符?A?的位置;

4.从?A?的后一个字符开始为字符数组b赋值,同时计数器加一,直到遇到第二个字符?A?; 5.修正字符数组b;}

6.输出字符数组b和计数器n。 #include “stdio.h”

int sub(char *x,char *y) { int i,n=0;

for(i=0;*(x+i)!='\\0';i++) if(*(x+i)=='A') break; i=i+1;

while(*(x+i)!='A') { *(y+n)=*(x+i); n++;} *(y+n)='\\0'; return(n); } main( )

{ char a[40],b[40]; int l,sub(); gets(a); l=sub(a,b);

printf(\ printf(\ }

程序6:指向二维数组的指针变量变量的应用,利用行指针输出二维数组任一行任一列的元素的值。

#include “stdio.h” main ( ) {

int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int (*p)[4],i,j; p=a;

scanf(\

printf(\ }

程序7:返回指针值的函数,有一个长度不大于40的字符串,已知其中总包含两个字符?A?,编写函数求处于两个字符?A?中间的这些字符. 解决方法:

1.把求得的字符串在子函数中直接输出。

2.用数组的形式利用共用空间的方式带回到主调函数中。 算法思路:

1.接收字符串;

2.把?A?之间的字符复制到一个字符数组中; 3.把该字符数组的地址返回到主调函数中. #include “stdio.h” char *sub(char *x)


C语言程序设计实训指导书(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人力资源管理开题报告需要文献集锦

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: