编程题100套用Word格式.docx
- 文档编号:19078710
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:124
- 大小:68.81KB
编程题100套用Word格式.docx
《编程题100套用Word格式.docx》由会员分享,可在线阅读,更多相关《编程题100套用Word格式.docx(124页珍藏版)》请在冰豆网上搜索。
用一个双重循环解决来解题。
设二维数组共有M行N列元素,行列循环分别用变量i和j来表示,则对于数组元素a[i][j]只要能满足如下条件:
(i==0||j==0||i==M-1||j==N-1)则该元素就是数组的周边元素,问题就能解决了。
第26套………15第27套………16第28套………16
第7类、三角阵问题:
也是用一个双重循环解决来解题。
行列循环分别用变量i和j来表示,若有i<
=j则数组元素a[i][j]是数组右上半三角元素,若有i>
=j则数组元素a[i][j]是数组左下半三角元素。
第29套………26第30套………27第31套………28第32套………29
第8类、转置矩阵问题:
第33套………30第34套………31
第9类、二维数组转存为一维数组问题:
第35套………第36套………
第10类、杂题:
第37套统计各年龄段的人数…………………………………………………………………34
第38套若w是n(n≥2)位的整数,则函数求出w的后n-1位的数……………………………35
第39套将一个数字字符串转换为一个整数…………………………………………………36
第40套对变量h中的值保留两位小数,并对第三位进行四舍五入………………………37
第11类、移动数组中内容:
第41套………38第42套………39第43套………40第44套………40
第11类:
级数计算
第45套………41第46套………第47套………第48套………
第49套………第50套………第51套………第52套………
第53套………第54套………第55套………第56套………
第57套………
第12类:
字符串问题
第58套………第59套………52第60套………52第61套………53
第62套………54第63套………55第64套………56第65套………56
第66套………第67套………第68套………第69套………
第70套………第71套………第72套………第73套………
第74套………第75套………第76套………第77套………
第78套………第79套………第80套………第81套………
第82套………第83套………第84套………第85套………
第86套………第87套………第88套………第89套………
第90套………第91套………第92套………第93套………
第94套………第95套………第96套………第97套………
第21类、链表问题:
链表是令许多考生头痛的考题,但有捷径,这就是改造已提供的部分程序(outlist 函数),复制、改编即能得到正确的解答。
第98套………第99套………第100套………
二级C上机试题(100套)
第1套返回目录
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。
例如,当a=16,b=35,调用该函数后,c=5361。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
注意:
部分源程序给出如下。
#include<
stdio.h>
voidfun(inta,intb,long*c)
{
}
main()
{inta,b;
longc;
printf("
Inputa,b;
"
);
scanf("
%d%d"
&
a,&
b);
fun(a,b,&
c);
Theresultis:
%ld\n"
c);
参考解答:
*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;
【解析】语句*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;
是将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。
注意"
/"
和"
%"
的用法。
取出整数k的各位数字可按下法操作:
取个位数:
k/1%10取十位数:
k/10%10取百位数:
k/100%10取千位数:
k/1000%10取万位数:
k/10000%10。
注意事项是不要搞错数字的位置。
第1套和第2套的差别仅仅是数字的位置不同。
第2套返回目录
请编写函数fun(),该函数的功能是:
将两个两位数的正整数a,b合并形成一个整数放在c中。
将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45时,b=12,调用到该函数后,c=5142。
#include<
conio.h>
main()函数同第一题
参考解答
*c=a%10*1000+b/10*100+a/10*10+b%10;
【解析】同上题。
第3套返回目录
请编写一个函数fun(),它的功能是:
求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传给m的值为50,则程序输出:
711142122283335424449
#defineM100
voidfun(intm,int*a,int*n)
{intaa[M],n,k;
fun(50,aa,&
n);
for(k=0;
k<
n;
k++)
if((k+1)%20==0)/*每行输出20个数*/
{printf("
%4d"
aa[k]);
\n"
}
else
inti,j=0;
for(i=1;
i<
=m;
i++)/*在1到m(含m)范围内找符合条件的数i */
if(i%7==0||i%11==0)/*判断i能被7或11整除否 */
a[j++]=i;
/*符合条件的i被保存到数组a中,勿忘下标j必须增值1 */
*n=j;
/*满足条件的数的个数就是j,通过指针变量n返回 */
【解析】若整数i能被7整除,则i除以7的余数为0,即有i%7==0,由于题目要求i能被7或11整除,所以if条件语句中用了"
||"
运算符连接了i%7==0和i%11==0。
第4套返回目录
编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。
例如:
n为1000时,函数值应为s=96.979379。
math.h>
doublefun(intn)
{
s=%f\n"
fun(1000));
doubles=0.0;
inti;
i<
i++)/*规定范围是1~n-1(不含n)*/
if(i%5==0&
&
i%11==0)/*判断i能既能被5整除同时又能被11整除否*/
s=s+i;
/*并计算这些数的总和*/
s=sqrt(s);
/*对总和s求它的平方根*/
returns;
/*返回要求由函数值返回总和的平方根*/
【解析】能同时能被5与11整除的数必定被55整除,所以上面的判断条件可改为(i%55==0)
第5套返回目录
请编写函数fun(),它的功能是:
求出1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
voidfun(int*a,int*n)
main()
{intaa[1000],n,k;
fun(aa,&
if((k+1)%10==0)
{printf("
%5d"
printf("
\n"
=1000;
i++)/*规定范围是求1到1000之内 */
if((i%5==0||i%13==0)&
(i%65!
=0))/*能被5或13整除、但不能同时被5和13整除*/
/*符合条件的整数存入数组a中,勿忘下标增值*/
/*通过形参*n将满足条件的数的个数传送给n*/
【解析】能被5或13整除的判断条件是(i%5==0||i%13==0)但还要满足另一条件“不能同时被5和13整除”,也就是不能被65的整除,判断条件是:
(i%65!
=0),也可以简化为:
(i%65),再用&
连接这两个条件即可。
按运算优先级可知(i%5==0||i%13==0)两边必须要有圆括号。
第6套返回目录
求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
%5d"
inti,j=0;
i++)/*规定范围是1到1000之内 */
if((i%7==0||i%11==0)&
i%77!
=0)/*能被7或11整除、但不能同时被7和11整除 */
/*符合条件的数存入数组a中,勿忘下标增值*/
【解析】只要将第六题中的5和13分别改为7和11即可。
第七套返回目录
请编写函数voidfun(intx,intpp[],int*n),它的功能是:
求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。
voidfun(intx,intpp[],int*n)
main()
{intx,aa[1000],n,i;
\nPleaseenteranintegernumber:
\n"
);
scanf("
%d"
&
x);
fun(x,aa,&
n);
for(i=0;
n;
i++)
printf("
%d"
aa[i]);
=x;
i=i+2)/*i的初始值为1,步长为2,确保i为奇数*/
if(x%i==0)/*s查找能整除x的数*/
pp[j++]=i;
/*符合条件的数存入数组a中,勿忘下标增值*/
/*通过形参*n将满足条件的数的个数传送给n*/
【解析】本题的要求是:
能整除x且不是偶数的所有整数。
循环语句中i从1开始且每次增2,所以i始终是奇数。
也可以将循环语句改为:
i++)/*规定范围是1到x,由于步长变小了,判断次数多了*/
if(x%i==0&
i%2)/*判断条件也复杂了,这一程序的质量不如上面的解法*/
第八套返回目录
求出能整除x且不是奇数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为24,则有6个数符合要求,它们是2,4,6,8,12,24。
for(i=2;
i=i+2)/*i的初始值为2,步长为2,确保i为偶数*/
if(x%i==0)/*将能整除x的数存入数组pp中*/
/*传回满足条件的数的个数*/
【解析】本题是找偶数因子,上一题是找奇数因子,所以只要将i的初值改为2,其它语句与上题相同。
第九套返回目录
请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)的平方和(规定n的值不大于100)。
主函数从键盘给输入n的值为56,则输出为sum=1113。
longfun(intn)
{intn;
longsum;
Inputn:
scanf("
sum=fun(n);
sum=%ld\n"
sum);
inti;
longs=0;
for(i=2;
=n-1;
i++)/*从2~n-1中找n的所有因子*/
if(n%i==0)
s+=i*i;
/*计算所有因子的平方加*/
returns;
/*将因子的平方和通过函数值返回*/
【解析】本题的解题思路是用n逐个去除以2到n-1之间的所有数(循环变量i),如果n能被除尽,则把所得到的一个因子(就是i)的平方累加到s中去。
第十套返回目录
编写函数intfun(intlim,intaa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。
#defineMAX100
intfun(intlim,intaa[MAX])
{intlimit,i,sum;
intaa[MAX];
输入一个整数"
limit);
sum=fun(limit,aa);
for(i=0;
sum;
i++)
{
if(i%10==0&
i!
=0)/*每行输出10个数*/
aa[i]);
inti,j,k=0;
=lim;
i++)/*查找范围是1~lim*/
{for(j=2;
j<
=i;
j++)/*查找i的因子*/
if(i%j==0)break;
/*找到后就跳出循环*/
if(j==i)/*找到的因子是i本身i就是素数*/
aa[k++]=i;
/*保存找到的素数,勿忘下标增值*/
returnk;
/*下标k的值恰为求出的素数的个数*/
【解析】素数类型编程题一般分三步考虑:
1、由外循环变量来限制该素数的范围;
2、内循环是固定的一段程序,可以死背;
3、退出内循环后的一段程序是各道题变化最大的部分,通常的格式是:
if(j==i){i是素数应当执行的语句},或者if(j!
=i){i不是素数应当执行的语句}。
判断i是否为的内循环语句也可以改为:
for(j=2;
i;
j++),这样循环次数可以少一次。
第十一套返回目录
请编写函数fun(),其功能是:
将所有大于1小于整数m的素数存入xx所指数组中,素数的个数通过k传回。
例如,输入25,则应输出23571113171923。
voidfun(intm,int*k,intxx[])
{intm,n,zz[100];
\nPleaseenteranintegernumberbetween10and100:
"
fun(n,&
m,zz);
\n\nThereare%dprimenumberslessthan%d:
m,n);
for(n=0;
n<
m;
n++)
\n%4d"
zz[n]);
inti,j,n=0;
i++)/*查找范围是1~m-1*/
{for(j=2;
j++)
if(j==i)xx[n++]=i;
/*因子j==i,表明i是素数*/
*k=n;
/*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 100 套用