江苏10春二级C语言上机0106Word文件下载.docx
《江苏10春二级C语言上机0106Word文件下载.docx》由会员分享,可在线阅读,更多相关《江苏10春二级C语言上机0106Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
voidfun1(intm,intn,intb[])
{intI,k=0;
If(m>
n)return0;
for(i=m*m;
n*n;
if(prime(i))b[k++]=I;
voidmain()
{inta[50]={0},b[100]={0},I,m,k,j,n;
printf(“inputn:
”);
scanf(“%d”,&
n);
m=fun(a,n);
for(i=0;
m;
{k=fun1(a[i],a[i+1],b[0]);
printf(“%d~%dk=%d,a[i],a[i+1],k”);
if(k<
4){printf(“false”);
break;
for(j=0;
j<
k;
j++)
{if(j%10=0)printf(“\n”);
printf(“%5d”,b[j]);
printf(“\n”);
getch();
【要求】
1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,单不能增加其他语句,也不能山区整条语句。
3改正后的源程序(文件名myf1.c)保存在T:
盘根目录中共阅卷使用,否则不予评分。
二编程题
在给定范围内查找k使得用公式k^2+k+17生成的整数满足以下条件:
该数的十进制表示中低3位数字相同,去掉低3位后的整数是回文数。
例如,当k=461时用公式生成的整数是212999,该数满足所给条件。
【编程要求】
1编写函数intfindnum(intn1,intn2,longa[][2])实现以下功能:
k依次取n1~n2范围内的每个整数,分别用每个k及公式k^2+k+17生成整数y,若y满足给定条件,则将k值及y值保存到a指向的数组中,函数返回a数组中k的个数。
2编写函数main实现以下功能:
声明二维数组a和变量n1,n2,输入两个整数并保存到n1,n2中,用n1,n2及a数组作实参调用findnum函数,按所给格式输出a数组中的数据到屏幕及文件myf2.out中。
最后将考生本人的准考证号输出到文件myf2.out中。
【测试数据及运行结果】
输入:
n1=1,n2=10000
knumber
461212999
586343999
383914741777
1源程序文件名为myf2.c,输出结果文件名为myf2.out。
2数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
3源程序文件和运行结果文件均需保存到T:
盘根目录中供阅卷使用。
4不要复制拓展名为obj和exe的文件到T:
盘中。
2010年春C02
一、改错题(16分)
[程序功能]
先将一个正整数转换为十进制数字字符串,再将千位分隔符插入到该字符串中,最后输出该字符串。
[测试数据及运行结果]
1234567
1,234,567
[含有错误的源程序]
string.h>
voidltoa(chars[],longnum)
{longn=num,i=0;
Printf(“%ld\n”,num);
While(n)
{i++;
n/=10;
}
S[i]=\0;
While(num)
{s[--i]=num%10+’0’;
num/=10;
voidinsert(chars[])
{charj,k,t;
t=j=strlen(s);
while(j>
3)
{j=j-3;
for(k=t;
k>
j;
k--)
s[k]=s[k+1];
s[j]=’,’;
t++;
{staticchars[20];
longnum;
scanf(“%d”,&
num);
ltoa(s,num);
insert(s,num);
puts(s);
getch();
[要求]
1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关
系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。
3.改正后的源程序(文件名myf1.c)保存在T:
盘根目录中拱阅卷使用,否则不予评分。
二、编程题(24分)
一个整数的“真因子”是指包括1但不包括整数自身的因子。
“真因子和数列”是指取一个正整数作为数列首项,首项之后的每一项都是前一项的真因子之和。
真因子和数列有几种可能的形式,其中的一种形式是以1结束。
例如,取10作为数列首项,10的真因子和为8(1+2+5),8的真因子和为7(1+2+4),7的真因子和为1。
因此,用10生成的真因子和数列(10,8,7,1)以1结束。
编写程序分别以在给定范围内取值的多个正整数作为数列首项,生成多个与其对应的“真因子和数列”,这些数列均以1结束。
[编程要求]
1.编写函数intsequ(intm1,intm2,intnum[][10])实现以下功能:
依次取[m1,m2]范围内每个正整数作为数列首项可生成m2-m1+1个真因子和数列,将其中不超过10项且以1结束的数列保存到num指向的二维数组中,函数返回num数组中存储的数列个数。
2.编写函数main实现以下功能:
声名二维数组x和变量m1、m2,输入两个正整数保存到m1和m2中(m1<
m2),用m1、m2和数组x作为实参调用sequ函数,按所给格式将二维数组x中的数列输出到屏幕及文件myf2.out中。
[测试数据与运行结果]
m1=21,m2=30
21111
221410871
231
243655171
2616159431
27131
291
1.源程序文件名为myf2.c,输出结果文件名为myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
3.源程序文件和运行结果文件均需保存在T:
盘根目录中拱阅卷使用。
4.不要复制扩展名为obj和exe的文件到T:
2010年春C04
由一个取值在0~32767范围内的正整数x生成一个由十六进制数字字符组成的字符串。
生成规则如下:
设x的质因数分解式为qn^r(n)*qn^r(n-1)*…….*q2^r
(2)*q1^r
(1),其中q1代表素数2,q2代表q1之后的下一个素数3,……,qn代表qn-1之后的下一个素数。
取出x的质因数分解式中所有素数的指数,将这些指数分别转换为十六进制数字字符并合并为一个字符串。
例如,49的质因数分解式为7^2*5^0*3^0*2^0,因此由49生成的字符串是“2000”。
16384的质因数分解式为2^14=2^EH,因此由16384生成的字符串是“E”。
【测试数据与运行结果】
第一次运行输入:
49
输出:
2000
第二次运行输入:
16384
E
第三次运行输入:
16000
307
【含有错误源程序】
IntnextPrime(intx)
{intk;
do
{x++;
for(k=2;
k<
x:
k++)
If(x%k=0)break;
}while(k<
x);
ruturnx;
}
voidtransform(intx,char*s)
{inti,j;
char*p=s,ch;
charbit[]=”0123456789ABCDEF”;
for(i=2,j=0;
x>
2;
)
if(x%i==0){j++;
x/=I;
else{*s++=bit[j];
i=nextPrime(i)=0;
*s=bit[j];
*s+1=’\0’;
for(;
p<
s;
p++,s--){ch=*p;
*p=*s;
*s=ch}
Voidmain()
{inta;
chars[];
scanf(“%d”,&
a);
transform(a,s);
1、将上述程序录入文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2、改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3、改正后的源程序(文件名myf1.c)保存在T:
盘根目录中供阅卷使用,否则不予评分。
分别找出3位数和4位数中的所有Armstrong数并输出。
Armstrong数是指一个n位数的各数字的n次方之和等于该数。
例如:
153=1^3+5^3+3^3;
1634=1^4+6^4+3^4+4^4。
因此,153是3位Armstrong数,1634是4位Armstrong数。
1、编写函数intarms(intar[])实现以下功能:
将所有3位或4位Armstrong数存入数组ar中,函数返回这些Armstrong数的个数。
2、编写函数main实现以下功能:
声明1个一位数组a,用a数组作实参调用arms函数,将a数组中存储的所有Armstrong数及其个数k输出到屏幕及文件myf2.out中。
K=7
153370371407163482089474
1、源程序文件名为myf2.c,输出结果文件名为myf2.out。
2、数据文件的打开、使用、关闭均用C语言标准库中缓冲文件操作函数实现。
3、源程序文件和运行结果文件均需保存在T:
盘根目录供阅卷使用。
4、不要复制扩展名为obj和exe的文件到T:
10年春c05语言
一、改错(16分)
一个数列中相邻的n个数被称为n阶子序列。
程序实现在二维数组a的每一行中找出和值最大的3阶子序列,并将这些子序列的起始列下标及和值保存在二维数组b中。
函数sta在pa指向的一维数组m个元素中找出和值最大的n阶子序列,将找到的子序列起始下标保存到pos指向的变量中,函数返回最大和值。
【数据测试与运行结果】
数组初始化数据:
12345
12321
65432
Position:
a[0][2]max:
12
a[1][1]max:
7
a[2][0]max:
15
#include“stido.h”
intsta(int*pa,intm,intn,int*pos)
{inti=0,j=0,max=1,sum;
intb;
if(n<
m)
{b=(int*)malloc(sizeof(int)*(m-n+1));
for(i=0;
=m-n;
{for(sum=0,j=i+1;
i+n;
Sum=sun+pa[j];
b[i]=sum;
max=b[0];
{if(b[i]>
max)
{max=b[i];
*pos=I;
free(b);
returnmax;
{inta[3][]={{1,2,3,4,5},{1,2,3,2,1},{6,5,4,3,2}},b[3][2]={0},I,n,*p=&
n;
for(i=0;
3;
{b[i][1]=sta(a[i],5,3,p);
b[i][0]=p;
printf(“\nposition:
a[%d][%d]max:
%4d”,I,b[i][0],b[i][1]);
1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的改错进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的语句说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。
二、编程题(24分)
判断求余运算“%”对于一个数组是否封闭。
求余运算“%”对于一个数组的封闭性定义为:
对于一维数组a中的任意两个元素a[i]和a[j](i不等于j),若当a[j]不为0时a[i]%a[j]的值都存在于数组a中,则称求余运算“%”对于a数组是封闭的。
1.编写函数intjudge(inta[],intn)实现以下功能:
判断求余运算%对于a指向的包含n个元素的数组是否封闭,若封闭则函数返回1,否则函数返回0。
2.编写函数main实现以下功能:
声明一维数组a和b并用测试数据初始化,分别用a数组和b数组作实参两次调用judge函数,判断求余运算“%”对于a数组及b数组是否封闭,若封闭则输出“yes”,否则输出“no”。
将a数组和b数组中数据及判断结果输出到屏幕及文件myf2.out中。
a数组初始化数据:
{1,3,22,4,15,2,7,5,0}
b数组数据初始化:
{1,3,8,4,6,7,5,0}
13224152750yes
13846750no
1.源程序文件名为myf2.c,输出结果文件名为myf2.out。
盘根目录下供阅卷使用。
2010春C语言C06
一.改错题
函数findword的功能是:
在s指向的由若干个英文句子组成的字符串中搜索包含t指向子串的单词,将最骄傲道的所有包含t子串的单词复制到ch指向的二维数组中,函数返回找到的单词个数。
称s字符串为“被搜索字符串”,t字串为“搜索字符串”。
被搜索字符串:
Nolivingmanallthingscan.Graspall,loseall.
搜索字符串:
all
Ch[0]all
Ch[1]Graspall
Ch[2]loseall.
K=3
【含有错误的源程序】
#include<
intfindstr(chars[],chart[])
{intI,j;
s[i]!
=’\0’;
{j=0;
while(t[j]!
=’\0’&
&
t[j]==s[i])
{j++;
i++;
if(t[j]!
=’\0’)return1;
elsei=i-j;
return0;
intfindword(chars[],chart[],charch[][20])
{inti=0,j,k=0;
charstr[20];
while(s[i])
{while(!
isalpha(s[i]))
If(s[i]!
=’\0’)i++;
elsebreak;
for(j=0;
isalpha(s[i]);
j++,i++)
str[j]=s[i];
str[j]=’\0’;
if(findstr(str,t))
strcpy(str,ch[k++]);
{chars[80]=”Nolivingmanallthingscan.Graspall,loseall.”;
chart[20]=”all”,ch[40][20];
intI,l;
k=findword(s,t);
printf(“ch[%d]%s\n”,I,ch[i]);
printf(“k=%d\n”,k);
1将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错去进行修改。
2改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删除整条语句。
3改正后的源程序(文件名myf1.c)保存在T:
二.编程题(24分)
【程序功能】
对一组整数一次做加密变换。
加密规则如下:
先将一个整数的十进制表示的每位数字用该数字加5后除以10的余数替换,再将该整数的首位和末尾交换。
【编程要求】
1.编写函数voidencode(longa[],longb[],intn)实现如下功能:
依照上述加密规则将a指向数组的n个元素中存储的一组整数分别加密后保存到b指向的数组中。
2.编写函数main实现以下功能:
声明一维数组a和b,a数组保存加密前数据,b数组保存加密后数据,用测试数据初始化a数组,用a,b数组作为实参调用encode函数,将b数组中数据输出到屏幕及文件myf2.out中。
a数组初始化数据:
1223445678999898756
7698720193444323410
1.源程序文件名保存为myf2.c,输出结果文件名为myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
3.源程序文件和运行结果文件均需保存在T:
盘根目录中。
4.不要复制扩展名为obj和exe的文件到T: