首页 > 全部 > 二级C语言 > 国家二级(C语言)机试模拟试卷1029

国家二级(C语言)机试模拟试卷1029

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

国家二级(C语言)机试模拟试卷1029

程序填空题

1.以下程序的功能是统计字符串(长度不超过1000个字符)中每个字母的个数(不区分大小写),若字符不是字母,则统一归为其他字符。

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

注意:源程序存放在考生文件夹下的blankl.C中。不得增行或删行,也不得更改程序的结构!

#include <stdio.h>

#include <string.h>

void countstr(char*st,int cutor[]);

main()

{

char s[1000];

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

int counters[27]=【1】

printf(\\

(1){0}

(2)25

(3)’A’或65

解析:(1)初始化时需要将作为计数器的数组counters的所有元素初始化为0,该空填写{0}。

(2)字母表只有26个字母,for循环用于统计这26个字母对应的个数,所以数组下标最大为25。

(3)C语言中,字母的ASCII码值是按照字母表顺序依次递增的,所以需要将ASCII码值减去’A’或65来得到字母A到Z在计数器数组中的下标。

程序修改题

2.给定程序modil.c中的函数intstrtoval(char pst[],double *p)的功能是,将pst中带符号的数字字符串转换成双精度数值,直到遇到非数字字符为止。函数返回值为0表示转换成功,为1表示转换失败,函数成功转换后的数值存储在指针P所指的存储单元中。

如:+123.65a转换数值后输出+123.650000,函数返回值为0。

-32-3转换数值后输出-32.000000,函数返回值为0。

56.76a转换数值后输出+56.760000,函数返回值为0。

+283.125转换数值后输出+283.125000,函数返回值为0。

对+a8.6转换失败,函数返回值为1,输出出错信息。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

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

#include <stdio.h>

int strtoval(char pst[],double *p)

{

int SUCS;

int plus:

int i=0;

double frac=0.1;

*p=0.0;

while(pst[i]==’’)i++;

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

if(pst[i]==’+’&&pst[i]>=’0’&&pst[i]<=’9’)

{

plus=1;

SUCS=1;

}

else if(pst[i]==’-’)

{

plus=0;

SUCS=1;

}

else

{

sucs=0;

return SUCS;

}

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

if(psi[i]==’+’&&psi[i]==’-’)

i++;

if(pst[i]==’-’)

i++;

if(!(pst[i]>=’0’&&psi[i]<=’9’))

{

SUCS=0;

return SUCS;

}

while(pst[i]!=’\0’)

{

if(pst[i]>=’0’&&pst[i]<=’9’)

{

*p=*p*10+pst[i]-’0’;

i++;

}

else if(pst[i]==’-’)

break;

else

{

if(plus==0)

*p=-1.0**p;

return SUCS;

}

}

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

if(pst[i]!=’-’)

{

i++;

while(pst[i]!=’\0’)

{

if(pst[i]>=’0’&&pst[i]<=’9’)

{

*p=*p+(pst[i]-’0’)*frac;

frac/=10;

i++;

}

else

{

if(plus==0)

*p=-1.0**p;

return SUCS;

}

}

return SUCS;

}

return SUCS;

}

main()

{

char str[][100]={\\

(1)if(pst[i]==’+’∣∣ pst[i]>=’0’&&pst[i]<=’9’)

(2)if(pst[i]==’+’∣∣pst[i]==’-’)

(3)if(pst[i]==’-’)

解析:(1)遍历pst中的数字字符串,如果遍历到的第一个非空格字符是’+’或数字字符,表示当前这个数字字符串是正数,此时将用于标记数值正负的plus置为1。函数返回值sucs置为1。所以第一处修改为if(pst[i]==’+’∣∣pst[i]>=’0’&&pst[i]<=’9’)。

(2)如果数字字符串pst中第一个非空字符是’+’或’-’,为了确定当前字符串是否可以转换成数值,则需要执行i++继续遍历下一个字符。所以第二处修改为if(pst[i]==’+’∣∣pst[i]==’-’)。

(3)当遍历的字符为’.’时,表示后面数字字符是小数部分,小数部分和前面的整数部分处理方式是不同的,这里if语句是用来处理接下来的小数部分。所以第三处修改为if(pst[i]==’.’)。

程序设计题

3.编写一个函数void change(int P[][N],int n),其功能是将一个int型二维数组的上下三角区域的数据对调,数组大小限制在100×100。

例如,N=7时,有二维数组:

int a[N][N]={

{11,12,13,14,15,16,17},

{21,22,23,24,25,26,27},

{31,32,33,34,35,36,37},

{41,42,43,4

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号