重庆市计算机等级考试C语言上机模拟试题

重庆市计算机等级考试C语言上机模拟试题
重庆市计算机等级考试C语言上机模拟试题

重庆市计算机等级考试C语言上机模拟试题

1、函数adddigit的原型为int adddigit(int num);,其功能是求num各位数字之和。要求编制该

函数并用如下所示的主函数进行测试,源程序存入test1.c。

# include “stdio.h”

# include “math.h”

void main()

{ int adddigit(int num);

int n;

scanf(“%d”,&n);

printf(“sum=%d\n”,adddigit(n));

}

2、编制程序输出如下所示图形,源程序存入test11.c。

1

121

12321

1234321

123454321

12345654321

3、编制程序实现功能:从键盘上输入若干个值为0~32767之间的正整数,并将每个整数的

各位数字之和存放在数组a中。要求:被处理数据的个数由键盘输入指定(小于50个数):求每个整数各位数字之和的功能用自定义函数实现:源程序存入test21.c。

4、编制程序实现其6Ⅹ6的整型矩阵的输入数据,然后求出其最大元素以及最大元素位置

的下标并输出的功能,源程序存入test41.c。

5、编程实现从键盘为一个6Ⅹ6整型数组输入数据,然后找出其每一行中的最小值保存在

一维数组中,并输出该一维数组的所有元素。源程序存入test51.c。

6、函数fac的原型为long fac(it j);,其功能是利用静态变量实现n!。要求编制该函数并用如

下的主函数进行测试。源程序存入test61.c。

7、函数chrn的原型为int chrn(char *s,char c);,其功能是测试字符c在字符串s中出现的次

数。要求编制该函数并用相应的主函数进行测试。源程序存入test71.c。

8、求出100~999之间能够被3整除,且至少有一位数字是5的所有整数。源程序存入

test81.c。

9、编写一个程序计算下式之和。

1+(1+2)+(1+2+3)+……+(1+2+3+4+5+6+7+8+9+10). 源程序存入test91.c。

10、Fibonacci数列是这样一个数列,最前面的两个数分别是1和1,从第3个数开始,数列中每个数是其前面的两个数之和。请编写程序求该数列中前20个数且要求每一行输出10个数。源程序存入test91.c。

11、下面程序的功能是:统计文本文件f.dat中字符的个数。请输入并完善程序,源程

序存入test22.c。

# include “stdio.h”

void main()

{ FILE *fp;

long num=0l;

if(( )==NULL)

{ printf(“can not open the file\n”);

return;

}

while( )

num=num+1;

fclose(p);

printf(“num=%d\n”,num);

}

12、下列程序是将一个二维数组行和列的元素互换,存到另一个二维数组中。请输入并

完善程序。源程序存入test2.c 。

# include “stdio.h”

void main()

{ int ,j,arr1[2][3]={{2,4,6},{1,3,5}},arr2[3][2];

printf(“Array arr1:\n”);

for(i=0;i<2;i++)

{for(j=0; ;j++)

{ printf(“%5d”,arr1[i][j]);

=arr1[i][j];

}

printf(“\n”);

}

printf(“Array arr2:\n”);

for(i=0;i<3;i++)

{for(j=0; j<2 ; )

printf(“%5d”,arr2[i][j]);

printf(“\n”);

}

}

13、下述程序的功能是:在数组中同时查找最大元素下标和最小元素下标,并分别存放

在main函数的变量max和min中。请输入程序并填空,源程序存入test12.c。

# include “stdio.h”

void find(int *a,int n,int *max,int *min)

