24题.docx
- 文档编号:6899693
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:20
- 大小:22.45KB
24题.docx
《24题.docx》由会员分享,可在线阅读,更多相关《24题.docx(20页珍藏版)》请在冰豆网上搜索。
24题
《C程序设计》课程期末上机考试
考试时间:
50分钟
考试方式:
从下面的20题中随机抽取一题,再附加一题,共需完成2道题。
附加题不事先给定
分值分配:
第一题60分,第二题40分,共100分
考试时间:
2017.1具体时间与安排听任课老师通知
1.请编写函数longfun(longintx),功能是:
将长整型数x中每一位上为奇数的数依次取出,并逆序构成一个新数返回。
例如:
程序运行时输入123456789,输出:
b=97531。
#include
longfun(longintx)
{longs1=0,s2,m;
while(x!
=0)
{m=x%10;
if(m%2!
=0)
s1=(s1+m)*10;
x=x/10;
}
s2=s1/10;
return(s2);
}
intmain()
{longa,b;
printf("Pleaseinputalongintnum:
");
scanf("%ld",&a);
b=fun(a);
printf("b=%ld\n",b);
return0;
}
2.编写函数voidfun(char*s,char*t,char*p)将未在字符串s中出现、而在字符串t中出现的字符,形成一个新的字符串放在p中,p中字符按原字符串中字符顺序排列,但去掉重复字符。
例如:
当s为"12345",t为"8624677"时,p中的字符为:
"867";
当s为”goodluck”,t为”thankyouverymuch”时,输出:
”thanyverm”
#include
#include
voidfun(char*s,char*t,char*p)
{inti,j,k=0,log;
*p='\0';
for(i=0;*(t+i)!
='\0';i++)
{log=1;
for(j=0;*(s+j)!
='\0';j++)
if(*(t+i)==*(s+j))log=0;
for(j=0;*(p+j)!
='\0';j++)
if(*(t+i)==*(p+j))log=0;
if(log)
{*(p+k)=*(t+i);k++;*(p+k)='\0';}
}
}
intmain()
{chars1[50],s2[50],s3[50];
gets(s1);gets(s2);
fun(s1,s2,s3);
puts(s3);
return0;
}
3.编写函数intfun(intm),计算并返回满足表达式:
1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+……+n)<=m最大的n。
例如,当m=10000时,程序输出:
n=38。
#include
intfun(intm)
{ints=0,a,i;
for(i=0,a=0;s<=m;i++)
{a+=i;
s+=a;
}
return(i-2);
}
intmain()1
{intx;
scanf("%d",&x);
printf("n=%d\n",fun(x));
return0;
}
4.编写函数voidfun(int*x,intn),它的功能是:
删除有n个数据的数组x中所有包含数字6的数据,后续的剩余元素赋值为-1。
n为数组长度,规定x中数据都为正数。
如程序运行时若输入:
12214616234161166391126713816
删除后输出:
12211911381-1-1-1-1-1-1
#defineN10
#include
voidfun(int*x,intn)
{inti,j=0,k,t;
for(i=0;i { k=x[i]; while(k! =0) { t=k%10; if(t==6) break; else k=k/10; } if(k==0) x[j++]=x[i]; } for(;j x[j]=-1; return; } intmain() {inta[N],i; for(i=0;i scanf("%d",a+i); fun(a,N); for(i=0;i printf("%d",a[i]); printf("\n"); return0; } 5.编写函数longfun(inthigh,intn),功能是: 计算并返回high以内(不包含high)最大的n个素数之和。 若不足n个,则到最小素数2为止。 例如: 若high=100,n=10,则函数的返回值为: 732;若high=11,n=10,则函数返回: 17。 #include #include longfun(inthigh,intn) {inti,j,m,x=0,sum=0; for(i=high-1;i>=2;i--) {m=sqrt(i); for(j=2;j<=m;j++) if(i%j==0)break; if(j>m){sum+=i;x++;} if(x==n)break; } return(sum); } intmain() {intk,n; scanf("%d%d",&k,&n); printf("sum=%ld\n",fun(k,n)); return0; } 6.请编写函数intfun(int*a,intn),它的功能是: 把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回,以-1作为有效数据的结束标志。 例: 若输入: 123456789101112131415,输出: 2468101214n=7 #include intfun(int*a,intn) {inti,j=0; for(i=0;i if(*(a+i)%2==0) {a[j]=*(a+i); j++; } a[j]=-1; return(j); } intmain() {intx[15],i,n; for(i=0;i<15;i++) scanf("%d",x+i); n=fun(x,15); for(i=0;x[i]! =-1;i++) printf("%d",x[i]); printf("n=%d\n",n); return0; } 7.给定程序中,函数fun的功能是: 有M×N二维数组,分别将每一行的最大值与本行的最后一个数据(第N-1列数据)对调,其余数据保持不变。 然后按每一行的最大值对二维数据各行降序排序。 例如,有右侧数组数据: 11524342522求最大值并对调后: 11224342552 223346581647223346471658 8342542647004254264783 456789456789 4596171839245217183996 排序后最终输出: 45217183996 04254264783 223346471658 11224342552 456789 #defineN6 #defineM5 #include voidfun(inta[M][N]) {inti,j,t,m,max,k; for(i=0;i<5;i++) {max=a[i][0];m=0; for(j=1;j<6;j++) { if(max { max=a[i][j]; m=j; } } t=a[i][m]; a[i][m]=a[i][5]; a[i][5]=t; } for(k=0;k<4;k++) for(i=0;i<4-k;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 24