首页 > 全部 > 二级C语言 > 国家二级C语言机试(操作题)模拟试卷613

国家二级C语言机试(操作题)模拟试卷613

本单篇文档共3030字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 章节练习 4621人下载
价格: 0.60 原价:¥7.00
收藏

国家二级C语言机试(操作题)模拟试卷613

程序填空题

1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:将N×N矩阵中元素的值按列向右移动1个位置,右边被移出矩阵的元素绕回左边第1列。

例如,N=3,有下列矩阵

1 2 3

4 5 6

7 8 9

计算结果为:

3 1 2

6 4 5

9 7 8

请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。

注意:部分源程序给出如下。

不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

#define N4

void fun(int(*t)[N])

{

int i,j,x;

for(i=0;i<【1】;i++)

{

x=t[i][【2】];

for(j=N-1;j>0;j–)

t[i][j]=t[i][j-1];

t[i][【3】]=x;

}

}

main()

{

int i,j,t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10};

print f(\\

(1)N

(2)N-1

(3)0

解析:填空1:因为是N×N的矩阵,所以行列数是相同的。第一个for循环用来循环行,因此填入一个循环界限N。

填空2:此语句将移出矩阵的元素暂存,移出矩阵的元素的列下标为N-1,因此填入N-1。

填空3:此语句将移出矩阵的元素放人最左边,也就是第一列,第一列元素的列下标为0,因此填入0。

程序修改题

2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:统计substr所指的字符串在str所指的字符串中出现的次数。

例如,若字符串为aaas1kaaas,子字符串为as,则应输出2。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

int fun(char*str,char*substr)

{int i,j,k,num=0;

/*********found*********/

for(i=0,str[i],i++)

for(j=i,k=0;substr[k]==str[j];k++,j++)

/*********found*********/

If(substr[k+1]==’\0’)

{num++;

break;

}

return num;

}

main()

{

char str[80],substr[80];

printf(\\

(1)for(i=0;str[i];i++)

(2)if(substr[k+1]==’\0’)

解析:先看循环条件for(i=0,str[i],i++),不难发现此处for循环语句的格式有误,其中表达式之间应以“;”相隔;同时很容易发现if条件语句处的关键字书写错误。

程序设计题

3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。

例如,若二维数组中的数据为:

33 33 33 33

44 44 44 44

55 55 55 55

则一维数组中的内容应该是:33 33 33 33 44 44 44 44 55 55 55 55。

注意:部分源程序在文件PROG1.C中。

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

试题程序:

#include<stdio.h>

void fun(int(*s)[10],int*b,

int*n,int mm,intnn)

{

}

void main()

{

FILE*wf;

int w[10][10]={{33,33,33,33},

{44,44,44,44},{55,55,55,55}},

i,j;

int a[100]={0},n=0;

printf(\\

void fun(int(*s)[10],int*b,

int*n,int mm,int nn)

{

int i,j,k=0;

for(i=0;i<mm;i++)/*将二维数组s中的数据按行的顺序依次放到一维数组b中*/

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

b[k++]=s[i][j];

*n=k;/*通过指针返回元素个数*/

}

解析:本题可以用两个循环来处理,由于是按行的顺序取出,所以第1个循环用于控制行下标,第2个循环用于控制列下标;若改成按列的顺序取出,则循环应改成:

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

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

b[k++]=s[j][i];

要注意s[j][i]的下标,不能用s[i][j]。

若按行取出则列标变化较快,若按列取出则行标变化较快,即循环嵌套时,越在内层的循环,其循环变量变化就越快。

本文档预览:3600字符,共3030字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C语言机试(操作题)模拟试卷613

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号