{ int k;

*max=*min=0;

for(k=1;k

{ if(a[k]>a[*max])

if(a[l]

}

}

void main( )

{ int x[]={5,8,-7,2,12,7,3,10};

int max,min;

find( );

printf(“\n%d,%d\n”,max,min);

}

14、下面程序的功能是:输入两个字符串,将第二个字符串中ASCII码值为偶数的字符

连接在第一个字符串的后面。请输入程序并填空,源程序存入test22.c。

# include “stdio.h”

void main()

{ char s1[80],s2[40];

int I,j;

printf(“please input two stings:”);

gets(s1);

gets(s2);

for(i=0; ;i++);

for(j=0;s2[j]!=’\0’;j++)

if( ) s1[i++]=s2[j];

puts(s1);

}

15、下列程序的功能是将一字符串s中的内容倒置。如输入的字符串为abcdefg,则输出的字符串为gfedcba。请输入程序并填空,源程序存入test32.c。

# include “stdio.h”

# include “string.h”

void main()

{ void f(char *s);

char s1[80];

gets(s1);

f( );

puts(s1);

}

void f(char *s)

{ int i,k;

char t;

k= ;

for(i=0;i

{ t=s[i]; ;s[k-i-1]=t;}

}

16、下面程序是从键盘上输入十进制数据(可能超过32767),然后以二到十六进制数的形式输出。请输入程序并填空,源程序存入test42.c。

# include “stdio.h”

void main()

{ char b[16]={‘0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’A’,’B’,’C’,’D’,’E’,’F’};

char c[64];

int d,i=0,base;

long n;

scanf( );

scanf(“%d”,&base);

do

{ c[i]=

i++;

n=n/base;

} while(n!=0);

for(--I;i>=0; )

{ d=c[i];

printf(“%c”,b[d]);

}

}

17、下面程序的功能是实现文件复制,源文件和目标文件文件名来自命令行。请输入程序并填空,源程序存入test52.c。

# include “stdio.h”

void main( int argc,char *argv[])

{ *fin,*fout;

int count=0,c

if(argc!=3) return;

if((fin=fopen(argv[1],”r”))==NULL||(fout=fopen(argv[2],”w”))==NULL)

{ puts(“无法打开文件!“);

}

while((c=fgetc(fin))&7!feof(fin))

fclose(fin);

fclose(fout);

}

18、下列函数功能是求n个学生成绩的平均分和最高分,并将这些数据从该函数返回到调用函数。请输入程序并填空,源程序存入test62.c。

# include “stdio.h”

float average (float array[],int n, )

{ int I;

float sum=array[0];

for(i=1;i

{ if(array[i]>*max) *max=array[i];

sum=sum+array[i];

}

return

}

void main( )

{ float a[]={13,21,35,47,52,67,74,86,99,10},max,aver;

aver=average(a,10,&max);

printf(“%f,%f\n”,max,aver);

}

19、下面的程序通过average计算数组中各元素的平均值。请输入程序并填空,源程序存入test72.c

# include “stdio.h”

float average ( ,int n)

{ int x;

float avg ;

for(x=0;x

avg=avg+ ;

avg=avg/n;

return avg;

}

void main( )

{ int a[5]={2,4,6,8,10};

float mean;

mean=average(a,5);

printf(“mean=%f\n”,mean);

}

20、下面程序的功能是将字符串中的数字字符删除后输出。请输入程序并填空,源程序存入test82.c

# include “stdio.h”

void delnum( )

{ int I,j;

for( i=0,j=0;s[i]!=’\0’;i++)

if( ){s[j]=s[i];j++;}

}

void main( )

{char s[80];

gets(s);

delnum(s);

printf(“\n%s\n”,s);

}

21、以下程序实现在屏幕上显示指定文本文件(文件名为:c:\abc.dat)内容的功能。

源程序中前面标有星号的行有错误,请改正之。源程序存入test3.c。

* include “stdio.h”

void main()

* { file *p;

char c;

* if((p=open(“c:\\abc.dat”,”w”))==NULL)

{ printf(“can not open the file\n”);

return;

}

while(!feof(p))

{c=fgetc(p);

* getchar( c);

}

}

22、在下面程序中,函数f 的功能是求无符号整数num各位数字之积。请输入程序并

改正程序中带“*”的行中的错误,使它能够正确地输出结果。源程序存入test31.c 。

# include “stdio.h”

unsigned f( unsigned num)

* { unsigned k=0;

do

* { k*=num/10;

* num%=10;

}while (num);

return(k);

}

void main( )

{ int x=35,y=550;

printf(“%d,%d\n”,f(x),f(y));

}

23、如下程序使x与y变量之值进行交换。请输入程序并改正程序中带“*”的行中的

错误,使它能够正确地输出结果。源程序存入test32.c 。

# include “stdio.h”

void main()

{ void swap(int *p1,int *p2);

int x,y,*ptr1,*ptr2;

scanf(“%d,%d”,&x,&y);

printf(“%d\t%d\n”,x,y);

* p1=&x;

* ptr2=y;

* swap(*ptr1,*ptr2);

printf(“%d\t%d\n”,x,y);

}

void swap( int *p1,int *p2)

{ int temp;

temp=*p1;*p1=*p2;*p2=temp;

}

24、以下程序是求取矩阵A的两条对角线上元素之和。请输入程序并改正程序中带“*”的行中的错误,使它能够正确地输出结果。源程序存入test33.c 。

# include “stdio.h”

void main()

{ int a[3][3]={1,2,3,4,5,6,7,8,9},i,j;

* int sum1=0;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(i==j) sum1=sum1+a[i][j];

for(i=0;i<3;i++)

* for(j=2;j>=0;j++)

* if(i==j) sum2=sum2+a[i][j];

printf(“sum1=%d,sum2=%d\n”,sum1,sum2);

}

25、以下程序是求a数组中偶数的个数和偶数的平均值。请输入程序并改正程序中带

“*”的行中的错误,使它能够正确地输出结果。源程序存入test34.c 。

# include “stdio.h”

void main()

{ int a[10]={1,2,3,4,5,6,7,8,9,10},k,i;

float s=0,ave;

for(k=i=0;i<10;i++)

{ if (a[i]%2!=0)

* break;

s+=a[i],k++;

}

* if(k=0)

{ ave=s/k;

* printf(“%f,%d\n”,k,ave);

}

}

26、以下程序功能是删除一个字符串中的所有空格。请输入程序并改正程序中带“*”

的行中的错误,使它能够正确地输出结果。源程序存入test35.c 。

# include “stdio.h”

# include “string.h”

void main( )

{ char *fun(char *ste);

char s[81],*ds;

printf(“please enter a string:”);

gets(s);

ds=fun(s);

* printf(“\nresult:%s\n”,*ds);

}

* char fun(char *str)

{ char *p=str;

while(*p)

* { if(*p=’‘)

strcpy(p,p+1);

else

p++;

}

return str;

}

27、在下面程序中,函数cmp的功能是比较字符串s和t 的大小,当s等于t时返回0,

否则返回s和t中的第一个不同字符ASCII码差值。请输入程序并改正程序中带“*”的行中的错误,使它能够正确地输出结果。源程序存入test36.c 。

# include “stdio.h”

* int my_cmp(char s, char t)

{ while(*s==*t)

* { if (*s) return(0);

++s,++t;

}

return my_cmp=*s-*t;

}

void main( )

{ char s1[80],s2[80];

gets(s1);

gets(s2);

* if (s1==s2)

printf(“EQ\n”);

else

printf(“not EQ\n”);

}

28、下面程序的功能是输入一个字符串并将其中从左往右第一个最大的字符与最后一

个字符交换。如:“imaastudent123”,交换后为:“imaast3dent12u”。请输入程序并改正程序中带“*”的行中的错误,使它能够正确地输出结果。源程序存入test37.c 。

# include “stdio.h”

void main( )

{ char s[80],max;

int I,k;

* getchar(s);

max=s[0];

k=0;

* for( i=0;s[i]!=’\n’;i++)

* if(s[i]>s[0])

max=s[i],k=I;

if(k!=i-1)

* s[k]=s[i-1],s[k]=max;

puts(s);

}

29、已知数据文件a.dat 中存放有若干个(超过10个)整数,以下程序的功能是:计

算文件a.dat中前10个数的和并将求和结果存入文件a.dat的尾部。请输入程序并改正程序中带“*”的行中的错误,使它能够正确地输出结果。源程序存入test38.c 。

# include “stdio.h”

void main( )

* { File *fp1,*fp2;

* int s,a,i;

if((fp1=fopen(“a.dat”,”r”))==NULL)

{ printf(“ can not open the file”);

return;

}

for( i=0;i<10;i++)

* { fscanf( fp1,”%d”,a);

s+=a;

}

fclose(fp1);

if((fp2=fopen(“a.dat”,”a”))==NULL)

{ printf(“ can not open the file”);

return;

}

* printf(“%d”,s);

fclose(fp2);

}

30、下面的程序通过average计算数组中各元素的平均值。请输入程序并改正程序中带

“*”的行中的错误,使它能够正确地输出结果。源程序存入test39.c 。

# include “stdio.h”

float average (int *pa,,int n)

{ int x;

float avg =0;

for(x=0;x

* avg=avg+pa+x ;

avg=avg/n;

return avg;

}

void main( )

{ int a[5]={2,4,6,8,10};

float mean;

* mean=average(*a,5);

* printf(“mean=%ld\n”,mean);

}

二级(C语言程序设计)上机题汇总

二级(C语言程序设计)上机题汇总 一、程序调试题 (一)程序填空 练习一: /*该程序功能:对x=1,2,。。。。。,10,f(x)=x*x*-5*x+sin(x)的最大值。*/ #include #include #define f(x) x*x-5*x+sin(x) void main() { int x; float max; ____ max=f(1);____ for(x=2;x<=10;x++) ___if( max void swap(__int *pa, int *pb____) { /*交换两个数的位置*/ int temp; temp = *pa; *pa = *pb; *pb = temp; } void main() { int a,b,c,temp; scanf("%d%d%d",&a,&b,&c); if(a>b) swap(&a,&b); if(b>c) swap(&b,&c); if(__a>b___) swap(&a,&b); printf("%d,%d,%d",a,b,c); } 练习三: /*该程序功能:将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。*/ #include

void Dec2Bin(int m) { int bin[32],j; for(j=0;m!=0;j++) { bin[j]= __m%2___; m=m/2; } for(;j!=0;j--) printf("%d", ____bin[j-1]_ _____ ); } void main() { int n; scanf("%d",&n); Dec2Bin(n); } 练习四: /*该程序功能:输入数组x[7],调用函数f,去除数组中的负数,输出结果为:1 3 4 6*/ #include void f(int *a,int *m) { int i,j; for(i=0;i<*m;i++) if(a[i]<0) { for(j=i--;j<*m-1;j++) a[j]=a[j+1]; ___*m=*m-1;___ } } void main() { int i,n=7,x[7]={1,-2,3,4,-5,6,-7}; _ f(x,&n);_____ for(i=0;i void main() { int i,j,s; for(i=6;i<=1000;i++) { ___s=1;___

历年二级C语言笔试真题及答案

1 2009年9月全国计算机等级考试二级笔试 试卷 1)下列数据结构中,属于非线性结构的是 A )循环队列 B) 带链队列 C) 二叉树 D )带链栈 2)下列数据结果中,能够按照“先进后出”原则存取数据的是 A) 循环队列 B) 栈 C)队列 D)二叉树 3)对于循环队列,下列叙述中正确的是 A )队头指针是固定不变的 B )队头指针一定大于队尾指针 C )队头指针一定小于队尾指针 D )队头指针可以大于队尾指针,也可以小于队尾指针 4)算法的空间复杂度是指 A )算法在执行过程中所需要的计算机存储空间 B )算法所处理的数据量 C )算法程序中的语句或指令条数 D )算法在执行过程中所需要的临时工作单元数 5)软件设计中划分模块的一个准则是 A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D) 高内聚高耦合 6)下列选项中不属于结构化程序设计原则的是 A) 可封装 B) 自顶向下 C) 模块化 D) 逐步求精 7)软件详细设计产生的图如下: 该图是 A) N-S 图 B) PAD 图 C) 程序流程图 D) E-R 图 8)数据库管理系统是 A )操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统 D) 一种操作系统 9)在E-R 图中,用来表示实体联系的图形是 A) 椭圆图B) 矩形C) 菱形D) 三角形 10)有三个关系R ,S 和T 如下: 其中关系T 由关系R 和S 通过某种操作得到,该操作为 A) 选择 B) 投影 C) 交 D) 并 11)以下叙述中正确的是 A )程序设计的任务就是编写程序代码并上机 B )程序设计的任务就是确定所用数据结 构 C )程序设计的任务就是确定所用算法 D )以上三种说法都不完整 12)以下选项中,能用作用户标识符的是 A )void B )8_8 C )_0_ D )unsigned 13)阅读以下程序 #include main() { int case; float printF; printf(“请输入2个数:”); scanf(“%d %f”,&case,&pjrintF); printf(“%d %f \n”,case,printF); } 该程序编译时产生错误,其出错原因是 A )定义语句出错,case 是关键字,不能 用作用户自定义标识符B )定义语句出错,printF 不能用作用户自定义标识符 C )定义语句无错,scanf 不能作为输入函 数使用 D )定义语句无错,printf 不能输出case 的值 14)表达式:(int)((double)9/2)-(9)%2的值是 A )0 B )3 C )4 D )5 15)若有定义语句:int x=10;,则表达式 x-=x+x 的值为 A )-20 B )-10 C )0 D )10 16)有以下程序 #include main() { int a=1,b=0; printf(“%d,”,b=a+b); printf(“%d \n”,a=2*b); } 程序运行后的输出结果是 A )0,0 B )1,0 C )3,2 D )1,2 17)设有定义:int a=1,b=2,c=3;,以下语 句中执行效果与其它三个不同的是 A )if(a>b) c=a,a=b,b=c; B )if(a>b) {c=a,a=b,b=c;} C ) if(a>b) c=a;a=b;b=c; D ) if(a>b) {c=a;a=b;b =c;} 18)有以下程序 #include main() { int c=0,k; for (k=1;k<3;k++) switch (k) {default: c+=k case 2: c++;break; case 4: c+=2;break; } printf(“%d \n”,c); } 程序运行后的输出结果是 A )3 B )5 C )7 D )9 19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是 A )if((a>b)&&(b>c)) k=1;else k=0; B )if((a>b)||(b>c) k=1;else k=0; C )if(a<=b) k=0;else if(b<=c) k=1; D )if(a>b) k=1;else if(b>c) k=1; else k=0; 20)有以下程序 #include main() { char s[]={“012xy”};int i,n=0; for(i=0;s[i]!=0;i++) if(s[i]>=?a?&&s[i]<=?z?) n++; printf(“%d \n”,n); } 程序运行后的输出结果是 A )0 B )2 C )3 D )5 21)有以下程序 #include main() { int n=2,k=0; while(k++&&n++>2); printf(“%d %d \n”,k,n); } 程序运行后的输出结果是 A )0 2 B )1 3 C )5 7 D )1 2 22)有以下定义语句,编译时会出现编译错误的是 A )char a=?a? B )char a=?\n?; C )char a=?aa?; D )char a=?\x2d?; 23)有以下程序 #include main() { char c1,c2; c1=?A?+?8?-…4?; c2=?A?+?8?-…5?; printf(“%c,%d \n”,c1,c2); } 已知字母A 的ASCII 码为65,程序运行后的输出结果是

