您好,欢迎访问三七文档
C语言技能培训1.一维数组应用举例例1:从键盘输入十个整数,以输入顺序相反的顺序输出#includestdio.hvoidmain(){intx[10],i;for(i=0;i10;i++)scanf(%d,&x[i]);for(i=9;i=0;i--)printf(%6d,x[i]);}例2从键盘输入10个学生的成绩求平均分并输出大于平均分的所有成绩。main(){inti;ints[10];floata=0.0;/*定义数组和变量*/printf(Input10student'sscores:\n);for(i=0;i10;i++)/*输入成绩*/scanf(%d,&s[i]);for(i=0;i10;i++)/*求总分*/a=a+s[i];a=a/10;/*求平均分*/printf(average=%2.1f\nscoresaverage:\n,a);for(i=0;i10;i++)/*输出大于平均分的成绩*/if(s[i]a)printf(%8d,s[i]);}2.二维数组应用举例例1:输出10行扬辉三角形。main(){inta[10][10];inti,j;for(i=0;i10;i++){a[i][0]=1;a[i][i]=1;}for(i=0;i10;i++){for(j=1;ji;j++)/*0,1两行不用计算,j循环不执行*/a[i][j]=a[i-1][j]+a[i-1][j-1];/*上一行的同列元素与前一列元素之和*/for(j=0;j=i;j++)printf(%5d,a[i][j]);printf(\n);}}111121133114641……………5例2:打印如下形式的九九乘法表.main(){intx,y;for(x=1;x=9;x++){for(y=1;y=9;y++)printf(%d*%d=%2d,x,y,x*y);printf(\n);}}61234567891234567892468101214161836912151821242791827364554637281……………..例3循环嵌套,输出九九表ij#includestdio.hmain(){inti,j;for(i=1;i10;i++)printf(%4d,i);printf(\n---------------------------------------\n);for(i=1;i10;i++)for(j=1;j10;j++)printf((j==9)?%4d\n:%4d,i*j);}3.字符数组应用举例例1:字符数组引用实例。voidmain(){inti,j;chara[][5]={{‘b’,’a’,’s’,’i’,’c’},{‘d’,’b’,’a’,’s’,’e’}};/*定义二维字符数组a并赋初值*/for(i=0;i=1;i++){for(j=0;j=4;j++)printf(“%c”,a[i][j]);/*按行按列逐个输出数组a的各个元素*/printf(“\n”);}getch();}例2:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。#includestdio.hmain(){charc,string[81];inti,n=0,k=0;gets(string);for(i=0;c=string[i];i++)if(c=='')k=0;elseif(k==0){k=1;n++;}printf(Thereare%dwordsintheline\n,n);}例3编一程序,将两个字符串连接起来,不要用strcat函数#includestdio.h#includestring.hvoidmain(){inti,j;chars1[30],s2[10];gets(s1);gets(s2);for(i=0;s1[i]!='\0';i++);for(j=0;s2[j]!='\0';j++){s1[i]=s2[j];i++;}s1[i]='\0';puts(s1);}函数应用举例例1编写一个函数可以判断一个数是否是素数,并利用此函数输出3-100间的所有素数#includestdio.h#includemath.hintprime(intx);voidmain(){inti,n=0;for(i=3;i100;i++){if(prime(i)){printf(%6d,i);n++;}if(n%10==0)printf(\n);}printf(\n);}intprime(intx){intm;for(m=2;msqrt(x);m++)if(x%m==0)return0;return1;}例2编制一个程序,可以从键盘输入一串字符,倒序输出。例如:输入ABCD,输出DCBA。#includestdio.hvoidrev(void);main(){rev();}voidrev(void){charc;c=getchar();if(c!='\n'){rev();printf(%c,c);}}例3将一个十进制数转换为二进制数(用递归方法实现)voidtrans(intx){if(x/2!=0)trans(x/2);printf(%d,x%2);}x=2if(x/2!=0)trans(1);printf(“%d”,x%2);x=1if(x/2!=0)trans(0)/noexec/printf(“%d”,x%2);x=5if(x/2!=0)trans(2);printf(“%d”,x%2);例4求n的阶乘)1()!1()1,0(1!nnnnn方法2:用递归法计算#includestdio.hintff(intn){intf;if(n0)printf(n0,dataerror!);elseif(n==0||n==1)f=1;elsef=ff(n-1)*n;return(f);}main(){intn,y;printf(Inputaintegernumber:);scanf(%d,&n);y=ff(n);printf(%d!=%15d,n,y);}方法1:用循环语句编写main(){longf;intk,n;scanf(%d”,&n);f=1;for(k=1;k=n;k++)f*=k;printf(%d!=%ld,n,f);}方法1:用循环语句编写n!=n*(n-1)*···*2*1方法2:用递归法计算n!可用下述公式表示:指针应用举例main(){inti,*p,a[7];p=a;for(i=0;i7;i++)scanf(%d,p++);printf(\n);for(i=0;i7;i++,p++)printf(%d,*p);}p=a;例1注意指针的当前值例2将数组a中的n个整数按相反顺序存放voidinv(intx[],intn){intt,i,j,m=(n-1)/2;for(i=0;i=m;i++){j=n-1-i;t=x[i];x[i]=x[j];x[j]=t;}}main(){inti,a[10]={3,7,9,11,0,6,7,5,4,2};inv(a,10);printf(Thearrayhasbeenreverted:\n);for(i=0;i10;i++)printf(%d,,a[i]);printf(\n);}实参与形参均用数组voidinv(int*x,intn){intt,*p,*i,*j,m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;i=p;i++,j--){t=*i;*i=*j;*j=t;}}main(){inti,a[10]={3,7,9,11,0,6,7,5,4,2};inv(a,10);printf(Thearrayhasbeenreverted:\n);for(i=0;i10;i++)printf(%d,,a[i]);printf(\n);}实参用数组,形参用指针变量【例3】输入a、b、c3个整数,按大小顺序输出。swap(int*pt1,int*pt2){inttemp;temp=*pt1;*pt1=*pt2;*pt2=temp;}exchange(int*q1,int*q2,int*q3){if(*q1*q2)swap(q1,q2);if(*q1*q3)swap(q1,q3);if(*q2*q3)swap(q2,q3);}main(){inta,b,c,*p1,*p2,*p3;scanf(%d,%d,%d,&a,&b,&c);p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);printf(\n%d,%d,%d\n,a,b,c);}
本文标题:技能培训
链接地址:https://www.777doc.com/doc-977651 .html