
4.1按照以下步骤确定并纠正错误或不合理之处. #include void main(void){int x,n,s; s =幂(x,n))幂(y){int i,p = 1;对于(i = 1; i <= n; ++ i)p = p * y;}; #包括 int功率(int,int); int main(void)(int power(int x,int n); int x = 2,n = 4; printf(“ \ ns =%d”,power(x,n));} int power(int x, int n){int i,p = 1; for(i = 1; i <= n; ++ i)p = p * x; return(p);} 4.2编写一个函数来查找给定的所有因子例如,72 = 2 * 2 * 2 * 3 * 3.参考程序代码如下: #include 无效因子(整数){int i,factor; for(i = 2; i <= number; i ++){如果(number%i == 0){factor = i; break;}} printf(“%d *”,factor); if(number!= i){number = number / i; factor(number);} else {for(i = 0; i <2; i ++){putchar('\ b'); putchar('');}}} int main(void){int aa; printf(“ \ n请输入数字\ n”); scanf(“%d”,&aa); printf(“%d =”,aa);因子(aa);返回0;} 4.3写入输出执行以下程序后的结果.

(1)#include void fun(int,int); void main(void){int i,j,x,y,n,g;我= 2; j = 3; g = x = 5; y = 9; n = 7;好玩(n,6); printf(“ g =%d; i =%d; j =%d; \ n”,g,i,j); printf(“ x =%d; y =%d; \ n”,x,y); fun(n,6);} void fun(int i,int j){int x,y,g; g = 8; x = 7; y = 2; printf(“ g =%d; i =%d; j =%d; \ n”,g,i,j); printf(“ x =%d; y =%d; \ n”,x,y); x = 8; y = 6;}(2)#include void incx(void){int x = 0; printf(“ x =%d \ t”,+ + x);} void incy(void){static int y = 0; printf(“ \ ny =%d \ n”,++ y);} void main(void){incx(); incy(); incx(); incy(); incx(); incy();}(3)#include int ran(void){static int see = 1234,n; printf(“(参见=%4d)”参见);参见=(参见+ 25543)%7415; n =(参见%1000)/ 10; return(n);)int rand(void){int see = 1234,n; printf(“(参见=%5d)”,参见);参见=(参见+ 25543)%7415; n =(参见%1000)/ 10; return(n);} void main(void){int i,j; for(i = 0; i <3; i ++){for(j = 0; j <2; j ++)printf(“%3d”,ran()); printf(“ \ n”);} for(i = 0; i <3; i ++){for(j = 0; j <2; j ++)printf(“%3d”,rand()); printf(“ \ n”);}} 4.4编写将整数转换为字符串的函数itoa.

参考程序代码如下. #include int main(void){void itoa(int k);我printf(“ \ n请输入一个整数: ”); scanf(“%d”,&i);伊托(i); return 0;} void itoa(int k){int k1,n = 0;字符ch1,ch2,ch3,ch4,ch5;如果(k <0){k1 = -k; printf(“-”);} elsek1 = k; ch5 = k1 / 10000;如果(ch5> 0)n ++; ch5 + ='0'; ch4 =(k1000)/ 1000;如果(ch4> 0)n ++; ch4 + ='0'; ch3 =(k100)/ 100;如果(ch3> 0)n ++; ch3 + ='0'; ch2 =(k10)/ 10;如果(ch2> 0)n ++; ch2 + ='0'; ch1 = k1; ch1 + ='0'; n ++;开关(n){情况5: printf(“%c”,ch5);情况4: printf(“%c”,ch4);情况3: printf(“%c”,ch3);情况2: printf(“%c”,ch2);情况1: printf(“%c”,ch1);}} 4.5编写一个递归计算函数来计算Ackermann函数Ack(m,n).

