江苏省二级c语言上机考试例题集120Word格式.docx
- 文档编号:17884988
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:29
- 大小:25.73KB
江苏省二级c语言上机考试例题集120Word格式.docx
《江苏省二级c语言上机考试例题集120Word格式.docx》由会员分享,可在线阅读,更多相关《江苏省二级c语言上机考试例题集120Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
/*返回求得的数*/
voidmain()
longm,n;
FILE*fp;
/*定义文件指针fp*/
if((fp=fopen("
myf2.out"
"
w"
))==NULL)/*涉及文件的打开*/
{printf("
Thefilecannotopen!
"
);
exit(0);
scanf("
%ld"
&
n);
/*接收键盘输入的整型数据*/
m=arrange(n);
/*键盘输入的数据作为实参调用arrange函数*/
printf("
%ld\n"
m);
/*将得到的最小数输出到屏幕及结果文件中*/
fprintf(fp,"
\nMyexamnumberis:
WLJY001\n"
/*将考生准考证号输出到屏幕及结果文件中*/
fclose(fp);
/*关闭文件*/
2、按要求合并两个字符串
string.h>
voidfun(char*a,char*b,char*c)/*函数功能是先将b指向的字符串逆序存放,然后按a[0],b[0],a[1],b[1]…的顺序合并a字符串和b字符串到c指向的数组中,将a或b中剩余的字符拼接在c数组的尾部*/
{inti,j;
charch;
i=0;
j=strlen(b)-1;
while(i<
j)/*利用while循环将数组b中的字符逆序存放*/
{ch=b[i];
b[i]=b[j];
b[j]=ch;
i++;
j--;
while(*a||*b)/*利用while循环,通过判断*a||*b,将a、b数组间隔存放在c数组中*/
{if(*a){*c=*a;
c++;
a++;
if(*b){*c=*b;
b++;
*c='
\0'
;
chars1[80],s2[80],s[200];
/*声明3个一维数组*/
))==NULL)
can'
topenfile"
\nEnters1string:
gets(s1);
\nEnters2string:
gets(s2);
/*s1、s2接收键盘输入的字符*/
fun(s1,s2,s);
/*调用change函数,对字符串s2进行逆序变换,再合并s1字符串和s2字符串并保存到s数组中*/
\nTheresultis:
%s\n"
s);
/*将合并后产生的数组s中的字符串输出到屏幕及结果文件中*/
%s"
\n"
/*将考生准考证号输出到屏幕及结果文件中*/
3、先判断一个m×
n矩阵为Monge矩阵,在对该矩阵进行交换处理
#defineN5
voidchange(inta[][N],intn)/*该函数的功能是,对a指向的n行5列数组中的矩阵进行变换*/
{inti,j,t;
n/2;
i++)/*通过两重for循环对数组各行的位置进行交换*/
N;
j++)
{t=a[i][j];
a[i][j]=a[n-1-i][j];
a[n-1-i][j]=t;
}/*变换形式:
第一行与最后一行交换,第二行与倒数第二行交换……*/
intMonge(inta[][N],intn)
inti,j;
n-2;
i++)/*利用for循环和if语句对数组元素进行矩阵判断,判断是否为Monge矩阵*/
{for(j=0;
N-2;
if(a[i][j]+a[i+1][j+1]>
a[i][j+1]+a[i+1][j])
return0;
/*若矩阵不是Monge矩阵,函数返回0*/
return1;
/*若矩阵是Monge矩阵,函数返回1*/
inta[][N]={{10,17,13,28,23},{17,22,16,29,23},
{24,28,22,34,24},{11,13,6,17,7},{45,44,32,37,23}};
/*数组初始化*/
intmonge,i,j;
FILE*fp;
fp=fopen("
/*以只写"
方式打开文件*/
if(fp==NULL)exit(0);
monge=Monge(a,5);
/*调用Monge函数对a数组进行判断*/
i++)/*将a数组变换前中的元素输出到屏幕及结果文件中*/
{for(j=0;
{printf("
%4d"
a[i][j]);
fprintf(fp,"
printf("
if(monge)
aisMonge\n"
}/*将a数组变换前的判断结果输出到屏幕及结果文件中*/
else
aisnotMonge\n"
change(a,5);
/*调用change函数对a数组进行变换处理*/
{
{printf("
}/*将a数组变换后的元素输出到屏幕及结果文件中*/
/*调用Monge函数对经过变换的a数组进行判断*/
if(monge)/*将a数组变换后的判断结果输出到屏幕及结果文件中*/
fprintf(fp,"
{printf("
4、用一组整数验证命题
#defineN100
intfun(inta[],intb[],intn)
inti,j,x,y,z,s,t,m,k=0;
n;
i++)/*按题目要求的步骤进行交换,直到得到所要求的结果停止循环*/
if(a[i]/1000<
1)
{
x=a[i]/100;
y=a[i]/10%10;
z=a[i]%10;
/*对数a[i]进行数位分离*/
if(x!
=z)
{
s=z*100+y*10+x;
/*交换a[i]的百位数字与个位数字得到s*/
t=s>
a[i]?
(s-a[i]):
(a[i]-s);
/*求a[i]和s的绝对值得到t*/
x=t/100;
y=t/10%10;
z=t%10;
m=z*100+y*10+x;
/*交换t的百位数字与个位数字得到m*/
if(t+m==1089)/*判断t与m的和是否为1089*/
b[k++]=i;
}
}
returnk;
/*函数返回数组b中数据的个数*/
inta[N]={123,765,1,45,121,1345,131,67,696,3589},b[N],n,i;
/*定义文件指针*/
))==NULL)/*以只写"
方式打开文件*/
Thefilecallnotopen!
n=dotest(a,b,10);
/*用a数组作为实参调用fun函数*/
%5d"
a[b[i]]);
}/*将a数组中所有符合命题的整数输出到屏幕及结果文件中*/
/*关闭文件*/
5、找出7个默森尼数
#defineN7
voidMersenne(longa[],intm);
intprime(long);
longa[N];
inti;
Mersenne(a,N);
/*调用Mersenne函数,找出并保存前7个Mersenne数*/
%8ld"
a[i]);
}/*将运行结果输出到屏幕及结果文件中*/
voidMersenne(longa[],intm)/*该函数的功能是,求出前m个Mersenne数*/
{longf,n,k;
inti=0;
a[i++]=3;
for(n=3;
m;
n+=2)
f=1;
for(k=1;
k<
=n;
k++)
f*=2;
/*求2的n次方*/
if(prime(n)&
&
prime(f-1))/*当n和2的n次方减1均为素数时,该数为Mersenne数*/
a[i++]=f-1;
/*将找到的Mersenne数保存到数组a中*/
intprime(longn)/*该函数的功能是,判断整数a是否是素数*/
{longi;
for(i=2;
=n/2;
if(n%i==0)return0;
/*若是素数函数返回值1*/
6、从一个指定的自然数
intlinkrun(inta,intb,int*p);
inti,a,b,max,p[100];
))==NULL)/*以只写"
Entera,b:
(a<
b)"
%d,%d"
a,&
b);
/*接收从键盘输入的a和b*/
max=linkrun(a,b,p);
/*以a、b、p作为实参调用函数*/
=b-a;
%3d"
p[i]);
\nmax=%d"
max);
/*将运行结果输出到屏幕及结果文件中*/
intlinkrun(inta,intb,int*p)
inti,k,m,n,num;
num=0;
for(i=0,k=a;
=b;
i++,k++)/*通过for循环,以[a,b]中所有自然数作为n*/
{n=k;
p[i]=1;
while(n!
=1)
++p[i];
/*将数列的长度保存到数组p中*/
if(n%2)/*n为奇数时,按相应公式求解*/
n=n*3+1;
else/*当n为偶数时,按相应公式求解*/
n/=2;
if(p[i]>
num)num=p[i];
/*求出数组中最大值*/
returnnum;
/*返回最大值*/
7、将一个十进制整数m转换成r进制整数的字符串表示形式
voidtrdec(char*str,intidec,intibase)/*该函数的功能是,将十进制整数idec转换为ibase进制的字符串表示形式*/
{charch;
inti,idr,k=0;
while(idec!
=0)
idr=idec%ibase;
/*idec对ibase求余*/
if(idr>
=10)/*判断余数,根据余数的值对其进行变换*/
str[k++]=idr-10+'
A'
else
str[k++]=idr+'
0'
idec/=ibase;
k/2;
i++)/*转换成ibase进制数的字符串形式后,将字符串保存到str指向的字符数组*/
{ch=str[i];
str[i]=str[k-i-1];
str[k-i-1]=ch;
str[k]='
intx;
charstr[20];
/*变量声明,定义文件指针fp*/
Enteranumber"
%d"
x);
/*接收从键盘输入的x*/
trdec(str,x,2);
/*调用函数将该整数转换为二进制并输出到屏幕及结果文件中*/
%sB,"
str);
trdec(str,x,8);
/*调用函数将该整数转换为八进制并输出到屏幕及结果文件中*/
%sQ,"
trdec(str,x,16);
/*调用函数将该整数转换为十六进制并输出到屏幕及结果文件中*/
%sH\n"
8、将以为数组中的所有素数移到该数组的前端部分
intN;
voidinsert(int*p,intx,intn)
inti=0,j;
while(x>
p[i]&
i<
n)/*①p是指针类型,引用形式不对*/
for(j=n;
j>
i;
j--)
p[j]=p[j-1];
p[j]=x;
/*②此语句的作用是将x插入到元素p[j]的位置*/
int*create()
int*head,*p,i;
\nN="
N);
head=(int*)malloc(N*sizeof(int));
/*③分配内存空间函数malloc的调用形式错误,正确的为:
(类型说明符*)malloc(size)*/
Enternumbers:
p=head;
scanf("
p[i]);
/*④接收从键盘输入的数值要用取址运算符*/
for(i=1;
insert(p,p[i],i);
returnhead;
int*head,*p,i,x;
head=create();
*p++);
free(head);
9、用以下展开式求
ctype.h>
/*①后续程序调用了字符函数isalpha,所以要加#include<
*/
voidreplace_word(chars[])
charword_tab[4][10]={"
sad"
happy"
accuse"
forgive"
};
chart[10],tmp[80];
/*②由后面的t[k]=s[j]知,此处定义的t不是一个字符变量,而是一个字符型数组*/
inti,j,k,n;
s[i];
for(j=i,k=0;
isalpha(s[j]);
k++,j++)
t[k]=s[j];
t[k]=0;
if(k>
0)
for(n=0;
n<
4;
n++)
if(strcmp(t,word_tab[n])==0)break;
if(n<
4)
strcpy(tmp,s+i+strlen(t));
strcpy(s+i,word_tab[(n+1)%4]);
strcat(s,tmp);
/*③strcpy(str1,str2)是把字符串str2复制到str1中,会覆盖str1中的内容,此处应用strcat函数*/
i=i+strlen(word_tab[(n+1)%4]);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏省 二级 语言 上机 考试 例题 120