2019年安徽省c语言二级答案,2019年春江苏省计算机二级C语言真题

第一部分 公共基础

第二部分  C语言

1(单选题):

若有声明“int a=3,b=4,c=5;”,则执行语句“a>b?a--:(b>c?b++:(c/=2)); printf("%d\n",a+b+c);”时输出_____9_____。

9

9.5

11

13

2(填空题<3空>) :

以下程序运行时输出结果中第一行是3,第二行是5,第三行是4。

#include

typedef struct node

{

intvalue;

struct node *next;

} NODE;

void Max(NODE *head)

{

NODE*p,*first,*second;

first=second=NULL;

p=head;

while(p!=NULL)

{

if(first==NULL||p->value>=first->value)

{

second=first;

first=p;

}

else if(second==NULL||p->value>=second->value)

second=p;

p=p->next;

}

printf("%d\n%d", first->value, second->value);

}

int main( )

{

NODE a[]={{3,&a[1]},{1,&a[2]},{5,&a[3]},{4,NULL}},*head=&a[0];

printf("%d\n", head->value);

Max(head);

return 0;

}

3(单选题):

若有声明“char s1[80]="good ",s2[80]="luck ",s3[80]="to you";”,则执行语句

“strcpy(s1+5,strcat(s2,s3)); printf("%s",s1);”时输出____good luck to you______。

4(填空题<2空>) :

以下程序运行时输出结果中第一行是22,第二行是11。

#include

voidseries(int n)

{

while(n!=1)

{

if(n%2!=0)

n=3*n+1;

else

while(n%2==0) n/=2;

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

}

}

int main( )

{

series(7);

return 0;

}

5(填空题<2空>) :

以下程序运行时输出结果中第一行是0,第二行是4。

# include

int f(int x,int y)

{

int t,i,M=23;

if(y==1) return 0;

for(i=t=1;i

{

t=t*x%M;

if(t==y) return i;

}

printf("没有结果\n");

return 0;

}

int main( )

{

printf("%d\n%d",f(3,1),f(4,3));

return 0;

}

6(单选题):

以下声明中正确的是__________。

unsigned char x;

unsigned float x;

signed double x;

long char x;

8(填空题<3空>) :

以下程序运行时输出结果中第一行是1,第二行是1,第三行是3。

#include

void Pascal(int a[],int n)

{

int i,j;

for(a[0]=1,i=1;i<=n;i++) a[i]=0;

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

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

a[j]+=a[j-1];

}

int main( )

{

int b[20];

Pascal(b,1);

printf("%d\n",b[1]);

Pascal(b,3);

printf("%d\n%d\n",b[0],b[2]);

return 0;

}

9(单选题):

若有声明“int b=1,c[10]={2},*x=c;”,则以下语句中正确的是__________。

*x=c[10];

b=*x;

c={1,2,3};

&b=c;

1(完善程序):

完善程序(共12分,每空3分)

【要求】

1.打开T盘中文件myf0.c,按以下程序功能完善文件中的程序。

2.修改后的源程序仍保存在T盘myf0.c文件中,请勿改变myf0.c的文件名。

【程序功能】

假定Min函数形参a指向的结构数组前n个元素中存储了n个二维点坐标值且互不相同。Min函数的功能是将这n个点坐标中排序最小的点坐标从数组中删除,函数返回被删除的点坐标值。

所谓排序最小的点坐标指的是在所有点坐标(x,y)中,x值最小且y值最小。

【测试数据与运行结果】

测试数据:{0.5,3.0},{-3.0,5.0},{-1.5,3.5},{-3.0,-2.5}

输出:

排序最小的点坐标是:(-3.0,-2.5)

剩余的点坐标:

(0.5,3.0)(-3.0,5.0)(-1.5,3.5)

【待完善的源程序】

#include

#include

struct Point

{double x,y;};

struct Point Min(struct Point a[ ], int n)

{

int i,k;

struct Point p;

for(k=0,i=1;i

{

if(a[i].x【1】a[i].y)

k=i;

}

p=a[k];

for(i=k;i

a[i]=a[i+1];

return【2】p;

}

int main()

{

struct Point【3】pt[200]={ {0.5,3.0},{-3.0,5.0},{-1.5,3.5},{-3.0,-2.5}},p;

int i,n=4;

p=Min(pt,n);

printf("排序最小的点坐标是:(%.1f,%.1f)\n",【4】p.x,p.y);

printf("剩余的点坐标:\n");

for(i=0;i

printf("(%.1f,%.1f)\t",pt[i].x,pt[i].y);

printf("\n");

getch();

return 0;

}

2(改错题):

改错(共16分,每个错4分)

【要求】

1.打开T盘中文件myf1.c,按以下程序功能改正文件中程序的错误。

2.可以修改语句中的一部分内容,调整语句次序,增加变量声明或预处理命令,但不能增加其他语句,也不能删去整条语句。

3.修改后的源程序仍保存在T盘myf1.c文件中,请勿改变myf1.c的文件名。

【程序功能】

函数find的功能是在a指向二维数组中存储的一个5×5阶矩阵内查找并输出所有具有以下特性的数组元素a[i][j]:第i行上所有元素之和等于第j列上所有元素之和(0≤i<5,0≤j<5)。

【测试数据与运行结果】

测试数据:

28194

57130

71752

32215

02168

输出:

a[0][3]a[4][0]

【含有错误的源程序】

#include

#include

void find(int a[5][])修改为 void find(int a[5][5])

{

int i,j,row,col,sum1,sum2;

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

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

{

sum1=sum2=0;

for(col=0;col<5;col++)

sum1+=a[i][col];

for(row=0;row<5;row++)

sum2+=a[j][row];修改为 sum2+=a[row][j];

if(sum1=sum2)修改为 if(sum1==sum2)

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

}

}

int main()

{

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

find(a[5][5]);//修改为find(a)

getch();

return 0;

}

3(编程题):

编程(共22分)

【要求】

1.打开T盘中文件myf2.c,在其中输入所编写的程序。

2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。

3.请勿改变myf2.c的文件名。

【程序功能】

数组数据处理。

【编程要求】

1.编写void process(int *a,int n,int m1,int m2)函数。函数功能:先将a指向数组前n个元素中存储的数据按升序排列,再将a[m1]~a[m2]中的数据逆置。

2.编写main函数。函数功能:声明1个一维数组和变量m1、m2并用测试数据初始化,用数组及变量作实参调用process函数,将处理后的数组中数据输出到显示器屏幕及文件myf2.out中。最后将考生本人准考证号输出到文件myf2.out中。

【测试数据与运行结果】

测试数据:431-234987650-671779,m1=2, m2=6

输出:-67–2349311740657987

编写时按步骤给分

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值