江苏省二级c语言上机考试例题集120.docx

上传人:b****4 文档编号:4931602 上传时间:2022-12-11 格式:DOCX 页数:29 大小:25.73KB
下载 相关 举报
江苏省二级c语言上机考试例题集120.docx_第1页
第1页 / 共29页
江苏省二级c语言上机考试例题集120.docx_第2页
第2页 / 共29页
江苏省二级c语言上机考试例题集120.docx_第3页
第3页 / 共29页
江苏省二级c语言上机考试例题集120.docx_第4页
第4页 / 共29页
江苏省二级c语言上机考试例题集120.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

江苏省二级c语言上机考试例题集120.docx

《江苏省二级c语言上机考试例题集120.docx》由会员分享,可在线阅读,更多相关《江苏省二级c语言上机考试例题集120.docx(29页珍藏版)》请在冰豆网上搜索。

江苏省二级c语言上机考试例题集120.docx

江苏省二级c语言上机考试例题集120

1、取出一个十进制正整数中的所以奇数数字,用这些数字构成一个最小数。

#include

#include

voidsort(inta[],intn)

{

inti,j,t;

for(i=0;i

for(j=0;j

if(a[j]>a[j+1])

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

}

longarrange(longs)/*arrange函数的功能是取出十进制整数s中的所有奇数数字,用这些数字构成一个最小数,函数返回该数*/

{intd,b[10],i,j=0;

longs1=0;

while(s>0)/*利用循环对s数位分离,分离出个位、十位、百位等各位上的数*/

{d=s%10;

if(d%2!

=0)/*判断每一位上的数字是否为奇数*/

b[j++]=d;/*若为奇数则存放到b数组中*/

s/=10;

}

sort(b,j);/*调用sort函数,将数组b从小到大排列*/

for(i=0;i

s1=s1*10+b[i];/*求得用各位上的奇数组成的最小数*/

returns1;/*返回求得的数*/

}

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,"%ld\n",m);

printf("\nMyexamnumberis:

WLJY001\n");/*将考生准考证号输出到屏幕及结果文件中*/

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);/*关闭文件*/

}

2、按要求合并两个字符串

#include

#include

#include

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

{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;c++;b++;}

}

*c='\0';

}

voidmain()

