程序阅读填空.docx
- 文档编号:27095334
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:12
- 大小:19.89KB
程序阅读填空.docx
《程序阅读填空.docx》由会员分享,可在线阅读,更多相关《程序阅读填空.docx(12页珍藏版)》请在冰豆网上搜索。
程序阅读填空
程序填空题一(已查)
1.下面C语言程序将两个递增有序的数值a和b合并一个数组c,并保持递增次序,最后输出数组c.
#defineM6
#defineN5
main()
{inta[M]={1,3,5,7,9,11},b[N]={2,4,6,8,10};
intc[M+N];
inti,j,k;
i=j=k=0;
while
(1)/*答案i if(a[i] elsec[k++]=b[j++]; while (2)/*答案i c[k++]=a[i++]; while(j c[k++]=(3)/*答案b[j++];*/ for(k=0;k<(M+N);k++)/*答案M+N*/ printf(“%d\t”,c[k]); } 2.下面程序的作用是将以下给出的字符按其格式读入数组ss中,然后输出行、列号之和为3的数组元素,请在____处填入正确内容。 A a f c B d e b C g f D main() { staticcharss[4][3]={'A','a','f','c','B','d','e','b','C','g','f','D'}; intx,y,z; for(x=0;【1】;x++)/*答案x<4*/ for(y=0;【2】;y++)/*答案y<3*/ {z=x+y; if(【3】)printf("%c\n",ss[x][y]);/*答案z==3*/} } 程序填空题二(已查) 1下面程序的功能是不用第三个变量,实现两个数的对调操作。 main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ① ; /*答案a+b或者a^b*/ b= ② ; /*答案a-b或者b^a*/ a= ③ ;/*答案a-b或者a^b*/ printf("a=%d,b=%d\n",a,b); } 2下面程序的功能是根据近似公式: π/6≈ 1/1^2+1/2^2+1/3^2+ …… +1/n^2,求π值。 #include double pi(long n) { double s=0.0; long i; for(i=1;i<=n;i++)s=s+ ① ; /*答案1.0/(float)(i*i)*/ return( ② );/*答案sqrt(6*s)*/ } 3下面程序的功能是计算1-3+5-7+ …… -99+101的值。 main() { int i,t=1,s=0; for(i=1;i<=101;i+=2) { ① ;/*答案t=t*i*/ s=s+t; ② ;/*答案t=t>0? -1: 1*/ } printf("%d\n",s); } 4下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。 main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while( ① )/*答案 x>=0*/ { if(x>amax) amax=x; if( ② ) amin=x;/*答案 x scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,amin); } 5下面程序的功能是将形参x的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标为0的元素中。 fun(int x,int b[]) { int k=0,r; do{ r=x% ① ;/*答案2*/ b[k++]=r; x/= ② ;/*答案 2*/ }while(x); } 6下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数。 main() { int i,j; for(i=0; ① ;i++) /*答案 i<=9*/ { j=i*10+6; if( ② ) countinue;/*答案 j%3! =0*/ printf("%d",j); } } 7下面程序的功能是用辗转相除法求两个正整数m和n的最大公约数。 inthcf(int m,int n) { int r; if(m { r=m; ① ;/*答案 m=n */ n=r; } r=m%n; while( ② )/*答案 r! =0*/ { m=n; n=r; r=m%n; } ③ ;/*答案 return(n)*/ } 8下面程序的功能是使用冒泡法对输入的10个浮点数从小到大进行排序。 排好序的10个数分两行输出。 程序如下: main() { ① ; /*答案 float a[10]*/ int i,j; printf("Input 10 numbers please\n"); for(i=0; ② ;i++ ) /*答案 i<=9*/ scanf("%f", &a[i]); printf("\n"); for(i=2; ③ ;i++ ) /*答案 i<=8*/ for(j=0; ④ ;j++ )/*答案 j<=9-i */ if( ⑤ ) /*答案 a[j]>a[j+1]*/ { x=a[j]; ⑥ ;/*答案a[j]=a[j+1]*/ a[j+1]=x; } printf("The sorted 10 numbers;\n"); for(i=0; ⑦ ;i++ ) /*答案 i<=9*/ { if( ⑧ ) /*答案 i%5==0*/ printf("\n"); printf("%f\t",a[i]); } printf("\n"); } 9下面程序的功能是读入20个整数,统计非负数个数,并计算非负数之和。 main() { int i,a[20],s,count; s=count=0; for(i=0;i<20;i++ ) scanf("%d", ① );/*答案 &a[i]*/ for(i=0;i<20;i++) { if(a[i]<0) ② ;/*答案 continue*/ s+=a[i]; count++; } printf("s=%d\t count=%d\n",s,count); } 10下面程序的功能是删除字符串s中的空格。 main() { char *s="Beijing ligong daxue"; int i,j; for(i=j=0;s[i]! ='\0';i++) if(s[i]! = ' ') ① ;/*答案 s[j++]=s[i]*/ else ② ;/*答案 s[j]=s[i]*/ s[j]= '\0'; printf("%s",s); } 11下面程序的功能是将字符串s中所有的字符'c'删除。 请选择填空。 #include main( ) { char s[80]; int i,j; gets(s); for(i=j=0;s[i]! = '\0';i++ ) if(s[i]! = 'c') ① ;/*答案 s[j++]=s[i]*/ s[j]= '\0'; puts(s); } 12下面程序的功能是输出两个字符串中对应相等的字符。 请选择填空。 #include char x[]="programming"; char y[]="Fortran"; main() { int i=0; while(x[i]! = '\0' && y[i]! = '\0') if(x[i]==y[i]) printf("%c", ① );/*答案 x[i++]*/ else i++; } 13下面程序的功能是将字符串s中的每个字符按升序的规则插到数组a中, 字符串a已排好序。 #include main() { char a[20]="cehiknqtw"; char s[]="fbla"; int i,k,j; for(k=0;s[k]! = '\0';k++ ) { j=0; while(s[k]>=a[j] && a[j]! = '\0' ) j++; for( ① ) /*答案 i=strlen(a);i>=j;i--*/ ② ;/*答案 a[i+1]=a[i]*/ a[j]=s[k]; } puts(a); } 14下面的函数index(char s[], char t[])检查字符串s中是否包含字符串t,若包含,则返回t在s中的开始位置(下标值),否则送回-1。 index(char s[], char t[]) { int i,j,k; for(i=0;s[i]! = '\0';i++ ) { for(j=i,k=0; ① && s[j]==t[k];j++,k++) ;/*答案 t[k]! = '\0' */ if( ② ) /*答案 t[k]== '\0'*/ return (i); } return(-1); } 15下面程序的功能是计算S= 1! +2! +…+n! 。 long fun(int n) { int i; long s=1; for(i=1;i ① ;i++) /*答案 <=n*/ s*=i; return( ② );/*答案 s*/ } main() { int k,n; long s; scanf("%d",&n); s= ③ ;/*答案0*/ for(k=0;k<=n;k++) s+= ④ ;/*答案 fun(k)*/ printf("%ld\n",s); } 16以下程序是计算学生的年龄。 已知第一位最小的学生年龄为10岁,其余学生的年龄一个比一个大2岁,求第5个学生的年龄。 age( int n ) { int c; if( n==1 ) c=10; else c= ① ;/*答案 2+age(n-1)*/ return(c); } main() { int n=5; printf("age: %d\n", ② );/*答案 age(5)*/ } 17下面的函数是一个求阶乘的递归调用函数。 facto(int n) { if( n == 1 ) ① ;/*答案 return (1)*/ else return( ② );/*答案 n*facto(n-1)*/ } 18下列函数是求一个字符串str的长度。 int strlen( char *str ) { if( ① ) return (0);/*答案 str=='\0'*/ else return ( ② );/*答案 1+strlen(str+1)*/ } 19函数revstr(s)将字符串s置逆,如输入的实参s为字符串"abcde", 则返回时 s 为字符串"edcba"。 递归程序如下: revstr( char *s ) { char *p=s, c; while(*p) p++; ① ;/*答案 p--*/ if(s { c=*s; *s=*p; ② ;/*答案 *p='\0' */ revstr(s+1); ③ ;/*答案 *p=c*/ } } 如下是由非递归实现的revstr(s)函数: revstr (char *s) { char *p=s, c; while( *p ) p++; ④ ;/*答案 p--*/ while( s { c=*s; ⑤ = *p;/*答案 *s++*/ *p-- = c; } } 注释: 在递归算法中,指针s指向字符串首部要反向的字符,即要将指针s所指向的字符与指针p 所指向的字符串尾的字符('\0')进行交换,在交换过程中,将尚没有交换的字符串的中间部分作为一个整体,进行递归处理。 程序中首先执行"c=*s",将首字符存入临时变量;然后执行"*s=*p",将尾字符存入串首;执行"revstr(s+1)"是递归处理串的中间部分,这时,在②处应当填入"*p='\0'",即存入串结束标记。 这是这一程序中的关键所在。 在③处要完成将存在临时变量c中的字符存入串尾的工作,应当填写"*p=c"。 20下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是"ABCDE",反序为"EDCBA"。 void invent(char *str,int n) { char t; t=*str; *str=*(str+n-1); *(str+n-1)=t; if( n>2 ) invent ( ① ,n-2);/*答案 str+1*/ else ② ;/*答案 return*/ } 21下面程序的功能是实现数组元素中值的逆转。 main() { int i,n=10,a[10]={1,2,3,4,5,6,7,8,9,10}; invert(a,n-1); for(i=0;i<10;i++) printf("%4d",a[i]); printf("\n"); } invert(int *s,int num) { int *t,k; t=s+num; while( ① ) /*答案 s { k=*s;*s=*t;*t=k; ② ;/*答案 s++*/ ③ ;/*答案 t--*/ } } 22下面函数的功能是将字符变量的值插入已经按ASCII码值从小到大排好序的字符串中。 void fun(char *w,char x,int *n) { int i,p=0; while(x>w[p]) ① ;/*答案 p++*/ for(i=*n;i>=p;i--) ② ;/*答案w[i+1]=w[i]*/ w[p]=x; ++*n; } 23下面程序的功能是输入学生的姓名和成绩,然后输出。 #include struct stuinf { char name[20]; /* 学生姓名 */ int score; /* 学生成绩 */ } stu, *p; main ( ) { p=&stu; printf("Enter name: "); gets( ① );/*答案 stu.name*/ printf("Enter score: "); scanf("%d", ② );/*答案&stu.score*/ printf("Output: %s, %d\n", ③ , ④ );/*答案p->name*//*答案p->score*/ }: 24下面程序的功能是按学生的姓名查询其成绩排名和平均成绩。 查询时可连续进行,直到输入0时才结束。 #include #define NUM 4 struct student { int rank; char *name; float score; }; ① stu[ ]={3,"liming",89.3,4,"zhanghua",78.2,1,"anli",95.1,2,"wangqi",90.6}; /*答案struct student*/ main() { char str[10]; int i; do { printf("Enter a name"); scanf("%s",str); for( i=0;i if( ② )/*答案strcmp(stu[i].name,str)==0*/ {printf("Name : %8s\n",stu[i].name); printf("Rank : %3d\n",stu[i].rank); printf("Average : %5.1f\n",stu[i].score); ③ ;/*答案 break*/ } if( i>=NUM ) printf("Not found\n"); }while( strcmp(str,"0")! =0 ); } 25下面函数将指针p2所指向的线性链表,串接到p1所指向的链表的末端。 假定p1所指向的链表非空。 #define NULL 0 struct link { float a; struct link *next; }; concatenate (struct list * p1,struct list *p2 ) { if( p1->next==NULL ) p1->next=p2; else concatenate( ① ,p2);/*答案p1->next*/ } 26下面函数的功能是创建一个带有头结点的链表,将头结点返回给主调函数。 链表用于储存学生的学号和成绩。 新产生的结点总是位于链表的尾部。 struct student { long num; int score; struct student *next; }; struct student *creat() { struct student *head=NULL,*tail; long num; int a; tail= ① malloc(LEN);/*答案 (struct student *)*/ do{ scanf("%ld,%d",&num,&a); if(num! =0) { if(head==NULL) head=tail; else ② ;/*答案 tail=tail->next*/ tail->num=num; tail->score=a; tail->next=(struct student *)malloc(LEN); } else tail->next=NULL; }while(num! =0); return( ③ );/*答案head*/ } 27下面程序的功能是统计文件中的字符的个数。 #include main() { long num=0; ① *fp;/*答案FILE*/ if((fp=fopen("fname.dat", "r"))==NULL) { printf("Can't open the file! "); exit(0); } while( ② ) /*答案! feof(fp)*/ { fgetc(fp);num++;} printf("num=%d\n",num); fclose(fp); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 阅读 填空