二级C语言上机编程题答题技巧

二级C语言上机编程题技巧 一、技巧的原理 首先使用这个技巧必须了解上机编程题的评分原理。以上机题的第5套编程题为例。二级C语言的上机试题是让我们自己编写某个小程序的子程序来实现题目中的功能。那么考官是怎么样来检查我们编的程序是否正确呢?根据编程题下面这段程序我们就可以看出: 在考生文件夹下存在一个名为in.dat的文件。首先以只读的方式打开in.dat文件,以只写方式打开out.dat文件,若out.dat不存在则自动新建该文件。然后使用fscanf 语句将其中的数据输入到变量a中,再将a当作实参调用我们需要编写的程序。将结果用fprintf语句输入到out.dat文件中。其中.dat为这个文件的扩展名(扩展名有可能被隐藏)。

所以考官不会直接检查我们的程序,只要检查out.dat里的数据是否正确就可以判断我们编的子程序是否正确。因此程序编写题,我们可以只通过修改out.dat里面的答案而不去编写程序就可以拿到满分。 二、使用技巧的条件 当然不是所有的编程题我们都能使用这个技巧的(不过90%的编程题都可以用这个方法)。使用这个技巧必须具备两个条件: 1、编程题是通过我上面讲的方法来检验,说白了就是我们的考生文件夹下面 含有in.dat文件。 2、编程题需要实现的功能我们编程者可以自己想出来程序完成的答案。例如 本题:

