C语言 试题 沈师.docx

上传人:b****8 文档编号:12982347 上传时间:2023-06-09 格式:DOCX 页数:31 大小:22.83KB
下载 相关 举报
C语言 试题 沈师.docx_第1页
第1页 / 共31页
C语言 试题 沈师.docx_第2页
第2页 / 共31页
C语言 试题 沈师.docx_第3页
第3页 / 共31页
C语言 试题 沈师.docx_第4页
第4页 / 共31页
C语言 试题 沈师.docx_第5页
第5页 / 共31页
C语言 试题 沈师.docx_第6页
第6页 / 共31页
C语言 试题 沈师.docx_第7页
第7页 / 共31页
C语言 试题 沈师.docx_第8页
第8页 / 共31页
C语言 试题 沈师.docx_第9页
第9页 / 共31页
C语言 试题 沈师.docx_第10页
第10页 / 共31页
C语言 试题 沈师.docx_第11页
第11页 / 共31页
C语言 试题 沈师.docx_第12页
第12页 / 共31页
C语言 试题 沈师.docx_第13页
第13页 / 共31页
C语言 试题 沈师.docx_第14页
第14页 / 共31页
C语言 试题 沈师.docx_第15页
第15页 / 共31页
C语言 试题 沈师.docx_第16页
第16页 / 共31页
C语言 试题 沈师.docx_第17页
第17页 / 共31页
C语言 试题 沈师.docx_第18页
第18页 / 共31页
C语言 试题 沈师.docx_第19页
第19页 / 共31页
C语言 试题 沈师.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言 试题 沈师.docx

《C语言 试题 沈师.docx》由会员分享,可在线阅读,更多相关《C语言 试题 沈师.docx(31页珍藏版)》请在冰点文库上搜索。

C语言 试题 沈师.docx

C语言试题沈师

1.写程序,判断某一年是否为闰年

#include

voidmain()

{

intyear,leap;

scanf("%d",&year);

if((year%4==0&&year%100!

=0)||(year%400==0))

leap=1;

else

leap=0;

if(leap)

printf("%dis",year);

else

printf("%disnot",year);

printf("aleapyear");

}

2.用switch语句对学生成绩分级,如果成绩不在(0~100)之间,则给出“成绩输入错误”的提示信息,成绩在“(90~100)”为“A”,(“80~89”)为“B”,(“70~79”)为“C”,(“60~69”)为“D”,(“0~59”)为“E”

#include

voidmain()