对于m≥0,n≥0,将Ack(m,n)定义为参考程序代码,如下所示. #include #include long int ack(int m,int n){long int value; if(m <0 || n <0){printf(“ \ n计算条件不存在,退出!\ n”);退出(1);}如果(m == 0){value = n +1; printf(“ ack(0,%d)=%d \ n”,n,n +1);}否则if(n == 0){value = ack(m-1,1); printf(“ ack(%d,1)=%d \ n”,m-1,ack(m-1,1));}否则{printf(“ ack(%d,%d)= ack(%d ,ack(%d,%d))\ n“,m,n,m-1谭浩强c语言程序设计课件f,m,n -1);值= ack((m-1),ack(m,n-1));} return(value);} int main(void){int mm,nn;长整数printf(“ \ n请输入M&N: ”); scanf(“%d%d”,&mm,&nn); a = ack(毫米,nn); printf(“ \ nack(%d,%d)=%ld \ n”,mm,nn,a); return 0;} 4.6分别编写递归和递归函数来计算Hermite多项式Hn(x)的值.

Hn(x)定义如下: 参考程序代码如下. #include long herm(long x,int n);长埃尔米特(long x,int n); int main(void)(long x; int n; 4.7)指示后续程序中每个变量的存储属性,并写入程序的执行结果. return(i = j + = i);} void main(void){int i,j; / * i,j是局部变量* / i = reset(); for(j = 1; j <= 3; j ++){printf(“ i =%d,j =%d \ n”,i,j); printf(“下一个(i)=%d \ n”,下一个(i)); printf(“ last(i)=%d \ n”,last(i)); printf(“ new(i + j)=%d \ n”,new(i + j));}} 4.8编写以下程序的执行结果. (1)#include #define LOW 0 #define HIGH 5#define CHANGE 2int i = LOW; int修整(int i); int reset(int i); void main(void){int i = HIGH;重置(i / 2); printf(“ i =%d \ n”,i);重置(i = i / 2); printf(“ i =%d \ n”,i);重置(i / 2); printf(“ i =%d \ n”,i);修井(i); printf(“ i =%d \ n”,i);}修整(int i){i =(i%i)*((i * i)/(2 * i)+4); printf(“ i =%d \ n”,i); return(i);}重置(int i){i = i <=更改?前高后低; return(i);}(2)#include #定义FUDGE(k)k + 3.14159266#定义PR(a)printf(“ a =%d \ t”,(int)(a))#定义PRINT(a)PR(a); putchar('\ n')#define PRINT2(a,b)PR(a); PRINT(b)#定义PRINT3(a,b,c)PR(a); PRINT 2(b,c)#定义MAX(a,b)(a #define S x = y = z#定义P3(x,y,z) printf(“ x =%d \ ty =%d \ tz =%d \ n”,x,y,z)void main(void){int x,y,z; S = 1; ++ x || ++ y || ++ z; P3(x,y,z); S = 1; ++ x && ++ y || ++ z; P3(x,y,z); S = 1; ++ x && ++ y && ++ z; P3(x,y,z); S = -1; ++ x || ++ y && ++ z; P3(x,y,z); S = -1; ++ x || ++ y || ++ z; P3(x,y,z); S = -1; ++ x && ++ y && ++ z; P3(x,y,z);} 4.10定义一个将大写字母更改为小写字母的宏.
参考程序代码如下. #定义TOLOWER(ch)((ch)> =′A'&&(ch)<=′Z')? (ch)+'a'-'A':( ch)#include int main(void){char ch; printf(“请输入字符串,否则Ctrl + Z终止!\ n”);做{ch = getchar(); ch =低音(ch); printf(“%c”,ch);} while(ch!= EOF);} 4.11定义一个宏,该宏交换两个参数的值. 参考程序代码如下. #include #定义SWAP(a,b)(a)=(a)+(b); (b)=(a)-(b); (a)=(a)-(b); int main(){float x,y; int i,j; printf(“ \ n请输入2个浮点数: ”); scanf(“%f%f”谭浩强c语言程序设计课件f,&x,&y); printf(“ x =%f,y =%f \ n”,x,y); SWAP(x,y); printf(“ x =%f,y =%f \ n”,x,y); printf(“ \ n请输入2个int号: ”); scanf(“%d%d”,&i,&j); printf(“ i =%d,j =%d \ n”,i,j);交换(i,j); printf(“ i =%d,j =%d \ n”,i,j);}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-149389-1.html
赞