void main()
{ int i,m;char *p; for(i=0;i<2;i++) {scanf(“%d”,&m); p=fun(m); }
puts(p); }
10.以下程序运行时输出到屏幕的结果中第一行是__(11)__,第二行是___(12)___。 #include
void fun(int a[M][N]) { int i,j,p;
for(i=0;i for(j=1;j if(a[i][p]>a[i][j])p=j; printf(“%d\\n”,a[i][p]); } } void main() { int a[M][N]={{-1,5,7,4},{5,2,4,3},{8,2,3,0}}; fun(a); } 11.以下程序运行时输出到屏幕的结果中第一行是__(13)__,第二行是___(14)___。 #include int f(int *x, int *y,int z) { *x=*y; *y=z; z=*x; return z; } void main() { int a=1,b=2,c=3,d; d=f(&a,&b,c); printf(“--\\n--_\\11”,a,b,c,d); } 12.以下程序运行时输出到屏幕的结果中第一行的是__(15)__,第二行的是_(16)_。 #include “stdio.h” struct grade { int id; char level[3]; int score[3]; } char fun(struct grade *t) 41 { int i,count=0,total=0; for(i=0;i<3;i++) { if(t->level[i]==’A’)count++; total=total+t->score[i]; } total=total+count; if(count==3)total++; return(total>380?’Y’:’N’); } void main() { int i; struct grade stu[3]={{106,”AAA”,130,132,115}, {107,”BAB”,113,125,104},{109,”AAB”,128,135,114}}; for(i=0;i<2;i++) printf(“\\%d %c\\n”,stu[i].id,fun(&stu[i])); } 13.以下程序运行时输出到屏幕的结果中第一行是__(17)__,第二行是__(18)__。 #include p=&a[n-1]; for(i=n-2;i>=0;i--) if(a[i]>*p)p=&a[i]; return *p; } void main() { int a[5]={18,2,16,3,6},x=5,y; y=fun(a,&x); printf(“%d\\n”,x); printf(“%d\\n”,y); } ●完善程序 14.以下程序的功能是验证下列公式是否成立。请完善程序使其达到要求的功能。 113=1+ (1?x)11*421*4*73x?x?x?…… 33*63*6*9 将X取某一值时公式等号左侧的函数值表示为f(x),等号右侧的级数值表示为g(x),若f(x)与g(x)的相对误 差小于10-6,即认为f(x)与g(x)相等。计算g(x)时,当最后一项的绝对值小于10-10时停止累加。 f(x)与g(x)的相对误差计算公式:E= #include {double x,f,g,term; 42 |f(x)?g(x)| |f(x)|?|g(x)| int n; printf(“\\n input x(-1 g=term=1; while(fabs(term)>1e-10) {term=term*____(21)____; g=g+term; ____(22)____; } if(fabs(f-g)/(fabs(f)+fabs(g))<1e-6) printf(“\\ntrue x=%f,f=%f,g=%f”,x,f,g); else printf(“\\nfalse x=%f,f=%f,g=%f”,x,f,g); } 15.以下程序的功能是:将输入的十进制整数转换为指定进制的字符串形式,itob函数的形参s指向的数组用于保存将形参n的值转换为base进制数后的字符串形式。请完善程序使其达到要求的功能。 #include char temp; for(j=0;s[j]!=’\\0’;j++); for(i=0,j--;i void itob(int n,char s[],int base) { int i=0,sign,t; if((sign=n)<0) n=-n; while(n>0) { t=____(24)____ if(t>=10) s[i++]=t-10+’A’; else s[i++]=____(25)____ n=n/base; } if(sign<0) s[i++]=’-‘; ____(26)____; reverse(s); } void main() 43 { char str[100]; int n,base; printf(“请输入被转换的十进制整数和进位制的基数:\\n”); scanf(“%d%d”,&n,&base); itob(n,str,base); printf(“转换结果为:\\n”); printf(“(10进制数)%d->%s(%d进制数)\\n”,n,str,base); } 16.存储一组整数的某单向链表结点定义为: typedef struct n { int x; struct n *next;}NODE; 函数NODE *sort(NODE *head)采用插入法对head指向的单向链表中存储的数据按成员x的值从小到大排序。 算法提示:对链表中从第2个结点开始直到最后结点范围内的每个结点做以下操作:若第i个结点(i从2开始)的成员x值大于或等于第i-1个结点的成员x值,则保持第i个结点在链表中的位置不变;否则,先将第i个结点从链表中删除(使第i-1个结点的指针域指向第i+1个结点),再将已脱离链表的原第i个结点插入到链表的前i-1个结点中,并保持插入结点后链表的前i个结点按成员x值从小到大有序。请完善sort函数使其达到要求的功能。 NODE *sort(NODE *head) { ____(27)____*p1,*p2,*q1,*q2; p1=head; p2=p1->next; while(p2) { if(p1->x<=p2->x) { p1=p2; ____(28)____=p2->next; } else {p1->next=____(29)____; /*从链表中删除p2指向的结点*/ /*以下程序段实现将p2指向的结点插入链表中*/ q1=head; q2=q1->next; if(p2->x {p2->next=____(30)____; head=p2; } else {q1=head; q2=head->next; while(p2->x>q2->x) { q1=q2; q2=q2->next; } p2->next=q2; q1->next=p2; } 44
相关推荐: