6
1 5 10 10 5 1
1 6 15 20 15 6 1
C语言双重循环输出杨辉三角前10行: 直角三角形杨辉三角:
#include
int a[M][M], i , j ; for(i=0;i 金字塔型杨辉三角: #include 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 For(i=1;i<=4;i++) Printf(“ ”); 18不使用strcat函数,将两个字符串连接起来。 #include } 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 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 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 {int i=1,n;double sum=0; scanf(\ 20编写函数int fun(char str[])并在主函数中调用它。此函数的功能是判别字符串str是否为“回文”,若是,返回1,否则返回0(回文是指正反序相同的字符串,如“13531”、“madam”是回文,“1353”、“mrs”不是回文)。 #include {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 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 扩展范例:请编写函数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 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 { 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 printf(\ scanf(\ printf(\ scanf(\ f(x,y); 扩展!:不含指针参数的 #include 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]中的最大元素和首元素换位,最小元素和末元素换位。数组