{

FILE*fp;/*定义文件指针fp*/

chars1[80],s2[80],s[200];/*声明3个一维数组*/

if((fp=fopen("myf2.out","w"))==NULL)

{printf("can'topenfile");exit(0);}

printf("\nEnters1string:

");

gets(s1);

printf("\nEnters2string:

");

gets(s2);/*s1、s2接收键盘输入的字符*/

fun(s1,s2,s);/*调用change函数,对字符串s2进行逆序变换,再合并s1字符串和s2字符串并保存到s数组中*/

printf("\nTheresultis:

%s\n",s);

/*将合并后产生的数组s中的字符串输出到屏幕及结果文件中*/

fprintf(fp,"%s",s);

fprintf(fp,"\n");

printf("\nMyexamnumberis:

WLJY001\n");/*将考生准考证号输出到屏幕及结果文件中*/

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);/*关闭文件*/

}

3、先判断一个m×n矩阵为Monge矩阵,在对该矩阵进行交换处理

#include

#include

#defineN5

voidchange(inta[][N],intn)/*该函数的功能是,对a指向的n行5列数组中的矩阵进行变换*/

{inti,j,t;

for(i=0;i

for(j=0;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;

for(i=0;i

{for(j=0;j

if(a[i][j]+a[i+1][j+1]>a[i][j+1]+a[i+1][j])

return0;

/*若矩阵不是Monge矩阵,函数返回0*/

}

return1;

/*若矩阵是Monge矩阵,函数返回1*/

}

voidmain()

{

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("myf2.out","w");/*以只写"w"方式打开文件*/

if(fp==NULL)exit(0);

monge=Monge(a,5);/*调用Monge函数对a数组进行判断*/

for(i=0;i

{for(j=0;j

{printf("%4d",a[i][j]);fprintf(fp,"%4d",a[i][j]);}

printf("\n");fprintf(fp,"\n");

}

if(monge)

{printf("aisMonge\n");fprintf(fp,"aisMonge\n");}/*将a数组变换前的判断结果输出到屏幕及结果文件中*/

else

{printf("aisnotMonge\n");fprintf(fp,"aisnotMonge\n");}

change(a,5);/*调用change函数对a数组进行变换处理*/

for(i=0;i

{

for(j=0;j

{printf("%4d",a[i][j]);fprintf(fp,"%4d",a[i][j]);}

printf("\n");fprintf(fp,"\n");

}/*将a数组变换后的元素输出到屏幕及结果文件中*/

monge=Monge(a,5);/*调用Monge函数对经过变换的a数组进行判断*/

if(monge)/*将a数组变换后的判断结果输出到屏幕及结果文件中*/

{printf("aisMonge\n");

fprintf(fp,"aisMonge\n");}

else

{printf("aisnotMonge\n");fprintf(fp,"aisnotMonge\n");}

printf("\nMyexamnumberis:

WLJY001\n");/*将考生准考证号输出到屏幕及结果文件中*/

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);/*关闭文件*/

}

4、用一组整数验证命题

#include

#include

#defineN100

intfun(inta[],intb[],intn)

{

inti,j,x,y,z,s,t,m,k=0;

for(i=0;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中数据的个数*/

}

voidmain()

{

inta[N]={123,765,1,45,121,1345,131,67,696,3589},b[N],n,i;

FILE*fp;/*定义文件指针*/

if((fp=fopen("myf2.out","w"))==NULL)/*以只写"w"方式打开文件*/

{printf("Thefilecallnotopen!

");exit(0);}

n=dotest(a,b,10);/*用a数组作为实参调用fun函数*/

for(i=0;i

{printf("%5d",a[b[i]]);fprintf(fp,"%5d",a[b[i]]);}/*将a数组中所有符合命题的整数输出到屏幕及结果文件中*/

/*将考生准考证号输出到屏幕及结果文件中*/

printf("\nMyexamnumberis:

WLJY001\n");

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);/*关闭文件*/

}

5、找出7个默森尼数

#include

#include

#defineN7

voidMersenne(longa[],intm);

intprime(long);

voidmain()

{

longa[N];

inti;

FILE*fp;/*定义文件指针*/

fp=fopen("myf2.out","w");/*以只写"w"方式打开文件*/

if(fp==NULL)exit(0);

Mersenne(a,N);/*调用Mersenne函数,找出并保存前7个Mersenne数*/

for(i=0;i

{printf("%8ld",a[i]);fprintf(fp,"%8ld",a[i]);}/*将运行结果输出到屏幕及结果文件中*/

printf("\nMyexamnumberis:

WLJY001\n");/*将考生准考证号输出到屏幕及结果文件中*/

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

}

voidMersenne(longa[],intm)/*该函数的功能是,求出前m个Mersenne数*/

{longf,n,k;

inti=0;

a[i++]=3;

for(n=3;i

{

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;i<=n/2;i++)

if(n%i==0)return0;

return1;/*若是素数函数返回值1*/

}

6、从一个指定的自然数

#include

#include

intlinkrun(inta,intb,int*p);

voidmain()

{

inti,a,b,max,p[100];

FILE*fp;

if((fp=fopen("myf2.out","w"))==NULL)/*以只写"w"方式打开文件*/

{printf("Thefilecallnotopen!

");exit(0);}

printf("Entera,b:

(a

scanf("%d,%d",&a,&b);/*接收从键盘输入的a和b*/

max=linkrun(a,b,p);/*以a、b、p作为实参调用函数*/

for(i=0;i<=b-a;i++)

{

printf("%3d",p[i]);

fprintf(fp,"%3d",p[i]);

}

printf("\nmax=%d",max);

fprintf(fp,"\nmax=%d",max);/*将运行结果输出到屏幕及结果文件中*/

printf("\nMyexamnumberis:

WLJY001\n");/*将考生准考证号输出到屏幕及结果文件中*/

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);/*关闭文件*/

}

intlinkrun(inta,intb,int*p)

{

inti,k,m,n,num;

num=0;

for(i=0,k=a;k<=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进制整数的字符串表示形式

#include

#include

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;

}

for(i=0;i

{ch=str[i];

str[i]=str[k-i-1];

str[k-i-1]=ch;

}

str[k]='\0';

}

voidmain()

{

intx;charstr[20];FILE*fp;/*变量声明,定义文件指针fp*/

if((fp=fopen("myf2.out","w"))==NULL)

{printf("Thefilecannotopen!

");exit(0);}

printf("Enteranumber");scanf("%d",&x);/*接收从键盘输入的x*/

trdec(str,x,2);/*调用函数将该整数转换为二进制并输出到屏幕及结果文件中*/

printf("%sB,",str);fprintf(fp,"%sB,",str);

trdec(str,x,8);/*调用函数将该整数转换为八进制并输出到屏幕及结果文件中*/

printf("%sQ,",str);fprintf(fp,"%sQ,",str);

trdec(str,x,16);/*调用函数将该整数转换为十六进制并输出到屏幕及结果文件中*/

printf("%sH\n",str);fprintf(fp,"%sH\n",str);

printf("\nMyexamnumberis:

WLJY001\n");/*将考生准考证号输出到屏幕及结果文件中*/

fprintf(fp,"\nMyexamnumberis:

WLJY001\n");

fclose(fp);/*关闭文件*/

}

8、将以为数组中的所有素数移到该数组的前端部分

#include

#include

intN;

voidinsert(int*p,intx,intn)

{

inti=0,j;

while(x>p[i]&&i

i++;

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

p[j]=p[j-1];

p[j]=x;/*②此语句的作用是将x插入到元素p[j]的位置*/

}

int*create()

{

int*head,*p,i;

printf("\nN=");

scanf("%d",&N);

head=(int*)malloc(N*sizeof(int));/*③分配内存空间函数malloc的调用形式错误,正确的为:

(类型说明符*)malloc(size)*/

printf("Enternumbers:

");

p=head;

for(i=0;i

scanf("%d",&p[i]);/*④接收从键盘输入的数值要用取址运算符*/

for(i=1;i

insert(p,p[i],i);

returnhead;

}

voidmain()

{

int*head,*p,i,x;

head=create();

p=head;

for(i=0;i

printf("%3d",*p++);

free(head);

}

9、用以下展开式求

#include

#include

#include/*①后续程序调用了字符函数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;

for(i=0;s[i];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]);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1