C语言实验指导(不含答案) 下载本文

函数

(1) 求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数,用另一函数根据求出的最大公约数求最小公倍数。

①不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在主函数中输人,并传送给函数l,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。

②用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值不由函数带回。将最大公约数和最小公倍数都设为全局变量,在主函数中输出它们的值。

(2)写一个函数,输入一个n进制数m,输出相应的十进制数。 

例如:当n=5,m=3204时,则调用该函数输出429。因为(3*53+2*52+0*51+4*50=429)。

当n=2,m=10100时,则调用该函数输出20。 int n2dec (int n, int m) {… } (3)编写程序求:1K+2 K +3 K +…+n K ,假定n为6,k为4。要求使用函数的嵌套调用。设计一个主函数main( )完成数据的输出,设计一个求m n的函数,设计一个求1K+2 K +3 K +…+n K之和的函数。

(4) 用递归法求n阶勒让德多项式,递归公式为:

1 (n=0) Pn(x)= x (n=1) ((2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x))/n (n>1)

(5)写一函数convert,使给定的一个二维数组(3* 3)转置。 

void convert(int x[3][3]) {… }

*(6)已知abc+bcc=1333,其中 a、b、c均为一位整数,编写一个函数,求出a、b、c分别代表什么数字。

提示:对于a、b、c取值范围(0-9)内任意的组合,设计一个函数,判断给定方程abc+bcc=1333是否成立。

实验8 指针

一、 实验目的

1、通过实验进一步掌握指针的概念,会定义和使用指针变量;

2、能正确使用数组的指针和指向数组的指针变量; 3、能正确使用字符串的指针和指向字符串的指针变量;

二、实验内容和步骤 1、改错

(1)指出下面程序错误的原因. main( ) {

int x=10,y=5,*px,*py; px=py; px=&x; py=&y;

printf(\}

(2)下面的程序试图有如下运行结果:

which style you want to :

Capital ( c ) or uncapital ( a ):c ↙ COMPUTER

Which sytle you want to :

Capital ( c ) or uncapital ( a ) : u↙ computer

请调试下面的程序,使其有如上执行结果. #include main () {

char s*; char c;

printf(\printf(\

c=getchar();

if(c='c')strcpy(s,\else strcpy(s,\put(s); }

分析出错原因。

(3)下面的程序能获得上述运行结果吗 main() {

char *S=\char c;

printf(\printf(\c=getchar(); if(c='c') put(s); else {

s=\puts(s); } }

分析出错原因.

(4)设计一个C程序,用以测试下列各表达式的运算. (1) y=*px++ (2) y=*++py (3) y=(*py)++ (4) y=--*ppx++

(5)想使指针变量pt1指向a 和b 中的大者,pt2指向小者,以下程序能否实现此目的 swap(int *p1,int *p2) {

int *p;

p=p1;p1=p2;p2=p; }

main()

{

int a,b;

scanf(\pt1=&a;pt2=&b; if(a

printf(\}

上机调试此程序.如果不能实现题目要求,指出原因,并修改之.

2、程序填空:

(1)一维数组和指针。分别采用下标法、数组名法和指针法访问数组元素,求出10 个数中的最大值。

下标法:

# include void main()

{ int a[10],i,max; for ( )

scanf (“%d”, ); for ( ) if ( ) max=a[i]; printf (“MAX=%d\\n”,max); }

数组名法:

#include void main()

{ int a[10],i,max; for ( ) scanf (“%d”, a+i); for ( ) if ( ) max=*(a+i); printf (“MAX=%d\\n”,max); }

指针法:

#include void main() { int a[10]; int *p, max;