它让我们实现实型数据保留两位小数,并对第三位进行四舍五入。那么这个功能我们若知道任一个实数都可以自己计算出结果,那么我们才能将正确答案写在out.dat文件里面。若某程序让你编写子程序实现求取圆周率并精确到小数点后10位这个功能,那么我们就无法背出那么长的数字,因此也没有办法知道结果。那么这种技巧就不能使用。 三、步骤 确定了这个技巧可以使用后,我们就可以开始操作了。一般分为以下几步: 1、建立out.dat文件 上面可以看到我们的考生文件夹中是没有out.dat这个文件的。所以我们需要自己新建。最好的方法就是打开编程题直接编译、链接、执行。这样将程序执行一遍后我们的考生文件夹里就自动生成了我们需要的out.dat文件。(注意:这里生成了out.dat 文件后就不要再运行我们的程序了,因为每运行一次程序就会将程序生成的答案写入out.dat文件中,这样即算我们改成了正确答案,你如果再次运行程序,就会将我们修改的正确结果覆盖掉。) 2、修改答案

计算机二级C语言上机题库复习小抄(最新校正,精美排版)

计算机二级C语言上机题库复习小抄 (最新校正,精美排版) 第一套 1.程序填空 程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。函数fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 第一处struct student t; 第二处for(i=0;i0) 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=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返回这些数的个数。 void fun(int m,int *a,int *n) { int i; *n=0; for(i=7;i<=m;i++) if((i%7==0)||(i%11==0)) a[(*n)++]=i; } 第三套 1. 程序填空 函数fun的功能是:逆置数组元素是的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数组中数据的个数。 第一处for(i=0;idata==ch)return n; 第三处k=fun(head,ch); 2. 程序修改 给定程序MODI1.C中函数fun的功能是:删除p所指字符串的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用‘#’结束输入。 /**found**/ for(i=0,t=0;p[i];i++) /**found**/ c[t]=?\0?; 3. 程序设计 请编写一个函数fun,将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 void fun(char *ss) { int i; for(i=1;i=?a?&&ss[i]<=?z?) ss[i]-=32; } } 第五套 1. 程序填空 给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。例如:当形参n的值为10 的时,函数返回:9.6125588。 第一处s=0; 第二处for(i=1;i<=n;i++) 第三处s=s+(2.0*i-1)*(2.0*i+1)/(t*t); 2. 程序修改 给定程序MODI1.C中函数fun的功能是:统计substr所指字符串在str所指字符串中出现伯次数。 /**found**/ for(i=0;str[i];i++) /**found**/ if(substr[k+1]==?\0?) 3. 程序设计 请编写一个函数fun,它的功能是:根据以下公式求JI的值(要求满足精度0.0005,即某项小于0.0005时停止送代):程序运行后,如果输入精度为0.0005,则程序输出为 3.14…。 double fun(double eps) { double s=1,t=1./3; int n=1; while(t>=eps) {s+=t;n++;t=t*n/(2.0*n+1) ;} return(s*2.0); } 第六套 1. 程序填空 给定程序中,函数fun的功能是:将形参s所指定字符串中所有的字母字符顺序前移,其他字母顺序后移,处理后字符串的首地址作为函数值返回。 第一处t[j]=s[i];j++; 第二处for(i=0;iscore[i]+=1; 第三处return a; 2. 程序修改 给定程序MODI1.C中函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放在一个字符串数组中。 /**found**/ char *fun(char (*sq)[M]) /**found**/ return sp; 1

