2011计算机二级考试C语言十套上机题汇总(3)
- 格式:docx
- 大小:18.45 KB
- 文档页数:8
计算机等级考试二级C语言超级经典400道题目1、C语言程序的基本单位是_C__ A) 程序行 B) 语句 C) 函数 D) 字符、C、12、C语言程序的三种基本结构是__A__ A、顺序结构,选择结构,循环结构 B、递归结构,循环结构,转移结构 C、嵌套结构,递归结构,顺序结构 D、循环结构,转移结构,顺序结构、A、13、C语言规定,程序中各函数之间A A) 既允许直接递归调用也允许间接递归调用 B) 不允许直接递归调用也不允许间接递归调用 C) 允许直接递归调用不允许间接递归调用 D) 不允许直接递归调用允许间接递归调用、A、14、C语言中可处理的文件类型是( ) A) 文本文件和数据文件 B)文本文件和二进制文件 C) 数据文件和二进制文件 D)数据代码文件、B、15、C语言可执行程序的开始执行点是( ) A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数、C、16、C语言提供的合法的数据类型关键字是 A)Double B) short C) integer D) Char、B、17、C语言中,运算对象必须是整型数的运算符是 A) % B) \ C) %和\ D) * *、A、18、C语言中函数返回值的类型是由( )决定。
A) return语句中的表达式类型 B) 调用函数的主调函数类型 C) 调用函数时临时 D) 定义函数时所指定的函数类型、D、19、C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为_____。
A、该数组的长度。
B、该数组的元素个数。
C、该数组中各元素的值。
D、该数组的首地址。
、D、110、C语言中数组下标的下限是________。
A、1 B、0 C、视具体情况 D、无固定下限、B、111、C语言中提供的合法关键字是____ A、swith B、cher C、case D、default、D、112、C语言中文件的存取方式是________。
重要说明:本题库为从题中一题一题复制出来工作量大,而且有许多表达式无法在word中快速表示出来(这样会加大工作量)故而省略,或者表达错位,有的地方可能或者肯定会有错,我相信准备参加C语言二级考试的同学应当能够对照参考答案看出来,这是2011年最新版最完整考试题库,相信大家一定都能通过!第一套程序填空给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
如输入一个数:27638496,新的数为729第一空:{ t=*n%10;第二空:if(t%2!=0)第三空:*n=x;2.程序修改给定程序modi1.c中函数fun的功能是:计算n!。
例如,给n输入5,则输出120.000000。
double fun(int n ){ double result=1.0;/*****found******/if(n==0)return 1.0;while(n>1&&n<170)/*****found******/result*=n--;return result;}程序设计请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。
long fun(char *p){int i,len,t;long x=0;len=strlen(p);if(p[0]==‘-‗){ t=-1;len--;p++;}else t=1;while(*p)x=x*10-48+(*p++);return x*t;}第二套1. 给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
2011年全国计算机二级C语言上机题题库1:第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:int fun(int score[],int m,int below[]){int i,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:void fun(int *a, int *n){int i,j=0;for(i=2;i<1000;i++)if ((i%7==0 || i%11==0) && i%77!=0)a[j++]=i;*n=j;}3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x 且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案:void fun(int x, int pp[ ], int *n){int i=1,j=0;k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0){t[j]=I;j++;}for(i=0;i<j;i++)if(x%t[i]==0){pp[k]=t[i];k++;}*n=k;}4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
计算机二级C上机考试题库及答案一、单项选择题(每题1分,共10分)1. 在C语言中,以下哪个选项是正确的字符串定义方式?A. char str[] = "Hello, World!";B. char str[] = {'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};C. char str[] = {"Hello, World!"};D. char str[] = "Hello, World!";答案:A2. 下列哪个函数用于将字符串s1复制到s2中?A. strcat(s1, s2);B. strcpy(s1, s2);C. strcmp(s1, s2);D. strncpy(s1, s2, n);答案:B3. 在C语言中,以下哪个关键字用于声明一个函数?A. intB. voidC. returnD. function答案:A4. 如果一个变量被声明为static int,那么这个变量的生命周期是?A. 只在函数调用期间B. 程序运行期间C. 只在程序启动时D. 只在程序结束时答案:B5. 在C语言中,以下哪个运算符用于计算两个整数的差?A. +B. -C. *D. /答案:B6. 以下哪个选项不是C语言中合法的标识符?A. _myVarB. my_varC. 2ndVarD. var$name答案:C7. 在C语言中,以下哪个选项是正确的数组定义方式?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2, 3};D. int arr[] = {1, 2, 3, 4};答案:A8. 以下哪个选项是正确的C语言注释方式?A. /* This is a comment */B. // This is a commentC. //* This is a commentD. /* This is a comment */答案:A9. 在C语言中,以下哪个选项是正确的多行字符串定义方式?A. char str[] = "Line1\nLine2";B. char str[] = 'Line1\nLine2';C. char str[] = "Line1\nLine2";D. char str[] = "Line1\nLine2";答案:A10. 在C语言中,以下哪个选项是正确的结构体定义方式?A. struct Student {int id;char name[50];};B. struct Student {int id;char name[];};C. struct Student {int id;char name[50] = "John Doe";};D. struct Student {int id;char name[];};答案:A二、填空题(每题2分,共20分)1. 在C语言中,使用________运算符可以对变量进行自增操作。
2011年3月计算机二级考试c 语言试题及答案详细解析2011年3月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题(1-10,21-40每题2分,11-20每题1分,共70分)(1)下列关于栈叙述正确的是A)栈顶元素最先能被删除B)栈顶元素最后才能被删除C)栈底元素永远不能被删除D)以上三种说法都不对(2)下列叙述中正确的是A)有一个以上根结点的数据结构不一定是非线性结构B)只有一个根结点的数据结构不一定是线性结构C)循环链表是非线性结构D)双向链表是非线性结构(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)A)3 B)4 C)6 D)7(4)在软件开发中,需求分析阶段产生的主要文档是A)软件集成测试计划 B)软件详细设计说明书C)用户手册 D)软件需求规格说明书(5)结构化程序所要求的基本结构不包括A)顺序结构 B)GOTO跳转C)选择(分支)结构 D)重复(循环)结构(6)下面描述中错误的是A)系统总体结构图支持软件系统的详细设计B)软件设计是将软件需求转换为软件表示的过程C)数据结构与数据库设计是软件设计的任务之一D)PAD图是软件详细设计的表示工具(7)负责数据库中查询操作的数据库语言是A)数据定义语言B)数据管理语言C)数据操纵语言A)a=(b=4)=3; B)a=b=c+1;C)a=(b=4)+c; D)a=1+(b=c=4);(16)有以下程序段char name[20];int num;scanf("name=%s num=%d",name;&num);当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name 的值为A)Lili B)name=Lili C)Lili num= D)name=Lili num=1001(17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A)必须是逻辑值 B)必须是整数值C)必须是正数 D)可以是任意合法的数值(18)有以下程序#includemain(){ int x=011;printf("%d\n",++x);}程序运行后的输出结果是A)12 B)11 C)10 D)9(19)有以下程序#includemain(){ int s;scanf("%d",&s);while(s>0){ switch(s){ case1:printf("%d",s+5);case2:printf("%d",s+4); break;case3:printf("%d",s+3);default:printf("%d",s+1);break;}scanf("%d",&s);}}运行时,若输入1 2 3 4 5 0<回车>,则输出结果是A)6566456 B)66656 C)66666 D)6666656(20)有以下程序段int i,n;for(i=0;i<8;i++){ n=rand()%5;switch (n){ case 1:case 3:printf("%d\n",n); break;case 2:case 4:printf("%d\n",n); continue;case 0:exit(0);}printf("%d\n",n);}以下关于程序段执行情况的叙述,正确的是A)for循环语句固定执行8次 B)当产生的随机数n为4时结束循环操作C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行(21)有以下程序#includemain(){ char s[]="012xy\08s34f4w2";int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>='0'&&s[i]<='9') n++;printf("%d\n",n);}程序运行后的输出结果是A)0 B)3 C)7 D)8(22)若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++) printf("*****\n");下面关于语句执行情况的叙述中正确的是A)循环体执行两次B)循环体执行一次C)循环体一次也不执行D)构成无限循环(23)有以下程序#includemain(){ char b,c; int i;b='a'; c='A';for(i=0;i<6;i++){ if(i%2) putchar(i+b);else putchar(i+c);} printf("\n");}程序运行后的输出结果是A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef(24)设有定义:double x[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是A)scanf("%f",&x[6]); B)scanf("%lf",*(x+6));C)scanf("%lf",p+6); D)scanf("%lf",p[6]);(25)有以下程序(说明:字母A的ASCII码值是65)#includevoid fun(char *s){ while(*s){ if(*s%2) printf("%c",*s);s++;}}main(){ char a[]="BYTE";fun(a); printf("\n");}程序运行后的输出结果是A) BY B) BT C) YT D) YE(26)有以下程序段#includemain(){ …while( getchar()!='\n');…}以下叙述中正确的是A)此while语句将无限循环B) getchar()不可以出现在while语句的条件表达式中C)当执行此while语句时,只有按回车键程序才能继续执行D)当执行此while语句时,按任意键程序就能继续执行(27)有以下程序#includemain(){ int x=1,y=0;if(!x) y++;else if(x==0)if (x) y+=2;else y+=3;printf("%d\n",y);}程序运行后的输出结果是A)3 B)2 C)1 D) 0(28)若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是A)p=s; B)p=k; C)p=s[0]; D)k=s;(29)有以下程序#includevoid fun(char *c){ while(*c){ if(*c>='a'&&*c<='z') *c=*c-('a'-'A');c++;}}main(){ char s[81];gets(s); fun(s); puts(s):}当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
第一套1.程序填空程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
第一处struct student t;第二处for(i=0;i<n-1;i++)第三处if(strcmp(a[i].name,a[j].name)>0)2程序修改给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。
/**found**/q=p+i;/**found**/while(q>p)3程序设计学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
int fun(STREC *a,STREC *b,int l,int h){int i,j=0;for(i=0;i<N;i++)if((a[i].s>=1&&a[i].s<=h)b[j++]=a[i];return j;}第二套1.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处free(q);第二处q=p->next;第三处q=q->next;2. 程序修改给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。
/**found**/p=j;/**found**/p=i;3. 程序设计请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n 返回这些数的个数。
一、单项选择题【1.1】以下不正确的C语言标识符是____。
A) int B) a_1_2 C) ab1exe D) _x【1.2】以下是正确的C语言标识符是____。
A) #define B) _123 C) %d D) \n【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。
••• A) print B) i\am C) Pxq D) str_l ••• _3d one_half My->book Cpp ••• oodbs tart$it line# pow ••• aBc 3pai His.age while【1.4】下面各选项组中,均是C语言关键字的组是。
A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type【1.5】下列不属于C语言关键字的是。
A) default B) register C) enum D) external【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。
A) 程序文件的开始B) 程序文件的最后C) 它所调用的函数的前面D) 程序文件的任何位置【1.7】下列关于C语言的叙述错误的是____A) 大写字母和小写字母的意义相同B) 不同类型的变量可以在一个表达式中C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型D) 同一个运算符号在不同的场合可以有不同的含义【1.8】在C语言中,错误的int类型的常数是。
A) 32768 B) 0 C) 037 D) 0xAF【1.9】执行语句printf("%x",-1);屏幕显示____。
A) -1 B) 1 C) -ffff D) ffff【1.10】已知long i=32768;执行语句printf("%d",i);屏幕显示____。
2011计算机二级考试C语言考前必看十套上机题(1)1.填空题请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面。
例如:str1=“How do”,str2=“ you do?”,结果输出:How do you do?注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:#include#include#define N 40void fun(char *str1,char *str2){int i=0;char *p1=str1;char *p2=str2;while(【1】)i++;for( ;【2】;i++)*(p1+i)=【3】;*(p1+i)='\0';}main(){char str1[N],str2[N];clrscr();printf("*****Input the string str1 &str2*****\n");printf(" \nstr1:");gets(str1);printf(" \nstr2:");gets(str2);printf("**The string str1 & str2**\n");puts(str1);puts(str2);fun(str1,str2);printf("*****The new string *****\n");puts(str1);}答案及评析:【1】*(p1+i) 【2】*p2 【3】*p2++【解析】填空1:变量i用来记录字符串str1的长度,当指针指到字符串str1结束标志符‘\0'时,while循环结束,变量i停止累加。
填空2:指针p2指向字符串str2,通过for循环将字符串str2接在str1后面,循环结束的条件是指针p2所指的字符是字符串结束标志符‘\0'。
说明:主要找你的填空题第一道题的题干,然后后面的答案都是相对应一套一套的,如:加入你的填空题第一道题的题干和这里的第1套是一样的,那你所有题的答案都是相对应的第1套。
其他类推。
假如:第20题(用红色标记了)的题干为你考生的第一道填空题的第一个小空,那么它所对应的填空题答案就是下面的蓝色字体,相对应的改错题为第20套题,编程题也是第20套!其他依次类推!一、程序填空题填空:1、int fun(___1___ *std)(1)STYPE (2)FILE (3)fp2、void WriteText(FILE ___1___)(1) *fw (2) str (3) str3、fprintf(___1___,"%d %f\n",i,sqrt((doubl e)i));(1)fp(2)fclose(fp)(3)myfile3.txt 4、if((fs=fopen(source, ___1___))==NULL)(1)"r" (2 )fs (3)ft 5、s->data=___1___;(1)x (2)p (3)s6、t=t->___1___;(1) next (2) t->data (3) t7、free(___1___);(1) q (2) next (3) next8、while(p!=___1___)1)0或NULL (2)n (3)head,ch 9、/**********found**********/___1___=0;(1) *n (2) next (3) head10、s+= p->___1___;(1) data (2) next (3) head 11、for(i=0; i<___1___; i++)(1)M (2)< (3)k12、t2[j]=s[i]; ___1___;(1) j++ (2) s[i]=t1[i] (3) j 13、if(s[i]>='0' ___1___ s[i]<='9')(1)&& (2)0 (3)s[j]14、for(i=0; ___1___ !=0; i++)(1)s[i] (2)'9' (3) *t=n;15、if(n%2==0) k=n-___1___ ;(1) 1 (2) s[k] (3) c16、for(i=1; i<n-2; i=i+2) {/**********found**********/___1___;(1) t=i (2) i (3) 017、for(i=0; s[i]!=___1___ ; i++)(1) 0或'\0' (2) 0 (3) c18、for(i=0; i<N; ___1___ )(1) i++ (2) m (3) m19、for(i=0; i<___1___; i++)(1)N (2)N-1 (3)020、t[0][N-j-1]=t[j][___1___ ];(1)0 (2)j-- (3)j21、n=__1__; t=100;(1) 0 (2) x (3) t++22、while(t<=__1__){(1)999 (2)t/10 (3)x23、/**********found**********/i=__1__;(1)1 (2)s (3)i*1024、if(t%2==__1__)(1) 0 (2) 10*x (3) n/1025、{ t=*n % __1__;(1) 10 (2) 0 (3) x26、/**********found**********/s=__1__;(1)0 (2)n (3)(t*t)27、k=__1__;for(i=1; i<=n; i++) {(1)1 (2)2*i (3) (-1)28、x=__1__/4;(1)3.0 (2)> (3) (2*i+1)29、s=0; i=__1__;(1)0(2)i++(3)2.0*i30、t[j]=__1__; j++;}(1)s[i] (2)k (3)031、void fun(int (*a)[N], int __1__)(1) k (2) N (3) a[k][i]32、for(p=1; p<= __1__; p++)(1)k (2)N-1 (3)temp33、rmax=a[i][j]; c= __1__ ; }(1)j (2)0 (3)i++34、if(n>=len) strcpy(__1__);(1)j (2)0 (3)i++35、lp= __1__ ;rp=s+strlen(s)-1;(1)s (2)—(3) return 036、__1__ ; flag=1;}(1)n++ (2)0 (3)s++37、*(t+n)= __1__ ; n++; }(1) *s (2) s++ (3) n38、if( isdigit(*s) ) sum+= *s- __1__ ;(1)48 (2)s++ (3)sum39、ch=tolower(__1__);(1)48 (2)s++ (3)sum40、k= __1__ ;for(j=i+1; j<N; j++)(1) i (2) ps[j] (3) tp41、__1__ (*f)();double r1, r2;(1)double (2)f1 (3) f242、p = __1__ ;while (p) {(1)h->next (2)p->next (3)>=43、__1__ * fun(NODE *h)(1)h->next (2)p->next (3)>=44、p = h->__1__;(1)next (2)0 (3)r45、q = __1__ ;(1)p->next (2)q (3)p->next46、__1__ fun(int i, double x,double y)(1) double (2) f1 (3) f247、__1__ fp;char ch;(1) FILE * (2) fp (3)ch48、__1__ fp;char str[100], str1[100],str2[100];1)File * (2) fclose(fp) (3) fp49、fp = fopen(filename, __1__);(1)"rb" (2)> (3)fwrite50、fp = fopen(__1__, "rb+");(1)filename (2 ) fp (3) fp改错:1、(1) for(i=0;i<=sl;i++) (2) t[2*sl]='\0'或t[sl+sl]='\0'2、(1) void fun(long s,long *t)(2)s1=s1*10;3、(1)for(i=j+1;i<n;i++) (2)p=i;4、(1)if (d%2==0) (2 )s/=10;5、(1)long k=1; (2)num/=10;6、(1)void fun(char *a)(2) print("%c",*a);7、(1) 缺分号(2) p = i;8、(1) for(i=0,t=0;p[i];i++)(2) c[t]='\0';9、(1) a=NULL; (2) if(*r==*p)10、(1) while(*r) (2) *a=*r;a++;r++;11、(1)if(('a'<=tt[i])&&(tt[i]<='z'))(2)tt[i]-=32;12、(1) for(j = i + 1; j < 6; j++)(2) *(pstr + i) =*( pstr + j);13、(1)for(i=2;i<=m;i++)(2)y+=1.0/(i*i);14、(1) t=*x;*x=y; (2) return (t);15、(1) long s = 0,t = 0; (2) t = t / 10;16、(1) while(fabs(t)>=num) (2) t=s/n;17、(1) double sum=0.0; (2) sum/=c;18、(1) while((high>=2)&&(n<10))(2) 缺分号19、(1)s=s+(n+1.0)/n; (2)return t;20、(1)double f(double x) (2)缺分号21、:(1) int i,s1; (2) t[i]=s[s1-1-i];22、(1) void fun(long s,long *t) (2)while(s>0)23、(1)int fun(int n,int xx[][M]) (2)printf("%d",xx[i][j]);24、(1) *t=0; (2) if (d%2!=0)25、(1) if (n = = 0)(2)缺分号26、(1)for(i=0;str[i];i++)(2) for(i=0; str[i];i++)27、(1)缺分号(2)if (m= =k)28、(1)double fun (int n)(2)s=s+(double)a/b;29、(1)void fun (char *s,char *t)(2)t[2*d]='\0';30、(1)while (*w) (2)if(*r==*p)31、(1) for(i=strlen(t)-1;i;i--)(2) if(t[j]>t[j+1])32、(1)void fun(int a[][M],int m)(2)a[j][k]=(k+1)*(j+1);33、(1)for(i=2;i<=m;i++) (2)y-=1.0/(i*i);34、(1)if (i%k==0)(2)if(k>=i)35、(1)double fun (int n)(2)c=a;a+=b;b=c; 36、(1)t+=s[k]; (2)*aver=ave;37、(1) int j,c=0; double xa=0.0;(2) if(x[j] >= xa)38、(1)if ((k%13= =0) || (k%17= =0))(2) }39、(1) double fun(int k) (2) return s;40、(1) double fun(int n) (2) return sum;41、(1)p=h->next; (2)p=p->next;42、(1)p=h->next; (2)p=p->next;43、(1)if(i%2 || s[i]%2==0)(2)t[j]=0;44、(1)r=t;(2)if(*r= =0)45、(1)'\0' (2)s++;46、(1) char *fun(char *s, char *t)(2) ss++ (3) tt++47、(1)s[j++]=s[i];(2) s[j]= '\0';48、(1)t=(STU*)calloc(sizeof(STU),m);(2) t[k]=b[j];49、(1)p=s; (2) ; (缺分号)50、(1)p=(NODE*)malloc(sizeof(NODE));(2)return h;编程:1、*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);2、int i,j=0,min=a[0].s;for(i=0;i<N;i++){if(a[i].s<min){j=0;b[j++]=a[i];min=a[i].s;}else if(min==a[i].s)b[j++]=a[i];}return j;3、*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;4、int i = 0, j = 0;while(s[i]){ if(i % 2 == 0 && s[i] % 2 == 0)t[j++] = s[i];i++;}t[j] = 0;5、int i;float aver=0.0;for(i=0;i<n;i++)aver+=a[i];aver=aver/n;return aver;6、int i;char *p=s,*q=t;int n=0,m=0;while(*p) {n++;p++;}while(*q){m++;q++;}if(n>=m) p=s;elsep=t;return p;7、*n=0; int i;for(i=1;i<=m;i++)if(i%7==0||i%11==0)a[*n++]=i;8、int i;for(i=1;i<strlen(ss);i+=2){If( (ss[i]>='a'&&ss[i]<='z') ss[i]-=32;9、int i,j=0;for(i=0;i<strlen(s);i+=2)if(s[i]%2==0) t[j++]=s[i];t[j]='\0';10、int i,j=0;for((i=0;i<strlen(s);i+=2)t[j++]=s[i];t[j]='\0';11、int i,j;int t=0;for(i=2;i<m;i++){j=2;while(j<i){if(i%j==0){xx[t]=i;t++;break;}j++;}*k=t;12、int cnt=0;char *p=ss;while(*p){if(*p==c)cnt++;p++;}return cnt;13、int c[3][3];for(i=0,i<3;i++)for(j=0;j<3;j++){c[i][j]=a[j][i];b[i][j]=a[i][j]+c[i][j];}14、int i;*n=0;for(i=7;i<1000;i++)if(((i%7)==0)||((i%11)==0)&&((i%77)!=0)a[(*n)++]=i;15、char *p=tt;int i;for(i=0;i<26;i++)pp[i]=0;while(*p){if(*p>='a' &&p<='z')pp[*p-'a']+=1;p++;}16、int p,m=0;for(p=0;p<LEN;p++)if(p!=n){b[m]=a[p];m++;}b[m]='\0';17、int k;float str=1.0,sum=1.0;for(k=2;k<=n;k++){sum=sum+k;str=str+1/sum;}return str;18、float x1=0.0,x0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>0.000001);return x1;19、int f0=0,f1=1,f;do{f=f0+f1;f0=f1;f1=f;}while(f<t);return f;20、double s=0.0;int i;for(i=1;i<=m;i++)s=s+log(1.0*i);s=sqrt(s);return s;21、*c=(b/10)*1000+(a/10)*100+(b%10)*1 0+a%10;22、STREC tmp;int i,j;for (i=0;i<N;i++)for (j=i+1;j<N;j++)if(a[i],s<a[j],s){tmp=a[i]; a[i]=a[j]; a[j]=tmp;23、*c=(a/10)*1000+(b%10)*100+(a%10)*1 0+(b/10);24、char *p=p1;while (*p)p++;while(*p2){*p++=*p2++;*p=0;}25、long s=0, t;int i=0,j,n=strlen(p),k,s1;if (p[0]==' -')i++;for (j=i;j<=n-1;j++) {t=p[j]-'0';s1=10;for (k=j;k<n-1;k++)t*=s1;s+=t;}if (p[0]=='-')return –s;else return s;26、double s;float n,t,pi;t=1;pi=0;n=1.0;s=1.0;while((fabs(s))>=eps){pi+=s; t=n/(2*n+1);s*=t; n++;}pi=pi*2; return pi;27、i nt i;*max=a[0];*d=0;for(i=0;i<n;i++)if(*max<a[i]);{*max=a[i];*d=i;}28、int i,j,max=a[0][0];for(i=0;i<2;i++)for (j=0;j<M;j++)if (max<a[i][j]) max=a[i][j];return max;29、int i,j=o;for(i=1;i<strlen(s);i+=2)if (i%2==0&&s[i]%2)t[j++]=s[i];t[j]='\0';30、int i,j=0;for(i=1;i<strlen(s);i+=2)if(s[i]%2)t[j++]=s[i];t[j]='\0';31、char *p=ssint i=0;while(*p){if((i%2)&&(*p>='a'&&*p<='z'))*p-=32;p++;i++;}32、*c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10;33、float av=0.0;int i,j=0;for(i=0;i<m;i++)av+=score[i];av/=m;for(i=0;i<m;i++)if(av>score[i])below[j++]=score[i];return j;34、int i=0; *n=0;for (i=1;i<=x;i++)if((x%i==0)&&(i%2))pp[(*n)++]=i;35、int r=0,temp,p,sign=1;for(temp=m+1;temp<m*m;temp++){for(p=2;p<temp;p++){if(temp%p!=0) sign=1; else{sign=0;break;}}if(sign= =1&&p>=temp){if(k>=0){xx[r++]=temp;k- -;}else break;}}36、int i,pos=0,max=*s;for(i=1;i<t;i++){if(max<*(s+i)){max=*(s+i);pos=i;}}*k=pos;37、float result,temp=1.0;int i;for(i=1; i<=m; i++)temp=temp*i;result=temp;for(temp=1.0,i=1;i<=n;i++)temp=temp*i;result=result/temp;for(temp=1.0,i=1;i<=m-n;i++)temp=temp*i;result=result/temp;return result;38、int i;for(i=21;i<=n;i++)if((i%3= =0)&&(i%7 = =0))sum=sum+i;return sprt(sum);39、double s=0.0;int i;for(i=1;i<=n;i++)s=s+1.0/(i*(i+1));return s;40、int i;double a=1,b=1,s=1;for(i=1;i<=n;i++)41、int i,n=0,fg=1;char *p=str;while(*p){n++;p++;}for(i=0;i<n/2;i++)if(str[i]==str[n-1-i]);else{fg=0;break;}return fg;42、int i,j;for(i=0;i<mm;i++)for(j=0;j<nn;j++){b[*n]=*(*(s+i)+j);*n=*n+1;}43、for(j=0;j<nn;j++) for(i=0;i<mm;i++)b[np++]=s[i][j];44、int i,j,k=0;for(i=0;i<M;i++){for(j=0;j<N;j++)if*(*(a+i)+j){b[k]=*(*(a+i)+j};k++;}elsebreak;b*k+=’\0’;-45、int b[N],i,j=0;for(i=p+1;i<n;i++){b[j]=w[i];j++;}for(i=0;i<=p;i++){b[j]=w[i];j++;}for(i=0;i<n;i++) w[i]=b[i];46、char a[N];int i;for(i=0;i<m;i++) a[i]=w[i];while(w[i]) {w[i-m]=w[i];i++;}i--;m--;for(;m>=0;m--;i--) w[i]=a[m]; 47、for(j=0;j<M;j++)b[n]=s[j][i];48、int i,t,j=0,*p=a;t=p[0];for(i=0;i<=n;i++)if(t==p[i]);else{a[j]=t;t=p[i];j++;}if(i>=n)a[j]=t;return j;49、int i;for(i=0;j<M;i++) b[i]=0;for(i=0;i<N;i++)if(a[i]>=100)b[10]++;else b[a[i]/10]++;50、int i,n=0;for(i=0;i<strlen(s);i++),if(s*i+>=’ a’&&s*i+<=’ z’&&s*i+1+=’ ’||s*i+1+==’\0’)n++;}。
一、填空题:函数fun的功能是:把形参a所指数组中的最大值放在a[0]中,接着求出a 所指数组中的最小值放在a[1]中;再把a所指数组元素中的次大值放在a[2]中,把 a数组元素中的次小值放在a[3]中;其余以此类推。
例如:若a所指数组中的数据最初排列为:1、4、2、3、9、6、5、8、7,则按规则移动后,数据排列为: 9、1、8、2、7、3、6、4、5。
形参n中存放a所指数组中数据的个数。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下BLANK1.C中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include#define N 9/**********found**********/void fun(int ___1___, int n){int i, j, max, min, px, pn, t;/**********found**********/for (i=0; i {max = min = a[i];px = pn = i;/**********found**********/for (j=___3___; j< p>{if (max < a[j]){max = a[j]; px = j;}if (min > a[j]){min = a[j]; pn = j;}}if (px != i){t = a[i]; a[i] = max; a[px] = t;if (pn == i) pn= px;}if (pn != i+1){t = a[i+1]; a[i+1] = min; a[pn] = t;}}}main(){int b[N]={1,4,2,3,9,6,5,8,7}, i;printf("\nThe original data :\n");for (i=0; i< ?, printf(?%4d>fun(b, N);printf("\nThe data after moving :\n");for (i=0; i< ?, printf(?%4d>}解题答案:/第一空/void fun(int *a, int n)/第二空*/for (i=0; i /第三空/for (j=i+1; j< p>******************************************二、改错题:给定程序MODI1.C中函数fun的功能是:按顺序给s所指数组中的元素赋予从2 开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中。
1.填空题
请补充函数fun(),该函数的功能是:从…a‟到…z‟统计一个字符串中所有字母字符各自出现的次数,结果保存在数组alf中。
注意:不区分大小写,不能使用字符串库函数。
例如,输入:“A=abc+5*c”,结果为:a=2,b=1,c=2。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#define N 100
void fun(char *tt,intalf[])
{
int i;
char *p=tt;
for(i=0;i<26;i++)
【1】;
while(*p)
{
if(*p>='A'&&*p<='Z')
【2】;
if(*p>='a'&&*p<='z')
alf[*p-'a']++;
【3】;
}
}
main()
{
charstr[N];
char a='a';
intalf[26],k;
clrscr();
printf("\nPlease enter a char string:"); scanf("%s",str);
printf("\n**The original string**\n");
puts(str);
fun(str,alf);
printf("\n**The number of letter**\n");
for(k=0;k<26;k++)
{
if(k%5==0)
printf("\n");
printf("%c=%d ",a+k,alf[k]);
}
printf("\n");
}
答案及评析:
【1】alf[i]=0 【2】*p+=32 【3】p++
【解析】填空1:数组alf[26]用来存放字母字符出现的次数,在使用之前需要清零。
填空2:题目要求不区分大小写,所以可以先将所有的大写字母都转换为对应的小写字母,然后一并记录出现的次数。
将大写字母转换为对应的小写字母,只需将ASCII码加上32就可以了。
填空3:指针p指向字符串tt,通过p自加1来移动指针,访问字符串中的所有字符。
2. 改错题
下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
例如,当s中的数为4576235时,t中的数为4725。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
/**********************found***********************/
int fun(long s,long *t)
{
long s1=10;
*t=s%10;
while(s>0)
{
/**********************found***********************/
s=s%100;
*t=s%10*s1+*t;
s1=s1*10;
}
}
main()
{
long s, t;
clrscr();
printf("\nPlease enter s: "); scanf("%ld",&s);
fun(s,&t);
printf("The result is: %ld\n ",t); }
答案及评析:
(1)错误:int fun(long s,long *t) 正确:void fun(long s,long *t) (2)错误:s=s%100;
正确:s=s/100;
【解析】错误1:函数由指针来完成参数的传递,所以没有返回值,应定义函数的类型为void。
错误2:此处要注意特殊运算符号"%"--取余和"/"--整除的区别。
将一个数整除100则可得到由其百位数以上的数组成的新数字,将一个数整除100取余则可得到由十位数和个位数组成的新数。
3. 编程题
请编写一个函数fun(),它的功能是:求出一个4×M整型二维数组中最小元素的值,并将此值返回调用函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#define M 4
#include
fun (int a[][M])
{
}
main()
{
intarr[4][M]={11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7};
printf("min=%d\n",fun(arr));
}
答案及评析:
fun (int a[][M])
{
inti,j,min=a[0][0];
for(i=0;i<4;i++)
for(j=0;j<M;J++)< p=""></M;J++)<>
if(min>a[i][j])
min=a[i][j]; /*求出二维数组的最小值*/
return min;
}
【解析】此类求最大值或最小值的C语言问题,我们可以采用逐个比较的方式。
要求数组中的所有元素走动一遍,并从中找出最大、最小值,要注意一开始应使min存放数组
中的第一个元素的值。
可按逐行查找也可按逐列查找的方式,本题采用的是逐行查找的方式。
即行下标在外层循环,列下标在内层循环,因为在循环的嵌套中越在内层循环,循环变化就越快。