C语言老师所给习题解答(2)

2019-09-02 17:47

6

1 5 10 10 5 1

1 6 15 20 15 6 1

C语言双重循环输出杨辉三角前10行: 直角三角形杨辉三角:

#include #define M 10 void main() {

int a[M][M], i , j ; for(i=0;i

金字塔型杨辉三角:

#include void main() {

int a[10][10],i,j; for(i=0;i<10;i++) {

for(j=10;j>=i;j--)

printf(\两个空格*/ for(j=0;j<=i;j++) {

if(i==j||j==0)

17利用循环输出下列图形(无空行和空列):

* *** ***** *******

#include Int main() { Int I,j,k;

For(i=1;i<=4;i++) Printf(“ ”);

18不使用strcat函数,将两个字符串连接起来。

#include int a[20],b[20],i=0,j=0; while(a[i]!='\\0') { i++;

}

while(b[i]!='\\0') {

a[i++]=b[i++]; } } Return 0; }

For(k=1;k>=1;k--) Printf(“ “#””); Printf(“\\n”) a[i][j]=1; else

a[i][j]=a[i-1][j]+a[i-1][j-1]; printf(\后一个空格*/ if(i==j) printf(\ } } }

if(i==j||j==0) a[i][j]=1; else

a[i][j]=a[i-1][j]+a[i-1][j-1]; printf(\ if(i==j)printf(\ } }

7

a[i]='\\0'; 范例二:

#include #include #include int main() {

char str1[] = \ char str2[] = \ int len;

len = strlen(str1) + strlen(str2);

char *str3 = (char *)malloc((len+1) * sizeof(char));

int i, j = 0, k = 0; 范例二: #include main() {

char a[100],b[100],*p,*q; scanf(\p=a; q=b;

}

while(*p)

++p; *p++=*q++; while(*q) *p='\\0'; printf(\

}

for(i = 0; i <= len; i++) { if (str1[j]) str3[i] = str1[j++]; else if (str2[k]) str3[i] = str2[k++]; else str3[i] = '\\0'; }

printf(\ return 0; printf(\;

19编写函数,求1+111+++234+1的值。n的值由键盘获得。 nwhile(i<=n) {i;sum=sum+1/i;i++;} printf(\}

#include main()

{int i=1,n;double sum=0; scanf(\

20编写函数int fun(char str[])并在主函数中调用它。此函数的功能是判别字符串str是否为“回文”,若是,返回1,否则返回0(回文是指正反序相同的字符串,如“13531”、“madam”是回文,“1353”、“mrs”不是回文)。

#include #include main()

{int s(char a[20]); char a[20]; int t; gets(a); t=s(a); if(t==1) printf(\ if(t==0)

21用递归方法计算n!。

扩展:用递归方式计算a!+b!+c!,并要求输出结果

printf(\ }

int s(char a[20]) { int m,n,i; n=strlen(a); for (i=0;i

8

#include

int fac(int n)//如果n大于十二,改用double或者long long,输出也相应改变

{

if(n==0) return 1; else return fac(n-1)*n; }

void main() {

22用静态局部变量法计算n!。

扩展:编写求n的阶乘的函数(用到静态局部变量),调用此函数求多项式之和:

}

int a,b,c; int sum;

printf(\请分别输入a,b,c,并用逗号隔开:\\n\

scanf(\ sum=fac(a)+fac(b)+fac(c); printf(\

1/1!+1/2!+1/3!+…1/n!,直到最后两项之差小于10的负5次方。

#include double jiecheng(int n) {

static double num=1; num*=n; return num; }

void main() { int n;

23编写函数,求s=s1+s2+s3+s4,其中:

}

double sum=0,temp,item=1; for (n=2;;n++) {

sum+=item;

temp=1.0/jiecheng(n); if (item-temp<1e-5)break; item=temp; }

printf(\

#include main() double fun (int n) { { int n; int i; double s; double sum=0.0; printf(\ for(i=1;i <=n;i++) scanf(\%d %d \{ 3&n4); sum+=1.0/i; s=fun(n1)+fun(n2)+fun(n3)+ fun(n4); } printf(\ return sum; }

扩展范例:请编写函数fun,其功能是:计算并输出下列多项式值: S=1+

111s1=1++++2350111s2=1++++23100111s3=1++++23150111s4=1++++23200

111?+?+ 1?21?2?31?2?3???50{

int i, j,k;

注意:n的值要求大于1但不大于100。 #include

double fun (int n)

9

double sum=0.0, t; for(i=1;i <=n;i++) {

t=0.0;

for(j=1;j<=i;j++) t+=j; sum+=1.0/t; }

return sum; main() { int n;

24编写程序,计算组合数Cm#include double fact(double s) { } int main() {

double x,y,m,n; double i,a=1; for (i=1;i<=s;i++)

a=a*i; return a;

n

}

double s; FILE *out;

printf(\ \ scanf(\s=fun(n);

printf(\out=fopen(\for (n = 0; n < 10; n++) fprintf(out, \fclose(out);

=m!。m和n由键盘获得。

n!(m-n)! }

printf(\scanf(\printf(\scanf(\y=fact(n-m); m=fact(m); n=fact(n); x=n/(y*m);

printf(\return 0;

25编写函数,求出n个a之积。调用该函数,输入两个正整数n和a,求a?aa?aaa???aa?aa?????n之和。

#include\main()

{int n,sum=0,i=1,s=2; scanf(\

扩展:将字符串a复制为字符串b #include Void main()

{ char a[]=”I am a boy.”,b[20]; Int i;

for(i=0;*(a+i)!=’\\0’;i++) *(b+i)= *(a+i);

*(b+i)=’\\0’;

27使用“指向函数的指针”编写函数,求多项式x4while(i<=n)

{sum=sum+s;s=s+2*pow(10,i); i++;}

printf(\

26编写程序,使用字符指针将字符数组s1中的字符串拷贝到字符数组s2中去。

Printf(“string a is :%s\\n”,a); Printf(“string b is:”); For(i=0;b[i]!=’\\0’;i++) Printf(“%c”,b[i]); Printf(“\\n”); }

+x-1当x=1.5,2.5,3.5,4.5时的值。

答案详见P149.例题9-16!

28编写函数,将直角坐标(x,y)转换为极坐标(r,q)。转换公式为:

10

ìr=x2+y2?íy?q=atan()?x

#include #include void f(float &x,float &y); int main() { float x,y;

printf(\ scanf(\ printf(\ scanf(\ f(x,y);

扩展!:不含指针参数的 #include #include main(){

char str1[80],str2[80]; int i=0,j=0;

puts(\gets(str1); gets(str2);

while(str1[i]!='\\0')i++;

while(str2[j]!='\\0')str1[i++]=str2[j++]; printf (\}

#include

#include

void string_cat (char *source, char *target) {

char *point=source; while(*point) point++;

while(*target!='\\0')

元素由键盘获得。

printf(\ printf(\ return 0; }

void f(float &x,float &y) {

float c=sqrt(x*x+y*y); float q=atan(y/x); x=c; y=q; }

29编写函数,使用指针参数将字符串ch2复制到字符串ch1的末尾,实现ch1与ch2的连接。

{

*point=*target; point++; target++; }

*point='\\0'; }

int main() {

char s1[10000],s2[10000]; for(;s1!='\\0';) {

gets(s1); gets(s2);

string_cat(s1,s2); puts(s1); }

printf(\ return 0; }

30利用指针编写程序,将一个一维数组a[10]中的最大元素和首元素换位,最小元素和末元素换位。数组


C语言老师所给习题解答(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:足阳明经络与腧穴试题与答案

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

马上注册会员

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