编程题试题库题目2019(答案)_第1页
编程题试题库题目2019(答案)_第2页
编程题试题库题目2019(答案)_第3页
编程题试题库题目2019(答案)_第4页
编程题试题库题目2019(答案)_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计题

一、对应教材的选择结构知识点(注意:黄色标注的是设计的

函数(也就是题目要求的内容,应该是一定要掌握的),黑色字

体的是程序运行的主函数,都是经过验证的,但还是可能会有错

误,欢迎纠正!!!)

1.设计一函数,判断某一年是否是闰年。如果给定的年份能被4整除但不能被100整除

或者年份能被400整除的是闰年,闰年的2月比平年的2月多一天。

ttinclude<stdio.h>

voidmain()

{

intsort(int);

intyear,leap;

printf(〃请输入一个年份:〃);

scanf(〃%d〃,&year);

leap=sort(year);

if(leap)

printf(〃这是闰年〃);

elseprintf(〃这不是闰年〃);

printf(〃\n〃);

}

intsort(intyear)

[-

intleap;

if(year%400==0||year%100!=0&&year%4==0)

leap=l;

elseleap=0;

returnleap;

)

2.设计一函数,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分

以上为'A';80~89分为'B';70~79分为'C';60~69分为'D';60

分以下为‘E'。

ftinclude<stdio.h>

voidmain()

