计算机二级C语言考试编程题.docx

上传人:b****2 文档编号:896539 上传时间:2023-04-30 格式:DOCX 页数:174 大小:78.70KB
下载 相关 举报
计算机二级C语言考试编程题.docx_第1页
第1页 / 共174页
计算机二级C语言考试编程题.docx_第2页
第2页 / 共174页
计算机二级C语言考试编程题.docx_第3页
第3页 / 共174页
计算机二级C语言考试编程题.docx_第4页
第4页 / 共174页
计算机二级C语言考试编程题.docx_第5页
第5页 / 共174页
计算机二级C语言考试编程题.docx_第6页
第6页 / 共174页
计算机二级C语言考试编程题.docx_第7页
第7页 / 共174页
计算机二级C语言考试编程题.docx_第8页
第8页 / 共174页
计算机二级C语言考试编程题.docx_第9页
第9页 / 共174页
计算机二级C语言考试编程题.docx_第10页
第10页 / 共174页
计算机二级C语言考试编程题.docx_第11页
第11页 / 共174页
计算机二级C语言考试编程题.docx_第12页
第12页 / 共174页
计算机二级C语言考试编程题.docx_第13页
第13页 / 共174页
计算机二级C语言考试编程题.docx_第14页
第14页 / 共174页
计算机二级C语言考试编程题.docx_第15页
第15页 / 共174页
计算机二级C语言考试编程题.docx_第16页
第16页 / 共174页
计算机二级C语言考试编程题.docx_第17页
第17页 / 共174页
计算机二级C语言考试编程题.docx_第18页
第18页 / 共174页
计算机二级C语言考试编程题.docx_第19页
第19页 / 共174页
计算机二级C语言考试编程题.docx_第20页
第20页 / 共174页
亲,该文档总共174页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机二级C语言考试编程题.docx

《计算机二级C语言考试编程题.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言考试编程题.docx(174页珍藏版)》请在冰点文库上搜索。

计算机二级C语言考试编程题.docx

计算机二级C语言考试编程题

 

编程题

 

1.请编一个函数fun(char*s),函数的功能是把字符串中的内容逆置。

例如:

字符串中原有的内容为:

abcdefg,则调用该函数后,串中的内容为:

gfedcba。

注意:

部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#include

#include

#include

#defineN81

/*本题的考核点是C语言中的for循环语句的使用。

解题思路:

对于本题,我们给出的参考函数采取的算法是:

将第一个元素与最后一个元素互换,第二个元素与倒数第二个互换…的方式进行倒排序。

因为我们一次互换两个元素,所以for循环语句执行length/2次(length是字符串的长度)就可以把全部元素互换一遍。

*/

voidfun(char*s)

{

inti,length;

chartmp;

length=strlen(s);/*统计字符串s中字符的个数*/

for(i=0;i

{/*以下三行即将s中的第i个字符与第length-i个字符进行交互*/

tmp=s[i];

s[i]=s[length-i-1];

s[length-i-1]=tmp;

}

}

NONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。

*/

inti;

chara[N];

FILE*rf,*wf;

rf=fopen("bc8.in","r");

wf=fopen("bc8.out","w");

for(i=0;i<9;i++){

fscanf(rf,"%s",a);

fun(a);

fprintf(wf,"%s\n",a);

}

fclose(rf);

fclose(wf);

}

main()

{chara[N];

system("cls");

printf("Enterastring:

");gets(a);

printf("Theoriginalstringis:

");puts(a);

fun(a);

printf("\n");

printf("Thestringaftermodified:

");

puts(a);NONO();

}

2.编写程序,实现矩阵(3行3列)的转置(即行列互换)。

例如,输入下面的矩阵:

100200300

400500600

700800900

程序输出:

100400700

200500800

300600900

注意:

部分源程序存在文件prog.c中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#include

#include

/*本题的考核点是3行3列矩阵转置算法。

解题思路:

通过两重循环和一个中间数组完成转置。

方法是通过循环将原数组中的i行j列上的数赋值给中间数组的j行i列,最后再将中间数组的值赋给原数组,形成转置后的矩阵。

*/

voidfun(intarray[3][3])

{inti,j;intb[3][3];

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

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

b[j][i]=array[i][j];/*将矩阵行列互换*/

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

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

array[i][j]=b[i][j];/*将b数组中的数据原封不动的保存在array数组中*/

}

NONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。

*/

inti,j;

FILE*wf;

intarray[3][3]={{100,200,300},

{400,500,600},

{700,800,900}};

wf=fopen("a11.out","w");

fun(array);

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

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

fprintf(wf,"%7d\n",array[i][j]);

}

fclose(wf);

}

main()

{

inti,j;

intarray[3][3]={{100,200,300},

{400,500,600},

{700,800,900}};

system("cls");

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

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

printf("%7d",array[i][j]);

printf("\n");

}

fun(array);

printf("Convertedarray:

\n");

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

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

printf("%7d",array[i][j]);

printf("\n");

}

NONO();

}