计算机二级考试C语言 101~105套上机题

第101套 1、程序填空 给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。 例如,有9个正整数:1 5 7 23 87 5 8 21 45,按升序排列时的中间数为:8 处理后主函数中输出的数列为:8 8 8 23 87 8 8 21 45 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。得增行或删行,也不得更改程序的结构! #include #define N 9 int fun(int x[]) { int i,j,k,t,mid,b[N]; for(i=0;ib[j]) k=j; if(k != i ) { /**********found**********/ t=b[i]; b[i]=___1___; b[k]=t; } } /**********found**********/ mid=b[___2___]; for(i=0; i #include #define N 20 int fun( int *b ) { /**********found**********/ int t[N] ,i, num for(i=0; i=10) /**********found**********/ t[++num]=b[i]; /**********found**********/ for(i=0; i

全国计算机等级二级C语言上机编程题题型

声明:本资料由考试吧(https://www.360docs.net/doc/af8144769.html,)收集整理,转载请注明出自https://www.360docs.net/doc/af8144769.html, 服务:面向校园,提供计算机等级考试,计算机软件水平考试,英语四六级,研究生考试等校园相关考试信息。 特色:提供历年试题,模拟试题,模拟盘,教程,专业课试题下载等。资料丰富,更新快!考试交流论坛:https://www.360docs.net/doc/af8144769.html,/ 考试吧(https://www.360docs.net/doc/af8144769.html,)-第一个极力推崇人性化服务的综合考试网站! 服务:面向较高学历人群,提供计算机类,外语类,学历类,资格类,四大类考试的全套考试信息服务. 特色:极力推崇人性化服务!让您最便捷的在最短时间内得到对您最有价值考试信息!坚持每日更新!!! 全国计算机等级二级C语言上机编程题题型 第1题 函数fun的功能是:将n个人员的考试成绩进行分段统计,考试成绩放在a 数组中,各分数段的人数存到b数组中:成绩为60到69的人数存到b[0]中,成绩为70到79的人数存到b[1],成绩为80到89的人数存到b[2],成绩为90到99的人数存到b[3],成绩为100的人数存到b[4],成绩为60分以下的人数存到b[5]中。 例如,当a数组中的数据是: 93、85、77、68、59、43、94、75、98。 调用该函数后,b数组中存放的数据应是: 1、2、1、3、0、2。 注意:部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 Prog1.c #include #include void fun(int a[], int b[], int n) { for(int i=0;i

全国计算机二级C语言上机考试题库(可直接打印)

2012年9月全国计算机考试上机题库100套 第01套: 给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。 例如,输入一个数:27638496,新的数:为739。请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include void fun(unsigned long *n) { unsigned long x=0, i; int t; i=1; while(*n) { t=*n % __1__; if(t%2!= __2__) { x=x+t*i; i=i*10; } *n =*n /10; } *n=__3__; } main() { unsigned long n=-1; while(n>99999999||n<0) { printf("Please input(0 double fun ( int n ) { double result = 1.0 ; if n = = 0 return 1.0 ; while( n >1 && n < 170 ) result *= n-- return result ; } main ( ) { int n ; printf("Input N:") ; scanf("%d", &n) ; printf("\n\n%d! =%lf\n\n", n, fun(n)) ; } 解题思路: 第一处:条件语句书写格式错误,应改为:if (n==0)。 第二处:语句后缺少分号。 *************************************************** 请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234",则函数把它转换为整数值-1234。函数fun中给出的语句仅供参考。 注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 给定源程序: #include #include long fun ( char *p) {int i, len, t; /* len为串长,t为正负标识*/ long x=0; len=strlen(p); if(p[0]=='-') { t=-1; len--; p++; } else t=1; /* 以下完成数字字符串转换为一个数字*/ return x*t; } main() /* 主函数*/ { char s[6]; long n; printf("Enter a string:\n") ; gets(s); n = fun(s); printf("%ld\n",n); NONO ( ); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *fp, *wf ; int i ; char s[20] ; long n ; fp = fopen("c:\\test\\in.dat","r") ; wf = fopen("c:\\test\\out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(fp, "%s", s) ; n = fun(s); fprintf(wf, "%ld\n", n) ; } fclose(fp) ; fclose(wf) ; } 解题思路:本题是将一个数字字符串转换为一个整数。 参考答案: #include #include long fun ( char *p) { int i, len, t; /* 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; } main() /* 主函数*/ { char s[6]; long n; printf("Enter a string:\n") ; gets(s); n = fun(s); printf("%ld\n",n); NONO ( ); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据, 关闭文件。*/ FILE *fp, *wf ; int i ; char s[20] ; long n ; fp = fopen("c:\\test\\in.dat","r") ; wf = fopen("c:\\test\\out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(fp, "%s", s) ; n = fun(s); fprintf(wf, "%ld\n", n) ; } fclose(fp) ; fclose(wf) ; } 注意:由于NONO( )这个函数是改卷人用的,与考生没有什 么关系,故下面从第2套试题开始均省略NONO( ) ※※※※※※※※※※※※※※※※※※※※※※※※※ 第02套: 给定程序中,函数fun的功能是将形参给定的字符串、整数、 浮点数写到文本文件中,再用字符方式从此文本文件中逐 个读入并显示在终端屏幕上。请在程序的下划线处填入正 确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include void fun(char *s, int a, double f) { __1__ fp; char ch; fp = fopen("file1.txt", "w"); fprintf(fp, "%s %d %f\n", s, a, f); fclose(fp); fp = fopen("file1.txt", "r"); printf("\nThe result :\n\n"); ch = fgetc(fp); while (!feof(__2__)) { putchar(__3__); ch = fgetc(fp); } putchar('\n'); fclose(fp); } main() { char a[10]="Hello!"; int b=12345; double c= 98.76; fun(a,b,c); } 解题思路: 本题是考察先把给定的数据写入到文本文件中,再从该文件 读出并显示在屏幕上。 第一处:定义文本文件类型变量,所以应填:FILE *。 第二处:判断文件是否结束,所以应填:fp。 第三处:显示读出的字符,所以应填:ch。 *************************************************** 给定程序MODI1.C中函数fun的功能是: 依次取出字符串中 所有数字字符, 形成新的字符串, 并取代原字符串。 请改正函数fun中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动main函数, 不得增行或删行, 也不得更改程 序的结构! 给定源程序: #include void fun(char *s) { int i,j; for(i=0,j=0; s[i]!='\0'; i++) if(s[i]>='0' && s[i]<='9') s[j]=s[i]; s[j]="\0"; } main() { char item[80]; printf("\nEnter a string : ");gets(item); printf("\n\nThe string is : \"%s\"\n",item); fun(item); printf("\n\nThe string of changing is : \"%s\"\n",item ); } 解题思路: 第一处: 要求是取出原字符串中所有数字字符组成一个新的 字符串,程序中是使用变量j 来控制新字符串的位置,所以应改为:s[j++]=s[i];。 第二处: 置新字符串的结束符,所以应改为:s[j]='\0';. *************************************************** 请编写函数fun, 函数的功能是: 将M行N列的二维数组中的 字符数据, 按列的 顺序依次放到一个字符串中。 例如, 二维数组中的数据为: W W W W S S S S H H H H 则字符串中的内容应是: WSHWSHWSH。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容, 仅在函数 fun的花括号中填入 你编写的若干语句。 给定源程序: #include #define M 3 #define N 4 void fun(char s[][N], char *b) { int i,j,n=0; for(i=0; i < N;i++) /* 请填写相应语句完成其功能*/ { } b[n]='\0'; } main() { char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H' }}; int i,j; printf("The matrix:\n"); for(i=0; i #define N 5 typedef struct student { long sno; char name[10]; float score[3]; } STU; void fun(char *filename, STU n) { FILE *fp; fp = fopen(__1__, "rb+"); fseek(__2__, -1L*sizeof(STU), SEEK_END); fwrite(&n, sizeof(STU), 1, __3__); fclose(fp); } main() { STU t[N]={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88}, {10003,"LiSi", 85, 70, 78}, {10004,"FangFang", 90, 82, 87}, {10005,"ZhangSan", 95, 80, 88}}; STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N]; int i,j; FILE *fp; fp = fopen("student.dat", "wb"); fwrite(t, sizeof(STU), N, fp); fclose(fp); fp = fopen("student.dat", "rb"); fread(ss, sizeof(STU), N, fp); fclose(fp); printf("\nThe original data :\n\n"); for (j=0; j

二级C语言上机题库及答案

第一套题 上机填空: #include double fun(double e) { int i, k; double s, t, x; s=0; k=1; i=2; /**********found**********/ x=__1__/4; /**********found**********/ while(x __2__ e) { s=s+k*x; k=k* (-1); t=2*i; /**********found**********/ x=__3__/(t*t); i++; } return s; } main() { double e=1e-3; printf("\nThe result is: %f\n",fun(e)); 第一处答案:3.0 第二处答案:> 第三处答案:(2*i+1)或者(t+1) 上机改错题: #include /************found************/ void fun ( int n )

{ int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k++ ) { /************found************/ s = s + (Double)a / b; c = a; a = a + b; b = c; } return s; } main( ) { int n = 5; printf( "\nThe value of function is: %lf\n", fun ( n ) ); } 第一处改错:将:void fun ( int n ) 改为double fun ( int n ) 第二处改错:s = s + (Double)a / b; 改为s = s + (double)a / b; 第二套题 上机填空题 #include double fun(int n) { int i; double s, t; /**********found**********/ s=__1__; /**********found**********/ for(i=1; i<=__2__; i++) { t=2.0*i; /**********found**********/ s=s+(2.0*i-1)*(2.0*i+1)/__3__; } return s; } main() { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); }

2020年全国计算机等级考试二级c语言上机精选题库(共80套)

2020年全国计算机等级考试二级c语言上机精选题库(共80套) 第1套试题 第一题:给定程序中,函数fun的功能是:计算N*N矩阵的主对角元素和反向对角元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。 例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 #include #define N 4 fun(int t[][N], int n) { int i, sum; ___1___; for (i=0; i

第二题:下列给定程序中,函数fun 的功能是:根据整型参n ,计算如下公式的值。 ,11=A ,1112A +=A ,1123A +=A … ,1 11-A +=A n n 例如,若n=10,则应输出0.617978。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main 函数,不得增行或删行,也不要更改程序的结构! #include #include /********found********/ fun(int n) { double A = 1; int i; /********found********/ for(i=2;i #include void fun (int a, int b, long *c) { }

相关主题
相关文档
最新文档