【程序71】 题目:编写input()和output()函数输入,输出5个学生的数据记录。 1.程序分析: 2.程序源代码: #defineN5 structstudent {charnum[6]; charname[8]; intscore[4]; }stu[N]; input(stu) structstudentstu[]; {inti,j; for(i=0;i<N;i++) {printf("\npleaseinput%dof%d\n",i+1,N); printf("num:"); scanf("%s",stu[i].num); printf("name:"); scanf("%s",stu[i].name); for(j=0;j<3;j++) {printf("score%d.",j+1); scanf("%d",&stu[i].score[j]); } printf("\n"); } } print(stu) structstudentstu[]; {inti,j; printf("\nNo.NameSco1Sco2Sco3\n"); for(i=0;i<N;i++) {printf("%-6s%-10s",stu[i].num,stu[i].name); for(j=0;j<3;j++) printf("%-8d",stu[i].score[j]); printf("\n"); } } main() { input(); print(); } ============================================================== 【程序72】 题目:创建一个链表。 1.程序分析: 2.程序源代码: /*creatalist*/ #include"stdlib.h" #include"stdio.h" structlist {intdata; structlist*next; }; typedefstructlistnode; typedefnode*link; voidmain() {linkptr,head; intnum,i; ptr=(link)malloc(sizeof(node)); ptr=head; printf("pleaseinput5numbers==>\n"); for(i=0;i<=4;i++) { scanf("%d",&num); ptr->data=num; ptr->next=(link)malloc(sizeof(node)); if(i==4)ptr->next=NULL; elseptr=ptr->next; 软件开发网 www.mscto.com } ptr=head; while(ptr!=NULL) {printf("Thevalueis==>%d\n",ptr->data); ptr=ptr->next; } } ============================================================== 【程序73】 题目:反向输出一个链表。 1.程序分析: 2.程序源代码: /*reverseoutputalist*/ #include"stdlib.h" #include"stdio.h" structlist {intdata; structlist*next; }; typedefstructlistnode; typedefnode*link; voidmain() {linkptr,head,tail; intnum,i; tail=(link)malloc(sizeof(node)); tail->next=NULL; ptr=tail; printf("\npleaseinput5data==>\n"); for(i=0;i<=4;i++) { scanf("%d",&num); ptr->data=num; head=(link)malloc(sizeof(node)); head->next=ptr; ptr=head; } ptr=ptr->next; while(ptr!=NULL) {printf("Thevalueis==>%d\n",ptr->data); ptr=ptr->next; }} ============================================================== 【程序74】 题目:连接两个链表。 1.程序分析: 2.程序源代码: #include"stdlib.h" #include"stdio.h" structlist {intdata; structlist*next; }; typedefstructlistnode; typedefnode*link; linkdelete_node(linkpointer,linktmp) {if(tmp==NULL)/*deletefirstnode*/ returnpointer->next; else {if(tmp->next->next==NULL)/*deletelastnode*/ tmp->next=NULL; else/*deletetheothernode*/ tmp->next=tmp->next->next; returnpointer; } } voidselection_sort(linkpointer,intnum) {linktmp,btmp; inti,min; for(i=0;i<num;i++) { tmp=pointer; min=tmp->data; btmp=NULL; while(tmp->next) {if(min>tmp->next->data) {min=tmp->next->data; btmp=tmp; } tmp=tmp->next; } printf("\40:%d\n",min); pointer=delete_node(pointer,btmp); } } linkcreate_list(intarray[],intnum) {linktmp1,tmp2,pointer; inti; pointer=(link)malloc(sizeof(node)); pointer->data=array[0]; tmp1=pointer; for(i=1;i<num;i++) {tmp2=(link)malloc(sizeof(node)); tmp2->next=NULL; tmp2->data=array[i]; tmp1->next=tmp2; tmp1=tmp1->next; } returnpointer; } linkconcatenate(linkpointer1,linkpointer2) {linktmp; tmp=pointer1; while(tmp->next) tmp=tmp->next; tmp->next=pointer2; returnpointer1; } voidmain(void) {intarr1[]={3,12,8,9,11}; linkptr; ptr=create_list(arr1,5); selection_sort(ptr,5); } ============================================================== 【程序75】 题目:放松一下,算一道简单的题目。 1.程序分析: 2.程序源代码: main() { inti,n; for(i=1;i<5;i++) {n=0; if(i!=1) n=n+1; if(i==3) n=n+1; if(i==4) n=n+1; if(i!=4) n=n+1; if(n==3) printf("zhuhaoshideshi:%c",64+i); } } ============================================================== 【程序76】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数 1/1+1/3+...+1/n(利用指针函数) 1.程序分析: 2.程序源代码: main() #include"stdio.h" main() { floatpeven(),podd(),dcall(); floatsum; intn; while(1) { scanf("%d",&n); if(n>1) break; } if(n%2==0) { printf("Even="); sum=dcall(peven,n); } else { printf("Odd="); sum=dcall(podd,n); } printf("%f",sum); } floatpeven(intn) { floats; inti; s=1; for(i=2;i<=n;i+=2) s+=1/(float)i; return(s); } floatpodd(n) intn; { floats; inti; s=0; for(i=1;i<=n;i+=2) s+=1/(float)i; return(s); } floatdcall(fp,n) float(*fp)(); intn; { floats; s=(*fp)(n); return(s); } ============================================================== 【程序77】 题目:填空练习(指向指针的指针) 1.程序分析: 2.程序源代码: main() {char*s[]={"man","woman","girl","boy","sister"}; char**q; intk; for(k=0;k<5;k++) { ;/*这里填写什么语句*/ printf("%s\n",*q); } } ============================================================== 【程序78】 题目:找到年龄最大的人,并输出。请找出程序中有什么问题。 1.程序分析: 2.程序源代码: #defineN4 #include"stdio.h" staticstructman {charname[20]; intage; }person[N]={"li",18,"wang",19,"zhang",20,"sun",22}; main() {structman*q,*p; inti,m=0; p=person; for(i=0;i<N;i++) {if(m<p->age) q=p++; m=q->age;} printf("%s,%d",(*q).name,(*q).age); } ============================================================== 【程序79】 题目:字符串排序。 1.程序分析: 2.程序源代码: main() { char*str1[20],*str2[20],*str3[20]; 软件开发网 www.mscto.cn charswap(); printf("pleaseinputthreestrings\n"); 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("afterbeingsorted\n"); 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); } ============================================================== 【程序80】 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子? 1.程序分析: 2.程序源代码: main() {inti,m,j,k,count; for(i=4;i<10000;i+=4) {count=0; m=i; for(k=0;k<5;k++) { j=i/4*5+1; i=j; if(j%4==0) count++; else break; } i=m; if(count==4) {printf("%d\n",count); break;} } }
|