c 语言第10章.docx
- 文档编号:30210994
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:16
- 大小:16.95KB
c 语言第10章.docx
《c 语言第10章.docx》由会员分享,可在线阅读,更多相关《c 语言第10章.docx(16页珍藏版)》请在冰豆网上搜索。
c语言第10章
第10章 指针
10.1
main()
{intn1,n2,n3;
int*p1,*p2,*p3;
scanf("%d,%d,%d",&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
if(n1>n2)swap(p1,p2);
if(n1>n3)swap(p1,p3);
if(n2>n3)swap(p2,p3);
printf("%d,%d,%d\n",n1,n2,n3);
}
swap(p1,p2)
int*p1,*p2;
{intp;
p=*p1;*p1=*p2;*p2=p;
}
10.2
main()
{char*str1[20],*str2[20],*str3[20];
charswap();
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",str3);
if(strcmp(str1,str2)>0)swap(str1,str2);
if(strcmp(str1,str3)>0)swap(str1,str3);
if(strcmp(str2,str3)>0)swap(str2,str3);
printf("%s\n%s\n%s\n",str1,str2,str3);
}
charswap(p1,p2)
char*p1,*p2;
{char*p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
10.3
main()
{intnumber[10];
input(number);
max_min_value(number);
output(number);
}
input(number)
intnumber[10];
{inti;
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
max_min_value(number)
intnumber[10];
{int*max,*min;
int*p,*end;
end=number+10;
max=min=number;
for(p=number+1;p if(*p>*max)max=p; elseif(*p<*min)min=p; *p=number[0]; number[0]=*min; *min=*p; *p=number[9]; number[9]=*max; *max=*p; return; } output(number) intnumber[10]; {int*p; for(p=number;p printf("%d,",*p); printf("%d\n",*p); } 10.4 main() {intnumber[20],n,m,i; scanf("%d",&n); scanf("%d",&m); for(i=0;i i++) scanf("%d",&number[i]); move(number,n,m); for(i=0;i printf("%8d",number[i]); } move(array,n,m) intarray[20],n,m; {int*p,end; end=*(array+n-1); for(p=array+n-1;p>array;p--) *p=*(p-1); *array=end; m--; if(m>0)move(array,n,m); } 10.5 #definenmax50 main() {inti,k,m,n,num[nmax],*p; scanf("%d",&n); p=num; for(i=0;i *(p+i)=i+1; i=k=m=0; while(m {if(*(p+i)! =0)k++; if(k==3) {*(p+i)=0; k=0; m++; } i++; if(i==n)i=0; } while(*p==0)p++; printf("%d",*p); } 10.6 main() {intlen; char*str[20]; scanf("%s",str); len=length(str); printf("\nlen=%d\n",len); } length(p) char*p; {intn=0; while(*p! ='\0') {n++;p++;} return(n); } 10.7 main() {intm; char*str1[20],*str2[20]; scanf("%s",str1); scanf("%d",&m); if(strlen(str1) printf("error"); else {copystr(str1,str2,m); printf("%s",str2); } } copystr(p1,p2,m) char*p1,*p2; intm; {intn=0; while(n {n++;p1++;} while(*p1! ='\0') {*p2=*p1; p1++; p2++; } *p2='\0'; } 10.8 #include"stdio.h" main() {intcle=0,sle=0,di=0,wsp=0,ot=0,i; char*p,s[20]; for(i=0;i<20;i++)s[i]=0; i=0; while((s[i]=getchar())! ='\n')i++; p=s; while(*p! ='\n') {if(*p>='a'&&*p<='z') ++sle; elseif(*p>='A'&&*p<='Z') ++cle; elseif(*p=='') ++wsp; elseif(*p>='0'&&*p<='9') ++di; else ++ot; p++; } printf("sle=%d,cle=%d,wsp=%d,di=%d,ot=%d\n",sle,cle,wsp,di,ot); } 10.9 main() {inta[3][3],*p,i; for(i=0;i<3;i++) scanf("%d,%d,%d",a[i][0],a[i][1],a[i][2]); p=a; move(p); for(i=0;i<3;i++) printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]); } move(pointer) int*pointer; {inti,j,t; for(i=0;i<2;i++) for(j=i+1;j<3;j++) {t=*(pointer+3*i+j); *(pointer+3*i+j)=*(pointer+3*j+i); *(pointer+3*j+i)=t; } } 10.10 main() {inta[5][5],*p,i,j; for(i=0;i<5;i++) for(j=0;j<5;j++) scanf("%d",&a[i][j]); p=a; change(p); for(i=0;i<5;i++) {printf("\n"); for(j=0;j<5;j++) printf("%8d",a[i][j]); } } change(p) int*p; {inti,j,change; int*pmax,*pmin; pmax=p; pmin=p; for(i=0;i<5;i++) for(j=0;j<5;j++) {if(*pmax<*(p+5*i+j))pmax=p+5*i+j; if(*pmin>*(p+5*i+j))pmin=p+5*i+j; } change=*(p+12); *(p+12)=*pmax; *pmax=change; change=*p; *p=*pmin; *pmin=change; pmin=p+1; for(i=0;i<5;i++) for(j=0;j<5;j++) if(((p+5*i+j)! =p)&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j; change=*(p+4); *(p+4)=*pmin; *pmin=change; pmin=p+1; for(i=0;i<5;i++) for(j=0;j<5;j++) if(((p+5*i+j)! =(p+4))&&((p+5*i+j)! =p)&&(*pmin>*(p+5*i+j))) pmin=p+5*i+j; change=*(p+20); *(p+20)=*pmin; *pmin=change; pmin=p+1; for(i=0;i<5;i++) for(j=0;j<5;j++) if(((p+5*i+j)! =p)&&((p+5*i+j)! =(p+4))&&((p+5*i+j)! =(p+20)) &&(*pmin>*(p+5*i+j)))pmin=p+5*i+j; change=*(p+24); *(p+24)=*pmin; *pmin=change; } 10.11 main() {inti; char*p,str[10][10]; for(i=0;i<10;i++) scanf("%s",str[i]); p=str; sort(p); for(i=0;i<10;i++) printf("%s\n",str[i]); } sort(p) char*p; {inti,j; chars[10],*smax,*smin; for(i=0;i<10;i++) {smax=p+10*i; for(j=i+1;j<10;j++) {smin=p+10*j; if(strcmp(smax,smin)>0) {strcpy(s,smin); strcpy(smin,smax); strcpy(smax,s); } } } } 10.12 #defineMAX20 main() {inti; char*pstr[10],str[10][MAX]; for(i=0;i<10;i++) pstr[i]=str[i]; for(i=0;i<10;i++) scanf("%s",pstr[i]); sort(pstr); for(i=0;i<10;i++) printf("%s\n",pstr[i]); } sort(pstr) char*pstr[10]; {inti,j; char*p; for(i=0;i<10;i++) {for(j=i+1;j<10;j++) {if(strcmp(*(pstr+i),*(pstr+j))>0) {p=*(pstr+i); *(pstr+i)=*(pstr+j); *(pstr+j)=p; } } } } 10.13 #include"math.h" main() {intn=20; floata,b,a1,b1,a2,b2,c,(*p)(),jiff(); scanf("%f,%f",&a,&b); scanf("%f,%f",&a1,&b1); scanf("%f,%f",&a2,&b2); p=sin; c=jiff(a,b,n,p); printf("sin=%f\n",c); p=cos; c=jiff(a1,b1,n,p); printf("cos=%f\n",c); p=exp; c=jiff(a2,b2,n,p); printf("exp=%f\n",c); } floatjiff(a,b,n,p) floata,b,(*p)(); intn; {inti; floatx,f,h,area; h=(b-a)/n; x=a; area=0; for(i=1;i<=n;i++) {x=x+h; area=area+(*p)(x)*h; } return(area); } 10.14 main() {inti,n,num[20]; char*p; scanf("%d",&n); for(i=0;i scanf("%d",&num[i]); p=num; sort(p,n); for(i=0;i printf("%8d",num[i]); } sort(p,m) char*p; intm; {inti; charchange,*p1,*p2; for(i=0;i {p1=p+i; p2=p+(m-1-i); change=*p1; *p1=*p2; *p2=change; } } 10.15 main() {inti,j,*pnum,num[4]; floatscore[4][5],aver[4],*psco,*pave; charcourse[5][10],*pcou; pcou=course[0]; for(i=0;i<5;i++) scanf("%s",pcou+10*i); printf("number"); for(i=0;i<5;i++) printf(",%s",pcou+10*i); printf("\n"); psco=score; pnum=num; for(i=0;i<4;i++) {scanf("%d",pnum+i); for(j=0;j<5;j++) scanf(",%f",psco+5*i+j); } pave=aver; printf("\n"); avsco(psco,pave); avcour1(pcou,psco); printf("\n"); fali2(pcou,pnum,psco,pave); printf("\n"); good(pcou,pnum,psco,pave); } avsco(psco,pave) float*psco,*pave; {inti,j; floatsum,average; for(i=0;i<4;i++) {sum=0; for(j=0;j<5;j+) sum+=(*(psco+5*i+j)); average=sum/5; *(pave+i)=average; } } avcour1(pcou,psco) char*pcou; float*psco; {inti; floatsum,average1; sum=0; for(i=0;i<4;i++) sum+=(*(psco+5*i)) average1=sum/4; printf("%s %5.2f\n",pcou,average1); } fali2(pcou,pnum,psco,pave) char*pcou; int*pnum; float*psco,*pave; {inti,j,k,label; printf("\nnumber\n"); for(i=0;i<5;i++) printf("%-8s",pcou+10*i); printf("\naverage\n"); for(i=0;i<4;i++) {label=0; for(j=0;j<5;j++) if(*(psco+5*i+j)<60.0)label++; if(label>=2) {printf("%-8d",*(pnum+i)); for(k=0;k<5;k++) printf("%-8.2f",*(psco+5*i+k)); printf("%-8.2f",*(pave+i)); } } } good(pcou,pnum,psco,pave) char*pcou; int*pnum; float*psco,*pave; {inti,j,k,label; printf("number"); for(i=0;i<5;i++) printf("%-8s",pcou+10*i); printf("average"); for(i=0;i<4;i++) {label=0; for(j=0;j<5;j++) if(*(psco+5*i+j)>=85.0)label++; if((label>=5)||(*(pave+i)>=90)) {printf("%-8d",*(pnum+i)); for(k=0;k<5;k++) printf("%-8.2f",*(psco+5*i+k)); printf("%-8.2f",*(pave+i)); } } } 10.16 #include"stdio.h" main() {charstr[50],*pstr; inti,j,k,m,e10,digit,ndigit,a[10],*pa; gets(str); pstr=str; pa=a; ndigit=0; i=j=0; while(*(pstr+i)! ='\0') {if((*(pstr+i)>='0')&&(*(pstr+i)<='9')) j++; else {if(j>0) {digit=*(pstr+i-1)-48; k=1; while(k {e10=1; for(m=1;m<=k;m++) e10=e10*10; digit+=(*(pstr+i-1-k)-48)*e10; k++; } *pa=digit; ndigit++; pa++; j=0; } } i++; } if(j>0) {digit=*(pstr+i-1)-48; k=1; while(k {e10=1; for(m=1;m<=k;m++) e10=e10*10; digit+=(*(pstr+i-1-k)-48)*e10; k++; } *pa=digit; ndigit++; j=0; } printf("ndigit=%d\n",ndigit); j=0; pa=a; for(j=0;j printf("%d",*(pa+j)); } 10.17 main() {intm; charstr1[20],str2[20],*p1,*p2; scanf("%s",str1); scanf("%s",str2); p1=str1; p2=str2; m=strcmp(p1,p2); printf("%d\n",m); } strcmp(p1,p2) char*p1,*p2; {inti=0; while(*(p1+i)==*(p2+i)) if(*(p+i++)=='\0')return(0); return(*(p1+i)-*(p2+i)); } 10.18 main() {staticchar*mname[13]={"illeagl","January","February","March", "April","May","June","July","August","September","October", "November","December"}; intn; scanf("%d",&n); if((n>=1)&&(n<=12)) printf("%s\n",*(mname+n)); else printf("error"); } 10.20 main() {inti; char**p,*pstr[5],str[5][10]; for(i=0;i<5;i++) pstr[i]=str[i]; for(i=0;i<5;i++) scanf("%s",pstr[i]); p=pstr; sort(p); for(i=0;i<5;i++) printf("%s\n",pstr[i]); } sort(p) char**P; {inti,j; char*pchange; for(i=0;i<5;i++) {for(j=i+1;j<5;j++) {if(strcmp(*(p+i),*(p+j))>0) {pchange=*(p+i);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言第10章 语言 10