{

intscore;

scanf("%d",&score);

if(score<0||score>100)

printf("成绩输入错误!

\n");

else

{

printf("score=%d\n",score);

switch(score/10)

{

case10:

case9:

printf("grade=A\n");break;

case8:

printf("grade=B\n");break;

case7:

printf("grade=C\n");break;

case6:

printf("grade=D\n");break;

default:

printf("grade=E\n");

}

}

}

3.辗转相除法求两个正整数x,y的最大公约数

#include

voidmain()

{

intx,y,t;

scanf("%d%d",&x,&y);

if(x

{

t=x;x=y;y=t;

}

while(t=x%y)

{

x=y;

y=t;

}

printf("%d",y);

}

4.求P=1-1/2+1/3-1/4+1/5……-1/100

#include

voidmain()

{

intk,t=1;

floats=0;

for(k=1;k<=100;k++)

{

s=s+t*1.0/k;

t=-t;

}

printf("%f\n",s);

}

结果为0.688172

5.输出所有“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身如153

#include

voidmain()

{

inti,j,k,n;

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

{

i=n/100;

j=n/10%10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

printf("%d\n",n);

}

}

6.输出所有的“水仙花数”的个数,所谓“水仙花数”指一个三位数,其各位数字立方和等于该数本身,例如153

#include

voidmain()

{

inti,j,k,n,count=0;

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

{

i=n/100;

j=n/10%10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

count++;

}

printf("%d\n",count);

}

*7..从键盘上输入一个正整数n,编程计算n的每一位数字之和。

例如:

n=68345,则由68345分离出其万分位6,千分位8,百分位3,十分位4,个位5,然后计算6+8+3+4+5=26,并输出26

#include

voidmain()

{

ints=0,n;

scanf("%d",&n);

while(n)

{

s=s+n%10;

n/=10;

}

printf("%d\n",s);

}

8.显示100到1000之间数字之和等于5的数,并统计其个数

#include

voidmain()

{

intn,s,i,count=0;

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

{

s=0;

n=i;

while(n)

{

s=s+n%10;

n/=10;

}

if(s==5)

{

printf("%5d",i);

count++;

}

}

printf("%d\n",count);

}

*9.一个数如果恰好等于它的因子之和,这个数就称为“完数”,例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”,编程找出1000之内的所有完数。

#include

voidmain()

{

intm,i,s;

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

{

s=0;

for(i=1;i

if(m%i==0)

s=s+i;

if(s==m)

printf("%d\n",m);

}

}

结果为6

28

496

10编程打印九九表,输出如下

1*1=1

1*2=22*2=4

1*3=32*3=63*3=9

……………

1*9=9……….

#include

voidmain()

{

inti,j;

for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)

printf("%d*%d=%d\t",j,i,j*i);

printf("\n");

}

}

11.用数组求Fibonacci数列前20项(1,1,3,5,8,13….)

#include

voidmain()

{

inti;

intf[20]={1,1};

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

f[i]=f[i-2]+f[i-1];

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

{

if(i%5==0)

printf("\n");

printf("%12d",f[i]);

}

printf("\n");

}

输出结果:

11235

813213451

89144233377610

9871597258441816765

12.由键盘输入十个整数,将他们逆序存放并输出

#include

voidmain()

{

inta[10],i,t;

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

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

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

{

t=a[i];

a[i]=a[9-i];

a[9-i]=t;

}

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

printf("%5d",a[i]);

}

13.输入十名学生成绩,将最高分和最低分位置互换.

#include

voidmain()

{

inta[10],i,t,maxi=0,mini=0;

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

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

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

{

if(a[i]>a[maxi])maxi=i;

if(a[i]

}

t=a[maxi];

a[maxi]=a[mini];

a[mini]=t;

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

printf("%d\n",a[i]);

}

*14.已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。

#include

voidmain()

{

inta[11]={1,3,5,7,9,11,13,15,17,19};

intkey,i;

scanf("%d",&key);

for(i=9;i>=0&&a[i]>key;i--)

a[i+1]=a[i];

a[i+1]=key;

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

printf("%5d",a[i]);

printf("\n");

}

15.有15个互不相等的数按照由小到大的顺序存放在一个数组中,输入一个数要求用折半查找法找出该数是第几个元素的值,如果该数不在数组中则打印“无此数!

#include

voidmain()

{

inta[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

intleft=0,right=14,t,mid;

scanf("%d",&t);

while(right>=left)

{

mid=(right+left)/2;

if(a[mid]==t)

break;

else

if(a[mid]>t)

right=mid-1;

else

left=mid+1;

}

if(a[mid]==t)

printf("%d\n",mid);

else

printf("无此数");

}

16输入十个整数存入数组中,输出其中奇数及奇数之和。

#include

voidmain()

{

inta[10],s=0,i;

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

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

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

{

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

{

printf("%3d\n",a[i]);

s+=a[i];

}

}

printf("%d\n",s);

}

17.用冒泡法对十个整数进行升序排序

#include

voidmain()

{

inta[10],i,j,t;

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

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

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

for(j=0;j<9-i;j++)

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

{

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

}

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

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

printf("\n");

}

18.输入一行字符,统计其中大写字母,小写字母和数字的个数

#include

voidmain()

{

intn1=0,n2=0,n3=0,i=0;

chars[100];

scanf("%s",s);

while(s[i])

{

if(s[i]>='a'&&s[i]<'z')n1++;

if(s[i]>='A'&&s[i]<='Z')n2++;

if(s[i]>='0'&&s[i]<='9')n3++;

i++;

}

printf("%d%d%d",n1,n2,n3);

}

*19.由键盘输入一串字符,求这串字符中字符‘0’~‘9’各自出现的个数

#include

voidmain()

{

inti=0,p[10]={0};

chars[100];

gets(s);

for(i=0;s[i];i++)

if(s[i]>='0'&&s[i]<='9')

p[s[i]-48]++;

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

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

}

20.编一程序,将两个字符串连接起来,结果取代第一个字符串

#include

voidmain()

{

chars1[80],s2[40];

inti=0,j=0;

scanf("%s%s",s1,s2);

while(s1[i])

i++;

while(s2[j])

s1[i++]=s2[j++];

s1[i]='\0';

printf("%s\n",s1);

}

21.输出杨辉三角形前十行。

#include

#defineN11

voidmain()

{

inti,j,a[N][N];

for(i=1;i

{

a[i][i]=1;a[i][1]=1;

}

for(i=3;i

for(j=2;j<=i-1;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=1;i

{

for(j=1;j<=i;j++)

printf("%6d",a[i][j]);

printf("\n");

}

}

.

22求4*4矩阵中的四周元素之和

#include

voidmain()

{

intsum=0,i,j;

inta[4][4]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};

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

for(j=0;j<=3;j++)

if(i==0||j==0||i==3||j==3)

sum=sum+a[i][j];

printf("%d\n",sum);

}

*23有一个4*4的矩阵,找出其中最大的元素和最小的元素,并将它们互换。

#include

voidmain()

{

inti,j,max,min,m1,m2,n1,n2;

inta[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

max=min=a[0][0];

m1=m2=n1=n2=0;

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

for(j=0;j<=3;j++)

{

if(a[i][j]>max)

{

max=a[i][j];m1=i;m2=j;

}

if(a[i][j]

{

min=a[i][j];n1=i;n2=j;

}

}

a[m1][m2]=min;

a[n1][n2]=max;

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

{

for(j=0;j<=3;j++)

printf("%4d",a[i][j]);

printf("\n");

}

}

24.23.给出年,月,日,计算该日是该年的第几天

#include

intsum_day(intyear,intmonth,intday);

voidmain()

{

inty,m,d;

scanf("%d%d%d",&y,&m,&d);

printf("%d\n",sum_day(y,m,d));

}

intsum_day(intyear,intmonth,intday)

{

inta[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

inti,days=0;

for(i=0;i

days+=a[i];

days+=day;

if(month>=3)

{

if((year%4==0&&year%100!

=0)||(year%400==0))

days+=1;

}

returndays;

}

25.有一个一维数组score,内放10个学生成绩,函数实现求平均成绩

#include

floataverage(floata[10]);

voidmain()

{

floats[10],ave;

inti;

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

scanf("%f",&s[i]);

ave=average(s);

printf("%5.2f\n",ave);

}

floataverage(floata[10])

{

inti;

floatave,s=0;

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

s=s+a[i];

ave=s/10;

returnave;

}

26..编写函数实现选择法对10个整数进行升序排列,在主函数中验证函数有效性

#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;

}

}

voidmain()

{

inti,a[10];

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

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

sort(a,10);

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

printf("%5d",a[i]);

printf("\n");

}

*27.编写函数判断是否为素数,在主函数中利用该函数输出400到500之间的所有素数

#include

#include

intf(intm)

{

inti,q,t=0;

q=(int)sqrt(m);

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

if(m%i==0)

break;

if(i>=q+1)

t=1;

returnt;

}

voidmain()

{

inti,t=0;

for(i=400;i<=500;i++)

{

t=f(i);

if(t==1)

printf("%5d",i);

}

}

28.用递归方法求斐波那契数列的第n项

#include

intfib(intn)

{

if(n==1||n==2)

return1;

returnfib(n-1)+fib(n-2);

}

voidmain()

{

intk;

scanf("%d",&k);

printf("fib(%d)=%d\n",k,fib(k));

}

*29用递归方法求f(n)=

n的值由主函数输入(=1*1+2*2+…..+n*n)

#include

intf(intn)

{

if(n==1)

return1;

else

returnn*n+f(n-1);

}

voidmain()

{

intn,s;

scanf("%d",&n);

s=f(n);

printf("%d\n",s);

}

30.编写一个递归函数ged,该函数返回x和y的最大公约数

#include

intged(int,int);

voidmain()

{

intx,y;

scanf("%d%d",&x,&y);

printf("%d\n",ged(x,y));

}

intged(inta,intb)

{

if(b==0)

returna;

returnged(b,a%b);

}

 

31.用递归函数编程求解问题,若一头小母牛,从出生前第四个年头开始每年生一头母牛,按此规律,第几年时有多少头母牛

#include

intcownum(intn);

voidmain()

{

intsum,n;

scanf("%d",&n);

sum=cownum(n);

printf("%d\n",sum);

}

intcownum(intn)

{

if(n<4)

return1;

else

returncownum(n-1)+cownum(n-3);

}

32.用函数和指针实现将一个数组中元素逆序存放并输出

#include

#defineN10

voidinvert(int*a,intn);

voidmain()

{

inta[10],i;

for(i=0;i

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

invert(a,N);

printf("Theinvertedarray:

\n");

for(i=0;i

printf("%4d",a[i]);

}

voidinvert(int*a,intn)

{

int*p,*q,t;

p=a;

q=a+n-1;

for(;p

{t=*p;*p=*q;*q=t;}

}

 

*33.请编写函数voidfun(intx,int*pp,int*n),它的功能是:

求出x的偶数因子,并按从小到大的顺序放在pp所指的数组中,这些因子的个数通过形参n返回(假设pp指向足够大的空间)如,若x中的值为24,则有6个数符合要求,他们是2,4,6,8,12,24

#include

voidfun(intx,intpp[],int*n)

{

inti,j=0;

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

if(x%i==0)

pp[j++]=i;

*n=j;

}

voidmain()

{

intx,aa[1000],n,i;

scanf("%d",&x);

fun(x,aa,&n);

for(i=0;i

printf("%5d",aa[i]);

printf("\n");

}

 

34..八进制转换为十进制

#include

voidmain()

{

char*p,s[6];

intn=0;

p=s;

gets(p);

while(*(p)!

='\0')

{

n=n*8+*p-'0';

p++;

}

printf("%d",n);

}

35.写一个函数,实现两个字符串的比较,自己写一个stremp函数,stremp(s1,s2)

如果s1=s2,返回值为0;如果s1!

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

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2