3.编写函数intfun(intlim,intaa[MAX]),该函数的功能是求出小于lim的所有素数并放在aa数组中,该函数返回求出素数的个数。

注意:

部分源程序存在文件prog.c中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#include

#include

#defineMAX200

/*本题的考核点是找出小于指定数的所有素数的算法。

解题思路:

从2到指定数lim,找出所有的素数,素数的判断方法是:

只能被1和其自身整除,而不能被其它任何数整除的数。

*/

intfun(intlim,intaa[MAX])

{inti,j=0,k=0;

for(i=2;i

{for(j=2;j

if(i%j==0)break;/*假如i能被整除,则退出该层循环*/

if(j==i)aa[k++]=i;/*假如i不能被比它小的整数整除,则将i存入aa数组中*/

}

returnk;

}

NONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,

输出数据,关闭文件。

*/

inti,j,limit,sum;

intaa[MAX];

FILE*rf,*wf;

rf=fopen("b14.in","r");

wf=fopen("a14.out","w");

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

{fscanf(rf,"%d",&limit);

sum=fun(limit,aa);

for(i=0;i

fprintf(wf,"%d\n",aa[i]);

}

fclose(rf);

fclose(wf);

}

main()

{

intlimit,i,sum;

intaa[MAX];

system("cls");

printf("输入一个整数:

");

scanf("%d",&limit);

sum=fun(limit,aa);

for(i=0;i

if(i%10==0&&i!

=0)printf("\n");

printf("%5d",aa[i]);

}

NONO();

}

4.请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。

二维数组中的值在主函数中赋予。

例如:

二维数组中的值为

13579

29994

69998

13570

则函数值为61。

注意:

部分源程序存在文件prog.c中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#include

#include

#defineM4

#defineN5

/*本题的考核点是c语言中嵌套循环语句和条件判断语句的使用。

解题思路:

二维数组的周边元素的特点是:

它有一个下标为0或为数组上界。

所以我们只需判断数组的下标是否为0或数组上界即可。

按行、列进行循环可以保证符合条件的元素只被运算一次。

*/

intfun(inta[M][N])

{

inti,j,sum=0;

for(i=0;i

for(j=0;j

if((i==0)||(i==M-1)||(j==0)||(j==N-1))/*判断a[i][j]是否为数组中的第一行或最后一行或第一列或最后一列*/

sum+=a[i][j];/*对a数组的周边元素求和*/

returnsum;

}

NONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,

输出数据,关闭文件。

*/

inti,j,y,k,aa[M][N];

FILE*rf,*wf;

rf=fopen("bc4.in","r");

wf=fopen("bc4.out","w");

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

for(i=0;i

for(j=0;j

y=fun(aa);

fprintf(wf,"%d\n",y);

}

fclose(rf);

fclose(wf);

}

main()

{intaa[M][N]={{1,3,5,7,9},

{2,9,9,9,4},

{6,9,9,9,8},

{1,3,5,7,0}};

inti,j,y;

system("cls");

printf("Theoriginaldatais:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

y=fun(aa);

printf("\nThesum:

%d\n",y);

printf("\n");

NONO();

}

5.请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。

例如,原来的字符串为CEAedca,排序输出为CedcEAa。

注意:

部分源程序存在文件prog.c中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#include

#include

#include

/*本题的考核点是对除首、尾字符外的其它字符按降序排列的算法。

解题思路:

只对除首、尾字符外的字符排序,排序可用多种方法来实现,本题用的是选择法,通过一变量来记录大数的下标,再与前面的数交换,从而实现降序排序。

*/

intfun(char*s,intnum)

{inti,j,h,t;

for(i=1;i

{h=i;

for(j=i;j

if(s[h]

if(h!

=i)/*判断找到的最大字符的下标是否为第i个字符*/

{t=s[h];s[h]=s[i];s[i]=t;}/*将s[h]与s[i]中的字符进行交换*/

}

}

NONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。

*/

chars[10];

intj;

FILE*rf,*wf;

rf=fopen("b15.in","r");

wf=fopen("a15.out","w");

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

{fscanf(rf,"%s",s);

fun(s,7);

fprintf(wf,"%s\n",s);

}

fclose(rf);

fclose(wf);

}

main()

{

chars[10];

system("cls");

printf("输入7个字符的字符串:

");

gets(s);

fun(s,7);

printf("\n%s",s);

NONO();

}

6.请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。

二维数组中的数已在主函数中赋予。

注意:

部分源程序存在文件prog.c中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#include

#include

#defineM3

#defineN4

voidfun(inttt[M][N],intpp[N])

{

inti,j,min;

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

{

min=tt[0][i];/*将每列的第一个数赋值给min*/

for(j=0;j<3;j++)/*将min与该列中的每个数进行比较,并把最大的那个数赋值给min*/

if(min>tt[j][i])

min=tt[j][i];

pp[i]=min;

}

/*本题的考核点是C语言中循环嵌套语句的使用。

解题思路:

从题目的要求来看,我们应建立一个两重循环来按行、列寻找最小元素。

因为题目要求出每列中的最小元素,所以列循环应放在外面,行循环放在里面。

我们给出的参考函数中,定义了一个变量min来保存最小元素,在行循环中比较出最小元素,并在行循环结束时赋给数组pp的相应元素。

*/

}

NONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,

输出数据,关闭文件。

*/

inti,j,k,m,t[M][N],p[N];

FILE*rf,*wf;

rf=fopen("bc3.in","r");

wf=fopen("bc3.out","w");

for(m=0;m<10;m++){

for(i=0;i

for(j=0;j

fscanf(rf,"%6d",&t[i][j]);

}

fun(t,p);

for(k=0;k

fprintf(wf,"\n");

}

fclose(rf);

fclose(wf);

}

main()

{intt[M][N]={{22,45,56,30},

{19,33,45,38},

{20,22,66,40}};

intp[N],i,j,k;

system("cls");

printf("Theoriginaldatais:

\n");

for(i=0;i

for(j=0;j

printf("%6d",t[i][j]);

printf("\n");

}

fun(t,p);

printf("\nTheresultis:

\n");

for(k=0;k

printf("\n");

NONO();

}

7.编写一个函数,从传入的num个字符串找出最长的一个字符串,并通过形参指针max传回该串地址。

(注意:

用****作为结束输入的标志。

注意:

部分源程序存在文件prog.c中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#include

#include

#include

/*本题的考核点是从一组字符串中找出最长串的算法。

解题思路:

通过求字符串长度函数对一组字符串的字符进行比较,并将地址赋给一指针变量。

*/

fun(char(*a)[81],intnum,char**max)

{inti;

*max=a[0];/*将第一个字符串赋值给max指针*/

for(i=1;i<=num;i++)

if(strlen(a[i])>strlen(*max))*max=a[i];/*假如字符串a[i]的长度比指针max中的字符串的长度长,则将a[i]字符串赋值给max指针*/

}

NONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,

输出数据,关闭文件。

*/

charss[10][81],*ps;

intn,i,j;

FILE*rf,*wf;

rf=fopen("b16.in","r");

wf=fopen("a16.out","w");

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

{i=0;fscanf(rf,"%s",ss[i]);

while(!

strcmp(ss[i],"****")==0)

{i++;

fscanf(rf,"%s",ss[i]);

}

n=i;

fun(ss,n,&ps);

fprintf(wf,"max=%s\n",ps);

}

fclose(rf);

fclose(wf);

}

main()

{

charss[10][81],*ps;

intn,i=0;

system("cls");

printf("输入若干个字符串:

");

gets(ss[i]);

puts(ss[i]);

while(!

strcmp(ss[i],"****")==0)

{

i++;

gets(ss[i]);

puts(ss[i]);

}

n=i;

fun(ss,n,&ps);

printf("\nmax=%s\n",ps);

NONO();

}

8.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。

例如,假定输入的字符串为:

asdasasdfgasdaszx67askmklo,子字符串为:

as,则应输出6。

注意:

部分源程序存在文件prog.c中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#include

#include

#include

/*本题的考核点是统计子串在主串中出现次数的算法。

解题思路:

将主串中的字符从第一个位置开始逐个与子串中的字符作比较,若子串出现在主串中,次数加1,主串中的指针移动到下一个位置继续与子串比较,反之,主串中的指针也同样移动到下个位置,直至主串中的字符全部比较结束。

*/

intfun(char*str,char*substr)

{unsignedinti=0;

intj,k=0,add;

while(i

{j=0;add=i;

while((str[add]==substr[j])&&(substr[j]!

='\0'))

{add++;j++;}

if(substr[j]=='\0')k++;

i++;

}

returnk;

}

NONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,

输出数据,关闭文件。

*/

charstr[81],substr[3];

intn,j;

FILE*rf,*wf;

rf=fopen("b17.in","r");

wf=fopen("b17.out","w");

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

{

fscanf(rf,"%s",str);

fscanf(rf,"%s",substr);

n=fun(str,substr);

fprintf(wf,"n=%d\n",n);

}

fclose(rf);

fclose(wf);

}

main()

{

charstr[81],substr[3];

intn;

system("cls");

printf("输入主字符串:

");

gets(str);

printf("输入子字符串:

");

gets(substr);

puts(str);

puts(substr);

n=fun(str,substr);

printf("n=%d\n",n);

NONO();

}

9.程序定义了N×N的二维数组,并在主函数中赋值。

请编写函数fun,函数的功能是:

求出数组周边元素的平均值并作为函数值返回给主函数中的s。

例如:

a数组中的值为

|01279|

|19745|

a=|23831|

|45682|

|59141|

则返回主程序后s的输出结果为:

3.375000。

注意:

部分源程序存在文件prog.c中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#include

#include

#include

#defineN5

/*本题的考核点是二维数组、循环语句和

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2