c语言操作题.docx
- 文档编号:4689963
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:69
- 大小:34.03KB
c语言操作题.docx
《c语言操作题.docx》由会员分享,可在线阅读,更多相关《c语言操作题.docx(69页珍藏版)》请在冰点文库上搜索。
c语言操作题
一、填空
1.给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据从小到大顺序链接。
函数fun的功能是:
把形参x的值放入一个新结点并插入到链表中,插入后各结点仍保持从小到大顺序排列。
#include
#include
#defineN8
typedefstructlist
{intdata;
structlist*next;
}SLIST;
voidfun(SLIST*h,intx)
{SLIST*p,*q,*s;
s=(SLIST*)malloc(sizeof(SLIST));
/**********found**********/
s->data=___1___;
q=h;
p=h->next;
while(p!
=NULL&&x>p->data){
/**********found**********/
q=___2___;
p=p->next;
}
s->next=p;
/**********found**********/
q->next=___3___;
}
SLIST*creatlist(int*a)
{SLIST*h,*p,*q;inti;
h=p=(SLIST*)malloc(sizeof(SLIST));
for(i=0;i {q=(SLIST*)malloc(sizeof(SLIST)); q->data=a[i];p->next=q;p=q; } p->next=0; returnh; } voidoutlist(SLIST*h) {SLIST*p; p=h->next; if(p==NULL)printf("\nThelistisNULL! \n"); else {printf("\nHead"); do{printf("->%d",p->data);p=p->next;}while(p! =NULL); printf("->End\n"); } } main() {SLIST*head;intx; inta[N]={11,12,15,18,19,22,25,29}; head=creatlist(a); printf("\nThelistbeforeinserting: \n");outlist(head); printf("\nEnteranumber: ");scanf("%d",&x); fun(head,x); printf("\nThelistafterinserting: \n");outlist(head); } 答案: 1.x2.p3.s 2.给定程序中,函数fun的功能是: 将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。 #include #include intfun(char*fname) {FILE*fp;inti,n;floatx; if((fp=fopen(fname,"w"))==NULL)return0; for(i=1;i<=10;i++) /**********found**********/ fprintf(___1___,"%d%f\n",i,sqrt((double)i)); printf("\nSucceed! \n"); /**********found**********/ ___2___; printf("\nThedatainfile: \n"); /**********found**********/ if((fp=fopen(___3___,"r"))==NULL) return0; fscanf(fp,"%d%f",&n,&x); while(! feof(fp)) {printf("%d%f\n",n,x);fscanf(fp,"%d%f",&n,&x);} fclose(fp); return1; } main() {charfname[]="myfile3.txt"; fun(fname); } 答案: 1.fp2.fclose(fp)3.fname 3.给定程序的功能是将十进制正整数m转换成k进制(2≤k≤9)数的数字输出。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 #include voidfun(intm,intk) { intaa[20],i; for(i=0;m;i++){ /**********found**********/ aa[i]=___1___; /**********found**********/ m/=___2___; } for(;i;i--) /**********found**********/ printf("%d",___3___[i-1]); } main() { intb,n; printf("\nPleaseenteranumberandabase: \n"); scanf("%d%d",&n,&b); fun(n,b); } 答案: 1.m%k2.k3.aa 4.给定程序的功能是将未在字符串s中出现,而在字符串t中出现的字符,形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排序,但去掉重复字符。 例如: 当s="12345",t="24677"时,u中的字符为: "67"。 #include #include voidfun(char*s,char*t,char*u) {inti,j,sl,tl,k,ul=0; sl=strlen(s);tl=strlen(t); for(i=0;i {for(j=0;j if(t[i]==s[j])break; if(j>=sl) {for(k=0;k /************found************/ if(t[i]==u[k])___1___; if(k>=ul) /************found************/ u[ul++]=___2___; } } /************found************/ ___3___='\0'; } main() {chars[100],t[100],u[100]; printf("\nPleaseenterstrings: ");scanf("%s",s); printf("\nPleaseenterstringt: ");scanf("%s",t); fun(s,t,u); printf("Theresultis: %s\n",u); } 答案: 1.break2.t[i]3.u[ul] 5.给定程序的功能是将在字符串s中下标为奇数位置上的字符,紧随其后重复出现一次,放在一个新串t中,t中字符按原字符串中字符出现的逆序排列。 (注意0为偶数)例如: 当s中的字符串为: "1234567"时,则t中的字符串应为: "664422"。 #include #include voidfun(char*s,char*t) {inti,j,sl; sl=strlen(s); /************found************/ if(sl%2)sl-=2;___1___sl--; /************found************/ for(i=sl,j=___2___;i>=0;i-=2) {t[2*j]=s[i]; /************found************/ t[2*j+1]=___3___; j++; } t[2*j]='\0'; } main() {chars[100],t[100]; printf("\nPleaseenterstrings: ");scanf("%s",s); fun(s,t); printf("Theresultis: %s\n",t); } 答案: 1.else2.03.s[i] 6.给定程序功能是计算S=f(-n)+f(-n+1)+…+f(0)+f (1)+f (2)+…+f(n)的值。 例如,当n为5时,函数值应为: 10.407143。 ┌(x+1)/(x-2)x>0 f(x)=┤0x=0或x=2 └(x-1)/(x-2)x<0 #include #include floatf(doublex) { if(x==0.0||x==2.0) /************found************/ return___1___; elseif(x<0.0) return(x-1)/(x-2); else return(x+1)/(x-2); } doublefun(intn) {inti;doubles=0.0,y; /************found************/ for(i=-n;i<=___2___;i++) {y=f(1.0*i);s+=y;} /************found************/ return___3___; } main() { printf("%f\n",fun(5)); } 答案: 1.02.n3.s 7.给定程序的功能是将既在字符串s中出现、又在字符串t中出现的字符形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,但去掉重复字符。 例如,当s="122345",t="2467"时,u中的字符串为: "24"。 #include #include voidfun(char*s,char*t,char*u) {inti,j,sl,tl,k,ul=0; sl=strlen(s);tl=strlen(t); for(i=0;i {for(j=0;j if(s[i]==t[j])break; if(j {for(k=0;k /************found************/ if(s[i]___1___u[k])break; if(k>=ul) /************found************/ u[ul++]=___2___; } } /************found************/ ___3___='\0'; } main() {chars[100],t[100],u[100]; printf("\nPleaseenterstrings: ");scanf("%s",s); printf("\nPleaseenterstringt: ");scanf("%s",t); fun(s,t,u); printf("Theresultis: %s\n",u); } 答案: 1.==2.s[i]3.u[ul] 8.给定程序的功能是将仅在字符串s中出现而不在字符串t中出现的字符,和仅在字符串t中出现而不在字符串s中出现的字符,构成一个新字符串放在u中,u中的字符按原字符串中字符顺序排列,不去掉重复字符。 例如: 当s="112345",t="24677"时,u中的字符串为: "1135677"。 #include #include voidfun(char*s,char*t,char*u) {inti,j,sl,tl; sl=strlen(s);tl=strlen(t); for(i=0;i {for(j=0;j if(s[i]==t[j])break; /************found************/ if(j___1___tl) *u++=s[i]; } for(i=0;i {for(j=0;j if(t[i]==s[j])break; /************found************/ if(j___2___sl) *u++=t[i]; } /************found************/ ___3___='\0'; } main() {chars[100],t[100],u[100]; printf("\nPleaseenterstrings: ");scanf("%s",s); printf("\nPleaseenterstringt: ");scanf("%s",t); fun(s,t,u); printf("Theresultis: %s\n",u); } 答案: 1.>=2.>=3.*u 9.给定程序的功能是计算并输出下列级数的前N项之和SN,直到SN+1大于q为止,q的值通过形参传入。 234N+1 SN=─+─+─+…+── 123N 例如,若q的值为50.0,则函数值为50.416687。 #include doublefun(doubleq) {intn;doubles; n=2; s=2.0; /************found************/ while(s___1___q) { s=s+(double)(n+1)/n; /************found************/ ___2___; } printf("n=%d\n",n); /************found************/ ___3___; } main() { printf("%f\n",fun(50)); } 答案: 1.<=2.n++3.returns 10.给定程序的功能是分别统计字符串中大写字母和小写字母的个数。 例如,给字符串ss输入: AaaaBBb123CCccccd,则输出结果应为: upper=5,lower=9 #include voidfun(char*s,int*a,int*b) { while(*s) {if(*s>='A'&&*s<='Z') /**********found**********/ ___1___; if(*s>='a'&&*s<='z') /**********found**********/ ___2___; s++; } } main() {chars[100];intupper=0,lower=0; printf("\nPleaseastring: ");gets(s); fun(s,&upper,&lower); /**********found**********/ printf("\nupper=%dlower=%d\n",___3___); } 答案: 1.(*a)++2.(*b)++3.upper,lower 11.给定程序的功能是求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数放在数组a中,通过n返回这些数的个数。 #include voidfun(int*a,int*n) { inti,j=0; for(i=1;i<=1000;i++){ /**************found**************/ if(((i%7==0)||(i%11==0))&&i%77! =0)a[j++]=___1___; } /**************found**************/ *n=___2___; } main() {intaa[1000],n,k; /**************found**************/ fun(___3___); for(k=0;k if((k+1)%10==0)printf("\n"); elseprintf("%5d",aa[k]); } 答案: 1.i2.j3.aa,&n 12.给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。 #include #include #defineN8 typedefstructlist {intdata; structlist*next; }SLIST; voidfun(SLIST*p) {SLIST*t,*s; t=p->next;s=p; while(t->next! =NULL) {s=t; /**********found**********/ t=t->___1___; } /**********found**********/ printf("%d",___2___); s->next=NULL; /**********found**********/ free(___3___); } SLIST*creatlist(int*a) {SLIST*h,*p,*q;inti; h=p=(SLIST*)malloc(sizeof(SLIST)); for(i=0;i {q=(SLIST*)malloc(sizeof(SLIST)); q->data=a[i];p->next=q;p=q; } p->next=0; returnh; } voidoutlist(SLIST*h) {SLIST*p; p=h->next; if(p==NULL)printf("\nThelistisNULL! \n"); else {printf("\nHead"); do{printf("->%d",p->data);p=p->next;}while(p! =NULL); printf("->End\n"); } } main() {SLIST*head; inta[N]={11,12,15,18,19,22,25,29}; head=creatlist(a); printf("\nOutputfromhead: \n");outlist(head); printf("\nOutputfromtail: \n"); while(head->next! =NULL){ fun(head); printf("\n\n"); printf("\nOutputfromheadagain: \n");outlist(head); } } 答案: 1.next2.t->data3.t 13.给定程序的功能是求出能整除x且不是偶数的各整数,并放在数组pp中,这些除数的个数由n返回。 例如,若x的值为30,则有4个数符合要求,它们是1,3,5,15。 #include voidfun(intx,intpp[],int*n) { inti,j=0; for(i=1;i<=x;i+=2) /**************found**************/ if((x%i)==0)pp[j++]=___1___; /**************found**************/ *n=___2___; } main() {intx,aa[1000],n,i; printf("\nPleaseenteranintegernumber: \n");scanf("%d",&x); /**************found**************/ fun(x,___3___); for(i=0;i printf("\n"); } 答案: 1.i2.j3.aa,&n 14.函数fun的功能是: 统计长整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1、c2、c3返回主函数。 例如,当n=123114350时,结果应该为: c1=3c2=1c3=2。 #include intc1,c2,c3; voidfun(longn) {c1=c2=c3=0; while(n){ /**********found**********/ switch(___1___) { /**********found**********/ case1: c1++;___2___; /**********found**********/ case2: c2++;___3___; case3: c3++; } n/=10; } } main() {longn=123114350L; fun(n); printf("\nTheresul
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 操作