C语言练习题库及答案Word格式.docx

上传人:b****5 文档编号:19748565 上传时间:2023-01-09 格式:DOCX 页数:45 大小:42.45KB
下载 相关 举报
C语言练习题库及答案Word格式.docx_第1页
第1页 / 共45页
C语言练习题库及答案Word格式.docx_第2页
第2页 / 共45页
C语言练习题库及答案Word格式.docx_第3页
第3页 / 共45页
C语言练习题库及答案Word格式.docx_第4页
第4页 / 共45页
C语言练习题库及答案Word格式.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

C语言练习题库及答案Word格式.docx

《C语言练习题库及答案Word格式.docx》由会员分享,可在线阅读,更多相关《C语言练习题库及答案Word格式.docx(45页珍藏版)》请在冰豆网上搜索。

C语言练习题库及答案Word格式.docx

intx;

sort(a,10);

for(i=0;

10;

%d"

a[i]);

/*插入一种数后,依然按序输出*/

\n"

);

请输入要插入数字:

"

scanf("

%d"

&

x);

insert(x,a,11);

11;

/*逆序输出序输出*/

for(i=10;

i>

=0;

i--)

voidinsert(intx,inta[],intm)

voidsort(inta[],intm);

a[m-1]=x;

sort(a,m);

/*冒泡排序*/

voidsort(inta[],intm)//m表达数组个数

inti,j,t;

m;

for(j=0;

j<

m-i-1;

j++)

if(a[j]>

a[j+1])

t=a[j];

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

a[j+1]=t;

}

4.编写程序实现如下功能,可以将下面所示6*6二维矩阵读入并存储到二维数组中,并求其对角线之和,以及最大数,并输出最大数所在行列下标。

3516261924

3327212325

3192222720

82833171015

30534121416

43629131811

inti,j;

inta[6][6]={{35,1,6,26,19,24},

{3,32,7,21,23,25},

{31,9,2,22,27,20},

{8,28,33,17,10,15},

{30,5,34,12,14,16},

{4,36,29,13,18,11}

};

intmax=a[0][0];

intcol,row;

for(i=0;

6;

if(i==j||i+j==5)sum=sum+a[i][j];

if(a[i][j]>

=max)

max=a[i][j];

col=j;

row=i;

max=%d,row=%d,col=%d\n"

max,row,col);

5.对任意输入5个字符数组进行排序

例如:

输入

abcdeffdccccefg

得到

abccccdefefgfdc

6.求2个数组交集

{5,6,7,9,10}

{2,3,4,5,6}

{5,6}

inta[5]={5,6,7,9,10};

intb[5]={2,3,4,5,6};

5;

if(a[i]==b[j])printf("

7.求[m,n]之间既不能被7整除也不能被5整除整数之和,m和n值由键盘输入。

例如,如果m和n值分别为10和20,则计算成果为:

106。

intm,n;

inti,sum=0;

请输入m和n:

%d%d"

m,&

n);

for(i=m;

=n;

if(i%7!

=0&

&

i%5!

=0)sum=sum+i;

8.求字符串长度并输出。

例如,当字符串1为"

ThisIsacProgram"

则应输出:

Resultis:

19

charstr[100]="

;

inti=0;

//str下标

gets(str);

while(str[i]!

='

\0'

i++;

str[i]=str[i]+1;

字符串长度为:

i);

9.将字符串中所有大写字母转换为小写,其他字符不变(不使用转换函数)。

例如,当字符串为"

输出:

thisisacprogram"

inti=0;

请输入要转换字符串:

if(str[i]>

A'

&

str[i]<

Z'

)str[i]=str[i]+32;

%s"

str);

10.给学生评估成绩,若学生成绩在60-69则输出“及格”,70-89分为“良好”;

90-100分为“”先进,60分一下为“不及格”,分别用if-else语句和switch语句编程实现。

intscore;

请输入分数:

score);

if(score<

60)

不及格\n"

elseif(score<

70)

及格\n"

90)

良好\n"

else

先进\n"

intclass;

class=score/10;

switch(class)

case9:

break;

case8:

case7:

case6:

default:

11:

若有3个字符串s1.,s2,s3,其中,s1=“abcdef”,s2=“123456”,规定用字符数组实现将s1内容复制到s3中,并将s2内容添加在s3背面功能,最后输出字符串s3

chars1[100]="

abcdef"

chars2[100]="

123456"

chars3[200];

//表达s1下标

intj=0;

//表达s2下标

while(s1[i]!

=0)

s3[i]=s1[i];

while(s2[j]!

s3[i]=s2[j];

j++;

s3[i]='

s3);

12:

编写一种通用函数swap(),在main函数中调用可以实现2个数互换。

voidswap(int*p1,int*p2);

inta,b;

a,&

b);

a=%d,b=%d\n"

a,b);

