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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

重庆市计算机等级考试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<n;k++)
{ if(a[k]>a[*max])
if(a[l]<a[*min]) *min=k;
}
}
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<k/2;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<n;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<n;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<n;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);
}。

相关文档
最新文档