(

intexchange(intscore);

intscore;

chargrade;

printf("请输入一个百分制成绩:”);

scanf(〃%d〃,&score);

grade=exchange(score);

printf(〃五分制成绩是:〃);

printf(〃猊\n〃,grade);

intexchange(intscore)

{

chargrade;

intn;

n=score/10;

switch(n)

■一

case10:

case9:grade='A';break;

case8:grade='B';break;

case7:grade=,C;break;

case6:grade='D';break;

default:grade='E';

returngrade;

}

3.设计一函数,对输入的字符串,统计其中字母个数,数字个数、空格个数及其它

符号个数。

^include<stdio.h>

intletter=0,number=0,space=0,others=0;

voidmain()

{

voidsum();

printf(〃请输入一个字符串:〃);

sum();

printf(,zletter=%d,number=%d,space=%d,others=%d\n,/,letter,number,space,other

s);

}

voidsum()

(

charc;

while((c=getchar())!='\n)

if(c<'z'&&c>'a5||c〈'Z'&&c>'A')

letter++;

elseif(c>'O'&&c〈'9')

number++;

elseif(c==,')

space++;

elseothers++;

4.设计一函数,实现对分段函数的计算。

[X2-1(Q0)

[2x3—x+l(x<0)

#include<stdio.h>

voidmain()

(

floatx,y;

floatfdhs(floatx);

printf("请输入x:”);

scanf(n%fn,&x);

y=fdhs(x);

printf("分段函数的结果是:");

printf(n%.2f\nn,y);

5.设计一函数,用于实现符号函数,函数形式如下。

1x>0

y=v0x=0

-1x<0

#include<stdio.h>

voidmain()

(

intx,y;

intfhhs(intx);

printf("请输入x:”);

scanf(n%dH,&x);

y=fhhs(x);

printf("符号函数的结果是:");

printf(n%d\nn,y);

elseif(x==O)

y=o;

elseif(x<0)

y=-i;

returny;

6.设计一函数,对输入的整数n判断其是奇数还是偶数,如果是奇数返回值1,偶数返回

值2。

#include<stdio.h>

voidmain()

{

intn,leap;

intjudge(intn);

printf(〃请输入一个整数:〃);

scanf(〃%d〃,&n);

leap=judge(n);

printf(〃%d\n〃,leap);

intjudge(intn)

(

intleap;

if(n%2==l)

leap=l;

elseleap=2;

returnleap;

7.设计一函数,函数功能是返回两个整数中大的值。

#include<stdio.h>

voidmain()

(

intx,y;

intmaxi;

intmax(intx,inty);

printf(〃请输入两个整数:〃);

scanf(zz%d%d,z,&x,&y);

maxi=max(x,y);

printf(〃两个整数的最大值是:%d\nz,,maxi);

}

intmax(intx,inty)

(

returnx>y?x:y;

8.设计一函数,函数的功能是判断形参字符是否为字母,如果是小写字母则转换为对应的

大写字母,如果大写字母则转换为对应的小写字母,其它字符不转换,函数不返回值。

#include<stdio.h>

voidmain()

{

charexchange();

intz;

z=exchange();

printf(〃转换后的字母是:%c\n〃,z);

charexchange()

|

intc;

c=getchar();

if(c<=,z'&&c>=,a:)

c=c-32;

elseif(c<='Z'&&c>二'A')

c=c+32;

elsec=0;

returnc;

)

二、对应教材的循环结构知识点

1.设计一函数,函数功能用于实现返回1到n(n是整数,形参)的和。

#include<stdio.h>

voidmain()

(

intn,total;

intsum(intn);

printf(〃请输入n:〃);

scanf(〃%d〃,&n);

total=sum(n);

printf(〃求和的结果是:%d\n〃,total);

intsum(intn)

|

inti,sum=0;

for(i=l;i<=n;i++)

sum=sum+i;

returnsum;

)

2.设计一函数,函数功能用于实现判断整数n(形参)是否为素数。

#include<stdio.h>

#include<math.h>

voidmain()

intn,leap;

intss(intn);

printf(〃请输入一个整数:〃);

scanf(〃%d〃,&n);

leap=ss(n);

if(leap)printf(〃这不是素数\n〃);

elseprintf(〃这是素数\n〃);

intss(intn)

匚,

inti,m,t;

m=sqrt(n);

for(i=2;i<=m;i++)

{if(n%i)t=0;break;}

if(i>m)t=l;

returnt;

)

3.设计一函数,函数功能用于返回整数m与n的最大公约数。(用while语句实现)

^include<stdio.h>

voidmain()

(

intm,n,max;

intgys(intm,intn);

printf(〃请输入两个整数:〃);

scanf(〃%d%d〃,&m,&n);

max=gys(m,n);

printf(〃最大公约数是:%d\n/,,max);

}

intgys(intm,intn)

(

intr,t;

if(m<n)

{t=m;m=n;n=t;}

while(r)

r=m%n;

m=n;

n=r;

returnm;

)

4.设计一函数,函数功能用于返回整数m与n的最大公约数。(用do语句实现)

^include<stdio.h>

voidmain()

|

intm,n,max;

intgys(intm,intn);

printf(〃请输入两个整数:〃);

scanf(〃%d%d〃,&m,&n);

max=gys(m,n);

printf(〃最大公约数是:%d\nz,,max);

intgys(intm,intn)

(

intr,t;

if(m<n)

{t=m;m=n;n=t;}

do

■_

r=m%n;

m=n;

n=r;

}while(r);

returnm;

)

5.设计一函数,函数功能用于返回整数m与n的最大公约数。(用递归语句实现)

^include<stdio.h>

voidmain()

{

intm,n,max,t;

intgys(intm,intn);

printf(〃请输入两个整数:〃);

scanf&m,&n);

if(m<n)

{t=m;m=n;n=t;}

max=gys(m,n);

printf(〃最大公约数是:%d\n,z,max);

g=gys(m,n);

T.

returng;

}

6.设计一函数,函数功能用于返回表达式s=l+l/(l*2)+1/(2*3)+1/(3*4)+..・+1/(n*(n+1))

前n项和的值。

#include<stdio.h>

voidmain()

(

doublesum;

intn;

doubletotal(intn);

printf(〃请输入一个整数:〃);

scanf(〃%d〃,&n);

sum=total(n);

printf(〃最大公约数是:%.2f\n,z,sum);

doubletotal(intn)

(

inti;

doubles=l;

for(i=l;i<n;i++)

s=s+l.0/(i*(i+l));

returns;

)

7.设计一函数,函数功能用于返回表达式s=l-l/3+l/5-l/7+...的前n项和。

#include<stdio.h>

voidmain()

(

doublesum;

intn;

doubletotal(intn);

printf(〃请输入一个整数:〃);

scanf(〃%d〃,&n);

sum=total(n);

printf(〃前n项和是:%.2f\n〃,sum);

doubletotal(intn)

(

inti;

doubles=l;

for(i=l;i<n;i++)

if(i%2!=0)

s=s-1.0/(2*i+l);

elses=s+l.0/(2*i+l);

returns;

)

8.设计一函数,函数功能实现求表达式s=l!+2!+..・+11!,返回5的值。

^include<stdio.h>

voidmain()

(

longsum;

intn;

longtotal(intn);

printf(〃请输入一个整数:〃);

scanf(〃%d〃,&n);

sum=total(n);

printf(,zs的值是:%d\n,z,sum);

longtotal(intn)

staticlongs=0,t=l;

inti,j;

for(i=l;i<=n;i++)

{

for(j=i;j>0;j—)

t=t*j;

s=s+t;

t=l;

■‘

returns;

)

9.设计一函数,函数功能实现统计可以用数字0至9组成多少个没有重复的三位偶数的个

数。

^include<stdio.h>

voidmain()

{

intc;

intnumber();

c=number();

printf(〃结果是:%d\n〃,c);

L

intnumber()

(

inti,count=0;

intj,k,t;

for(i=100;i<1000;i++)

if(i%2!=0)continue;

■else

j=i%10;

k=(i%100-j)/10;

t=(i-j-k*10)/100;

if(j!=k&&k!=t&&j!=t)

count++;

)

)

returncount;

三、对应教材数组知识点(注意:这里的n可能据考试情况而定,

因为数组必须有一个确定的长度,我在这里设为10)

1.设计一函数,函数功能实现返回一个包含n个元素的数组的最大值。

^include<stdio.h>

voidmain()

(

inta[10],i,maxi;

intmax(inta[],intn);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(,z%d,z,&a[i]);

maxi=max(a,10);

printf(〃输出的最大的数是:%d\nz/,maxi);

intmax(inta[],intn)

(

intmax,i;

max=a[0];

for(i=l;i<n;i++)

if(a[i]>max)

max=a[i];

returnmax;

}

2.设计一函数,函数功能实现返回一个包含n个元素的数组的最小值。

^include<stdio.h>

voidmain()

{

inta[10],i,mini;

intmin(inta[],intn);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(z/%d,z,&a[i]);

mini=min(a,10);

printf(〃输出的最大的数是:%d\nzz,mini);

intmin(inta[],intn)

]

intmin,i;

min=a[0];

for(i=l;i<n;i++)

if(a[i]<min)

min=a[i];

returnmin;

}

3.设计一函数,函数功能实现返回一个包含n个元素的数组的所有元素和。

#include<stdio.h>

voidmain()

{

inta[10],i,total;

intsum(inta[],intn);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(,z%d,z,&a[i]);

total二sum(a,10);

printf(〃所有的元素的和是:%d\nzz,total);

J’-.

intsum(inta[],intn)

I

intsum=0,i;

for(i=0;i<n;i++)

sum+=a[i];

returnsum;

}

4.设计一函数,函数功能实现返回一个包含n个元素的数组的所有元素的平均值。

#include<stdio.h>

voidmain()

(

inta[10],i;

floataverage;

floataver(inta[],intn);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(,z%dz,,&a[i]);

average=aver(a,10);

printf(〃所有的元素的平均值是:%.2f\n〃,average);

)

floataver(inta[],intn)

I

inti;

floatsum=0,aver;

for(i=0;i<n;i++)

sum+=a[i];

aver=sum/n;

returnaver;

}

5.设计一函数,函数功能实现对一个包含n个元素的数组按升序排序(选择排序)。

#include<stdio.h>

voidmain()

(

inti,a[10];

voidmin(inta[],intn);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(,z%d,z,&a[i]);

min(a,10);

printf(〃升序排序:〃);

for(i=0;i<10;i++)

printf(〃%d〃,a[i]);

printf(〃\n〃);

J.............」

voidmin(inta[],intn)

I

inti,j,k,t;

for(i=0;i<n-l;i++)

(

k=i;

for(j=i+l;j<n;j++)

if(a[k]>a[j])

k=j;

t=a[k];a[k]=a[i];a[i]=t;

}

)

6.一个包含n个元素的数组按升序排序(冒泡排序)。

#include<stdio.h>

voidmain()

inti,a[10];

voidmin(inta[],intn);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(,z%dz,,&a[i]);

min(a,10);

printf(〃升序排序:〃);

for(i=0;i<10;i++)

printf(,z%d〃,a[i]);

printf(〃\n〃);

},

voidmin(inta[],intn)

|

inti,j,t;

for(i=0;i<n-l;i++)

for(j=0;j<n-i-l;j++)

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

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

}

7.设计一函数,函数功能实现统计一个数值型数组中奇数的个数n,函数返回no

#include<stdio.h>

voidmain()

(

inti,a[10],total;

intcount(inta[]);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(z/%d,z,&a[i]);

total=count(a);

printf(〃奇数的个数是:%d\nz,,total);

}

intcount(inta[10])

|

inti,n=0;

for(i=0;i<10;i++)

if(a[i]%2==l)

n++;

returnn;

}

8.设计一函数,函数功能是求形参数组中偶数元素的和s,函数返回so

^include<stdio.h>

voidmain()

inti,a[10],total;

intcount(inta[]);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(z/%d,z,&a[i]);

total=count(a);

printf(〃偶数元素的和是:%d\n〃,total);

intcount(inta[10])

]

inti,s=0;

for(i=0;i<10;i++)

if(a[i]%2==0)

s+=a[i];

returns;

)

9.设计一函数,函数功能实现统计数组中小于0的元素个数n,函数返回值no

^include<stdio.h>

voidmain()

{

inti,a[10],total;

intcount(inta[]);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(〃%d〃,&a[i]);

total=count(a);

printf(〃小于零的个数是:%d\n〃,total);

}

intcount(inta[])

|

inti,n=0;

for(i=0;i<10;i++)

if(a[i]<0)

n++;

returnn;

}

10.设计一函数,函数功能实现将一个十进制数转换为对应的二进制数。

#include<stdio.h>

voidmain()

(

intm;

inta[100];

voidtran(intm,inta[]);

printf(〃请输入一个十进制数:〃);

scanf(〃%d〃,&m);

tran(m,a);

voidtran(intm,inta[])

(

inti,j=0;

for(i=0;m!=0;i++)

(

a[i]=m%2;

m=m/2;

j++;

■,

printf(〃转化为二进制数为:〃);

for(i=j-l;i>=0;i一)

printf(/z%d,z,a[i]);

printf(〃\n〃);

}

11.设计一函数,函数功能实现将一个十进制数转换为对应的八进制数。

#include<stdio.h>

voidmain()

{

intn,a[100];

voidbjz(intn,inta[]);

printf(〃请输入一个十进制数:〃);

scanf(〃%d〃,&n);

bjz(n,a);

voidbjz(intn,inta[])

(

inti;

for(i=0;n!=0;i++)

(

a[i]=n%8;

n=n/8;

ML

printf(〃转换为八进制为:〃);

for(i--;i>=0;i--)

printf(,z%dz,,a[i]);

printf(〃\n〃);

}

12.设计一函数,函数功能实现将一个十进制数转换为对应的十六进制数。

^include<stdio.h>

voidmain()

{

intn,a[100];

voidbjz(intn,inta[]);

printf(〃请输入一个十进制数:〃);

scanf(〃%d〃,&n);

bjz(n,a);

voidbjz(intn,inta[])

(

inti;

for(i=0;n!=0;i++)

a[i]=n%16;

n=n/16;

T

printf(〃转换为十六进制为:〃);

for(i一;i>=0;i一)

{

if(a[i]>=10)printf(,,%c/z,a[i]+87);

elseprintf(〃%d〃,a[i]);

printf(〃\n〃);

}

13.设计一函数,函数功能实现将形参数组中的元素按绝对值从小到大排序。

#include<stdio.h>

voidmain()

(

inti,a[10];

voidmin(inta[],intn);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(,z%d,z,&a[i]);

min(a,10);

printf(〃升序排序:〃);

for(i=0;i<10;i++)

printf(〃%d〃,a[i]);

printf(〃\n〃);

}

voidmin(inta[],intn)

I

inti,j,k,t,leap=0;

for(i=0;i<n-l;i++)

(

k=i;

for(j=i+l;j<n;j++)

if(a[k]<0){a[k]=-a[k];leap=l;}

if(a[j]<0){a[j]=-a[j];leap=2;}

if(a[k]>a[j])k=j;

if(leap==2)a[j]=-a[j];

I

if(leap==l)a[i]=-a[i];

if(k!=i)

{t=a[k];a[k]=a[i];a[i]=t;}

14.设计一函数,函数功能实现将形参数组中的元素的奇数位从小到大排序。

^include<stdio.h>

voidmain()

{

inti,a[10];

voidmin(inta[],intn);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(,z%d,z,&a[i]);

min(a,10);

printf(〃升序排序:〃);

for(i=l;i<10;i+=2)

printf(〃%d〃,a[i]);

printf(〃\n〃);

voidmin(inta[],intn)

|

inti,j,k,t;

for(i=l;i<n-l;i+=2)

(

k=i;

for(j=i+2;j<n;j+=2)

if(a[k]>a[j])

k=j;

if(k!=i){t=a[k];a[k]=a[i];a[i]=t;}

15.设计一函数,函数功能实现将形参数组中的元素的偶数位从大到小排序。

#include<stdio.h>

voidmain()

(

inti,a[10];

voidmin(inta[],intn);

printf(〃请输入十个数:〃);

for(i=0;i<10;i++)

scanf(,z%d,z,&a[i]);

min(a,10);

printf(〃降序排序:〃);

for(i=0;i<10;i+=2)

printf(〃%d〃,a[i]);

printf(〃\n〃);

voidmin(inta[],intn)

inti,j,k,t;

for(i=0;i<n-l;i+=2)

{

k=i;

for(j=i+2;j<n;j+=2)

if(a[k]<a[j])

k=j;

if(k!=i){t=a[k];a[k]=a[i];a[i]=t;}

}

)

16.设计一函数,函数功能查找整型形参数组中有无整数n,如果有函数返回值L没有

返回值0。

#include<stdio.h>

voidmain()

(

inta[10],i,leap,n;

intjudge(inta[],intn);

printf(〃请输入数组元素:〃);

for(i=0;i<10;i++)

scanf(,z%d,z,&a[i]);

printf(〃请输入整数n:〃);

scanf(〃%d〃,&n);

leap=judge(a,n);

if(leap==l)printf(“数组中有整数%d\n〃,n);

elseprintf(〃数组中无整数%d\n〃,n);

¥

intjudge(inta[],intn)

(

intleap,i;

for(i=0;i<10;i++)

if(a[i]==n)

break;

if(i==10)leap=0;

elseleap=l;

returnleap;

17.设计一函数,函数功能实现交换两个数的值。

^include<stdio.h>

voidmain()

(

inti,a[2];

voidexchange(inta[]);

printf(〃请输入两个整数:〃);

for(i=0;i<2;i++)

scanf(,z%d,z,&a[i]);

exchange(a);

printf(〃交换后的数是:〃);

for(i=0;i<2;i++)

printf(/z%dz/,a[i]);

printf(〃\n〃);

voidexchange(inta[])

I

intt;

t=a[0];

a[0]=a[l];

a[l]=t;

)

四、对应教材字符串知识点

1.设计一函数,函数功能实现判断一个字符串是否是回文,如果是回文返回值1,否则返

回值Oo

#include<stdio.h>

^include<string.h>

voidmain()

(

charstr[100];

intleap;

inthuiwen(charstr[]);

printf(〃请输入一个字符串:〃);

gets(str);

leap=huiwen(str);

if(leap)printf("这是回文\n〃);

elseprintf(〃这不是回文\n〃);

inthuiwen(charstr[])

intk,j,i,leap;

k=strlen(str);

for(i=0,j=k-l;i<k/2;i++,j—)

if(str[i]!=str[j])

break;

if(i==k/2)leap=l;

elseleap=O;

returnleap;

}

2.设计一函数,函数功能实现将给定的字符串逆序转换。

#include<stdio.h>

^include<string.h>

voidmain()

{

charstr[100];

voidchange(charstr[]);

printf(〃请输入一个字符串:〃);

gets(str);

change(str);

printf(〃逆序转换:〃);

puts(str);

]

voidchange(charstr[])

(

intk,j,i;

chart;

k=strlen(str);

for(i=0,j=k-l;i<k/2;i++,j—)

(

t=str[i];

str[i]=str[j];

str[j]=t;

)

)

3.设计一函数,函数功能实现将给定的字符串2连接字符串1的后面。

^include<stdio.h>

#include<string.h>

voidmain()

(

charstrl[100],str2[20];

voidchange(charstrl[],charstr2[]);

printf(〃请输入一个字符串:〃);

gets(strl);

printf(〃请输入一个字符串:〃);

gets(str2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论