第三部分 江苏省二级统考近五年试题汇编
(17) =ch; *str=’\\0’;
return ((str= =line)?NULL: (18) ); }
main( ) { FILE *fp; char s[11];
fp=fopen(“a.dat”,”r”);
printf(“%s”,mfgets(s,fp));fclose(fp); } 12、 将1~20的自然数围成一圈,使其相邻的两数之和均为素数,程序中数组a存放1~20中的奇数,数组b存放1~20中的偶数,数组c存放最后结果(既满足上述性质的圈)。程序首先将1(奇数)放入c,从b中选一偶数放入c中,使相邻两数之和为素数;然后再从a中选一奇数放入c,使相邻两数之和为素数,重复此过程直到c中放满为止。 int pr(int n) /*判断n是否为素数*/ { int i,flg=1;
for(i=2;j<=n/2;i++)if(n%i= =0) (19) ; return flg; }
int s(int x[],int m,int i) /*在x[1]至x[i]中找到一个数与m之和为素数*/ { int f=1,n=0;
while( (20) ) if(x[i]= =0)
i--; else
{ n=x[i];
if( (21) )
{x[i]=0;f=0;}
else i--;}
if(i>0)return n;else return 0; } main( )
{int a[11],b[11],c[21],i,j,k,m,n;
for(i=1;i<=10;i++){a[i]=2*i-1;b[i]=2*i;} c[1]=a[1];m=c[1];a[1]=0;j=2; whike(j<=20)
{ if(m%2)n=s(b,m,10);else n=s(a,m,10); if(n>0){c[l]=n;k++; (22) ;} else { printf(“fail!\\n”);exit(0);} }
if(pr(c[1]+n))
{ printf(“\\n success!”);
for(j=1;j<=20;j++)printf(“%d “,c[j]); }
第三部分 江苏省二级统考近五年试题汇编
else printf(“fail!\\n”); } 13、 以下程序从文件in.dat中读入一组整数,其中每个整数代表一个字符串(例如,10代表字符串”for”),用查表方法将所有读入的整数转换成对应的字符串,按顺序存放在数组text中并输出。 struct{
int code;char str[10];}tab[10]=
{ 10,”for”,11,”while”,12,”do”,13,”if”,14,”else”,15,”switch”,16,”break”,17,”goto”,18,”case”,19,”continue”}; main( ) { FILE *fp;
int n,loc,j; char text[80], *pt= (23) ; fp=fopen(“in.dat”,”r”); if(fp= =NULL)exit(1); while(!feof(fp))
{ fscanf(fp,”%d”,&n);loc=find(n); if(loc>=0)
{strcat(pt,tab[loc].str); pt+= (24) ; } }
*pt=’\\0’;puts(text); }
int find(int n) /*折半查找法*/ { int low=0,high=9,mid; while(low<=high) { mid=(low+high)/2; if(n= =tab[mid].code)
return mid; else
if(n>tab[mid].code)low= (25) ; else high=mid-1; }
(26) ; } 14、 设链表上的结点的数据结构定义如下: struct node { int x;
struct node *next;};
假设已经建立了一个链表,h为链首指针。函数deladd的功能是:若链表上能找到结点的x值为value,则从链表上删除该结点(假定链表上的各个结点的值是不同的);否则构造一个新结点,其值为value,并将新结点插入链尾。该函数要求返回新链表的首指针。struct node *deladd(struct node *h,int value)
第三部分 江苏省二级统考近五年试题汇编
{ struct node *p1, *p2; int flag=0; p1=p2=h;
while(p1&&flag= =0) {if(p1->x= =value) { flag=1;
if(p1= =h)
{ h= (27) ;free(p1);} else
{ p2->next= (28) ; free(p1);}
else
{ p2=p1;p1= (29) ;} }
if(flag= =0)
{ p1=(struct node *)malloc(sizeof(struct node)); p1->x=value;p1->next=0; if(h= =0)
h=p1;
else (30) ; }
return h; }
2001年秋上机试卷
一、改错题 【题目】
下面的程序判断一个正整数是否为降序数,再打印组成该整数的每个字符。
设正整数m=d0d1d2d3?d k-1,若满足d i >=d i+1,i=0,1,?,k-2,则m就是一个降序数,如21、433是两个降序数。
含有错误的源程序如下: void main()
{int num,k,di,n,isdec; long m;
char digit[10];
scanf(\ for(;num>0;num--) {n=0;isdec=1;k=0; scanf(\ while(m!=0) {di=m;
digit[n++]=m; m=m/10;
if(k<=di)k=di; else isdec=0; }
第三部分 江苏省二级统考近五年试题汇编
for(;n>=0;n--)
{putchar(digit[n]); putchar(' ');}
if(isdec)printf(\ else printf(\ } } 【要求】
1.将上述程序录入到文件myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句的次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3.改正后的源程序myf1.c保存在考试盘的根目录下,供阅卷用,否则不予评分。 二、编程题 【题目】
程序功能:将一字符串做压缩处理。 编程要求:
1.编写一个函数int compress (char s[ ]),将s中连续出现的多个相同字符压缩成一个字符,统计被删除的字符个数,并返回被删除的字符个数。
2.编写主函数main。从键盘上读入一行字符数据放入一个字符型数组中,调用compress函数对该字符数组中的字符做压缩处理,将压缩后的字符串写入结果文件myf2.out中。
3.用以下数据测试程序:
@@@@@@ I wwillll successful &&&&&& and you too !!!!!! ########## 【要求】
1.将源程序文件取名为myf2.c,输出结果文件取名为myf2.out。
2.数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。 3.源程序文件和运行结果文件均需保存在考试盘的根目录下,供阅卷用。 4.不要复制扩展名为OBJ和EXE的文件到考试盘上。
2002年春季笔试题及上机题 一、 选择题
21、以下标识符中, (21) 不能作用户标识符。 A、scanf B、for C、_sum D、F2 22、已有声明语句“”,与表达式char ch=’B’的值不相同的表达式是 (22) 。(字符A的ASCII码以十进制表示为65)
A、ch=0x42 B. Ch=0102 C. ch=’\\102’ D. ch=066
23、若要对a进行++运算,则a应具有以下说明 (23) 。 A. int a[3][2] B. Char *a[ ]={“12”,”ab”}; C. int b[10], *a=b; D. Char (a)(char)
24、以下对于break语句使用的正确陈述是 (24) 。 A、任何位置 B、循环或switch结构中 C、只在switch结构中 D、只在循环结构中
第三部分 江苏省二级统考近五年试题汇编
25、若有声明“int a=5,b=4,c=3,*p=&a;”,则下列 (25) 表达式语句是正确的。
A. ( *p)++=c; B. *(*p)++;
C. printf(a%4= =0?”=\\n”:”=”,*p); D.a>20?return *p-20:return *p-1;
26、设“int x=2,y=3,z=(++x<=y--)?((--y= =1)?y--:--y):y--;”,则x,y,z的值为 (26) 。
A. 3,0,1 B. 2,0,0 C. 3,1,1 D. 2,2,1 27、下列程序的运行结果 (27) 。 A. 45 B. 33 C. 17 D. 27 main( )
{ static int a[3][3]={1,3,5,7,9,11,13,15,17},y,x,*p=&a[2][2]; for(x=0;x<3;x++)y+=*(p-4*x); printf(“\\n%d”,y); } 28、设有函数f的定义如下: Void f(int x,int *y) { y=x*x*x;} main( )
{ int j,c[4]={1,2,3,4},s[4]={0}; for(j=0;j<4;j++)
/* 调用f函数*/ printf(“%d”,s[j]); }
若在main函数中欲调用函数f,则正确的调用语句是 (28) 。 A. f(c,s) B. f(c[i ],s[i]);
C.f(*(c+i),&s[i]); D. f(c+i ,s+i );
29、设有定义如下:
typedef struct{int x,y;}POINT;
typedef enum{ RED,YELLOW,BLUE,GREEN}COLOR; struct{ POINT xy;COLOR c;}pixel,*p=&pixel;
以下对变量pixel的赋值操作中正确的是 (29) 。 A. pixel={ 1,2,BLUE};
B. scanf(“%d%d%d%d”,p->xy.x,p->xy.y,&pixel.c); C. p->xy.x=1;p->xy.y=2;p->c=BLUE;
D、scanf(“%d%d”,&pixel.xy);pixel.color=2; 30、执行以下程序段后,x,w的值为 (30) 。
int x=0,y=1,z=2,w; if(x++)w=x;
else if(x++&&y>=1)w=y; else if(x++&&z>1)w=z;
A. 0,1 B. 1,1 C. 2,1 D.3,2 二、填空题
? 基本概念(共5分)
1、一个C程序须有一个且只有一个 (1) 函数。
2、int k=1;执行:while(k++<5);后k的值为: (2) 。 3、在程序中需要调用sqrt函数时必须包含头文件 (3) .
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库江苏省计算机二级考试C语言试卷汇编(2001-2005)(3)在线全文阅读。
相关推荐: