江苏上机试题Word文件下载.docx
- 文档编号:21712219
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:7
- 大小:18.22KB
江苏上机试题Word文件下载.docx
《江苏上机试题Word文件下载.docx》由会员分享,可在线阅读,更多相关《江苏上机试题Word文件下载.docx(7页珍藏版)》请在冰豆网上搜索。
{inti,j,k;
for(i=0;
i<
N;
I++)<
SPAN>
for(j=0;
j<
N-1;
J++)<
for(k=j+1;
k<
K++)<
if(i%2==0?
a[i][j]a[i][k])
swap(a[i]+j,a[i]+k);
voidmain()
{inta[N][N]={{3,4,2,1},{8,7,5,6},{12,10,11,9},{15,14,16,13}};
inti,j;
sort(a[N][N]);
{for(j=0;
printf(“=”,a[i][j]);
printf(“\n”);
解析:
做本改错题目的时候,首先将题目输入计算机中,然后运行,运行的时候一定会有错误出现,在改错题目中有两种错误:
(1)语法错误
(2)逻辑错误,在本题目中,运行后会出现3个警告,警告1指向swap函数的p变量,我们可以看到p是变量,p1、p2是指针变量,两者不匹配,所以我们可以得到第一个错误,警告2指向sort(a[N][N]),我们知道在C语言中,调用函数的参数时,如果参数是数组,则只传递数组的名称,所以可以知道第二个错误sort(a[N][N])应改为sort(a),剩下的错误是逻辑错误,在考试中,一定要把a[N][N]数组中的具体数据代入函数sort中,我们可以发现k<
N-1<
是有问题的,应改为K<
N,<
这样才能每一个数组的值进行比较,否则就缺少最后一个没有被比较,在本题目中,swap函数作用是交换数值,sort函数的作用是比较每一行元素的值调用swap进行交换
错误1:
应改为:
p=*p1;
*p1=*p2;
*p2=p;
错误2:
K++)应改为:
错误3:
i%2==0?
a[i][j]a[i][k]应改为:
a[i][j]>
a[i][k]:
a[i][j]<
A[I][K]<
错误4:
sort(a);
二:
编程题:
[程序功能]:
找出符合以下条件的Troitsky数,将该数的首位数字移动到末位数字之后得到的数是原数的整数倍
例如:
将142857的首位数字1移动到末位之后得到的数是428571,而428571=3*142857,因此142857是Troitsky数
编程要求:
1.
编写函数intTroitsky(longa[]),其功能是求出1000000以内的所有Troitsky数,并将它们依次放入a指向的数组中,函数返回找到的Troitsky数的个数.
2.
编写main函数,调用Troitsky函数,将运行结果输出到屏幕及结果文件myf2.out中。
最后将考生的准考证号也保存到结果文件myf2.out中.
142857285714
1.将源文件取名为myf2.c,输出结果文件取名为myf2.out。
2.数据文件的打开、使用和关闭等操作均用C标准库中缓冲文件系统的文件操作函数实现。
3.源程序文件和运行结果文件均须保存在T:
盘的根目录下供阅卷用。
4.不要将myf2.obj、myf2.exe保存到T:
盘中。
解析:
本题目中主要考察的是如何将一个数转化为另一个数,因为判分标准是按照步骤给分,所以,对文件操作的一定要记住,从FILE*fp开始到结束的格式一定要背过
答案:
intTroitsky(longa[])
{intcount=0,i=0;
longn,n1;
for(n=1;
n<
=1000000;
n++)
{n1=(n_0000)*10+n/100000;
for(i=1;
10;
i++)
if(i*n==n1&
&
n!
=n1)
{a[count++]=n;
break;
}
returncount;
{longa[10],i;
intk;
FILE*fp;
fp=fopen("
myf2.out"
"
w"
);
if(fp==NULL)exit(0);
k=Troitsky(a);
K;
{printf("
_ld"
a[i]);
fprintf(fp,"
printf("
\n"
\nmyexamnumberis:
012345678\n"
fclose(fp);
江苏省高等学校非计算机专业学生
计算机基础知识和应用能力等级考试上机试卷(2009年春)
二级C语言
(试卷代号C01)
(本试卷完成时间70分钟)
一、改错题(20分)
【程序功能】
已知x数组中存储的n阶矩阵有一个鞍点(鞍点是指该位置上的数是所在行的最大数。
同时也是所在列的最小数),程序实现将矩阵中鞍点所在列移动到最右侧。
【测试数据与运行结果】
测试数据;
1
3
2
0
4
6
5
-1
7
9
8
-1
lO
2
运行结果;
Andian;
a[0][1]
0
3
6
9
10
【含有错误的源程序】
#include<
stdio.h>
#defineN=4
voidexchange(inta[][N])
{inti,j,k,f,t,m,mj;
for(i=O;
{m=a[i][0];
mj=O;
f=1;
j++)
if(a[i][j]>
m)
{m=a[i][j];
mj=j;
for(k=O;
N&
f;
k++)
if(a[k][mj]>
f=O;
if(k>
=N)break;
if(f)
Andian;
a[%d][%d]\n"
i,mj);
{
t=a[i][mj];
for(j=mj;
a[i][mj]=a[i][mj+1];
a[i][N-1]=t;
{intx[N][N]={{1,3,2,0},{4,6,5,-1),{7,9,8,0),{-1,10,3,2}},i,j;
%3d"
x[i][j]);
exchange(intx[N][N]);
{for(j=O;
【要求】
将上述程序录入到文件myfl.C中,根据题目要求及程序中语句之间的逻辑关系对程序
中的错误进行修改。
改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译
预处理命令,但不能增加其它语句,也不能删去整条语句.
3.
改正后的源程序(文件名myfl.c)保存在T:
盘根目录中供阅卷使用,否则不予评分。
二、编程题(20分)
将一个十进制整数m转换成r进制整数的字符串表示形式。
【编程要求】
1.编写函数voidtrdec(char*str,intidec,intibase),其功能是将十进制整数idec
转换为ibase进制数的字符串表示形式,将得到的字符串保存到str指向的字符数组中。
2.编写main函数,接收键盘输入的一个整数,调用trdec函数分别将该整数转换为二进
制、八进制及十六进制数的字符串表示形式,将转换后得到的三个字符串按给出的运行
结果形式输出到屏幕及结果文件myf2.out中.最后将考生本人的准考证号字符串也保
存到结果文件myf2.out中。
26
运行结果:
11O1OB,32Q,1AH
1.源程序文件名为myf2.C。
输出结果文件名为myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现.
3.源程序文件和运行结果文件均需保存在T:
盘根目录中供阅卷使用。
4.不要复制扩展名为obj和exe的文件到
2009秋江苏计算机等级C上机真题1
改错题:
输入两个正确日期且年份在1900-9999范围内,计算
并输出两个日期之间间隔的天数,例如:
2008-8-1
和2009-8-1之间间隔的天数为365
提示:
能被4整除并且不能被100整除的年份是闰年,能
被400整除的年份也是闰年,其他年份则是平年
显示:
first
date:
输入:
1980-2-1
seconddate:
2009-8-1
输出:
10774
days
[含有错误的源程序]
#include<
#defineleap(inty)((y)%4==0&
(y)%100!
=0||(y)%400==0)
structd
{inty,m,d;
};
intdays(structdd1,structdd2)
{intmon[2][13]=
{{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
inti;
longtd=0;
for(i=d1.y;
d2.y;
td=leap(i)?
366:
365;
for(i=1;
d1.m;
td-=mon[leap(d1.y)][i];
td-=d1.d-1;
d2.m;
td+=mon[leap(d2.y)][i];
td+=d2.d-1;
returntd;
{structdd1,d2;
longtd;
printf("
firstdate:
"
scanf("
%d-%d-%d"
d1.y,d1.m,d1.d);
d2.y,d2.m,d2.d);
td=days(d1,d2);
%ld"
td);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏 上机 试题