swap(&

voidswap(int*p1,int*p2)

inttemp;

temp=*p1;

*p1=*p2;

*p2=temp;

13.设计程序输出如下杨辉三角形(正三角形),共6行:

inta[7][15]={0};

a[0][7]=1;

7;

for(j=1;

14;

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

15;

if(a[i][j]!

%2d"

a[i][j]);

"

14.设计程序求10000以上最小素数。

inti=10000;

while

(1)

if(sushu(i))break;

intsushu(intx)

for(i=2;

=x-1;

if(x%i==0)break;

if(i==x)

return1;

return0;

15.输出九九乘法表。

=9;

if(i>

=j)printf("

%2d*%2d=%2d"

i,j,i*j);

16.输入一种不超过五位正整数,输出其逆数。

例如输入12345,输出应为54321。

while(x!

x%10);

x=x/10;

17.结合书上打印菱形思想,打印出如下图形:

a

bcd

efghi

gklmnop

qrstu

vwx

y

inti,j,k;

intm=97;

for(i=1;

=4;

for(j=4-i;

j>

0;

j--)

for(k=1;

k<

=2*(i-1)+1;

k++)

%c"

m);

m++;

=4-1;

for(j=1;

=i;

for(k=2*(4-i-1)+1;

k>

k--)

18.试用C语言求解“百钱百鸡”问题。

百钱买百鸡,鸡翁一值钱三,鸡母一值钱二,鸡雏三值钱一,问鸡翁、鸡母、鸡雏各几何?

intx,y,z;

intpos=0;

for(x=1;

x<

=34;

x++)

for(y=1;

y<

=50;

y++)

for(z=1;

z<

=300;

z++)

if(3*x+2*y+z/3==100&

z%3==0)

pos=1;

if(pos==1)break;

¼

¦

Î

Ì

=%d¼

Ä

¸

³

û

=%d"

x,y,z);

19.斐氏数列是公元13世纪数学家斐波拉契创造。

即:

1,2,3,5,8,13,21,34,55,89,„„,输出其前15项。

20.编写一种函数deletechar(),使字符串中尾部*号不得多于n个;

若多于n个,则删除多余*号;

若少于或等于n个,则什么也不做,字符串中间和前面*号不删除。

例如,字符串内容为:

****A*BC*DEF*G*******,若n值为4,删除后,字符串中内容应当是:

****A*BC*DEF*G****;

若n值为7,则字符串中内容仍为****A*BC*DEF*G*******。

n值在主函数中输入。

voiddeletechar(charstr[],intn);

intn;

chars[1000];

请输入一种带*字符串:

s);

请输入背面保存*数量:

deletechar(s,n);

s);

voiddeletechar(charstr[],intn)

//表达*数量

intpos=0;

//最后与否有*

if(str[i]=='

*'

pos=0;

k=0;

while(pos!

k>

=n)

str[i]='

k--;

i--;

21.找出形参字符串中浮现频率最高字母(不区别大小写),并记录其浮现次数。

例如,形参s所指字符串为:

abcAbsmaxless,程序执行后输出结果为:

letter‘a‘:

3timesletter‘s‘:

3times。

charstr[100];

ints[26]={0};

str);

s[str[i]-65]++;

elseif(str[i]>

a'

z'

s[str[i]-97]++;

26;

if(s[i]>

0)printf("

%s中字母%c浮现频次是%d\n"

str,i+65,s[i]);

22.设计函数change(),将形参a所指数组中前半某些元素中值和后半部分元素中值互换。

形参n中存储数组中数据个数,若n为奇数,则中间元素不动。

若a所指数组中数据依次为:

1、2、3、4、5、6、7、8、9,则调换后为:

6、7、8、9、5、1、2、3、4。

voidchange(intx[],intm);

inta[10]={1,2,3,4,5,6,7,8,9,10};

intb[9]={1,2,3,4,5,6,7,8,9};

change(a,10);

for(i=0;

10;

%d,"

change(b,9);

9;

b[i]);

voidchange(intx[],intm)

inti,temp;

if(m%2==0)

m/2;

temp=x[i];

x[i]=x[m/2+i];

x[m/2+i]=temp;

temp=x[i];

x[i]=x[m/2+i+1];

x[m/2+i+1]=temp;

23.编写一种函数dtob(),在main函数中读入一种10进制数,dtob(),可以将该10进制数转换成一种二进制字符串,并返回给调用函数。

string.h>

voiddtop(intx,chars[]);

chars[100];

请输入十进制数:

dtop(x,s);

for(i=strlen(s)-1;

=0;

s[i]);

voiddtop(intx,chars[])

charm=0;

while(x/2!

if(x%2==0)

m='

0'

1'

s[i]=m;

x=x/2;

s[i]='

s[++i]='

24.

编一程序每月依照每月上网时间计算上网费用,计算办法如下:

#include<

inthour;

floatprice;

请输入本月上网小时数\n"

hour);

if(hour<

=10)

price=30;

elseif(hour<

50)

price=hour*3;

price=hour*2.5;

本月上网费用%f"

price);

规定当输入每月上网小时数,显示该月总上网费用

25.编写一种求直角三角形面积函数。

在main

函数中从键盘输入直角三角形两个直角边,然后调用该函数求该直角三角形面积(精准到小数点后2位)。

#include<

floatarea(floatx,floaty);

floata,b;

floats;

请输入直角三角形2条边长度\n"

%f%f"

s=area(a,b);

三角形面积是%.2f"

floatarea(floatx,floaty)

return0.5*x*y;

26.写一种函数,判断某一种四位数是不是玫瑰花数(所谓玫瑰花数即该四位数

各位数字四次方和正好等于该数自身,如:

1634=14+64+34+44)。

在主函数中从键盘任意输入一种四位数,调用该函数,判断该数与否为玫瑰花数,若是则输出“yes”,否则输出“no”.

请输入一种正四位整数\n"

if(rose(x)==1)

yes\n"

no"

introse(intx)

inta,b,c,d;

a=x/1000;

b=(x%1000)/100;

c=((x%1000)%100)/10;

d=x%10;

if(x==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)

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

当前位置:首页 > 自然科学 > 数学

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

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