语言程序设计部分习题及例题参考程序.docx

上传人:b****5 文档编号:6356189 上传时间:2023-01-05 格式:DOCX 页数:30 大小:30.93KB
下载 相关 举报
语言程序设计部分习题及例题参考程序.docx_第1页
第1页 / 共30页
语言程序设计部分习题及例题参考程序.docx_第2页
第2页 / 共30页
语言程序设计部分习题及例题参考程序.docx_第3页
第3页 / 共30页
语言程序设计部分习题及例题参考程序.docx_第4页
第4页 / 共30页
语言程序设计部分习题及例题参考程序.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

语言程序设计部分习题及例题参考程序.docx

《语言程序设计部分习题及例题参考程序.docx》由会员分享,可在线阅读,更多相关《语言程序设计部分习题及例题参考程序.docx(30页珍藏版)》请在冰豆网上搜索。

语言程序设计部分习题及例题参考程序.docx

语言程序设计部分习题及例题参考程序

《C语言程序设计》部分例题及课后习题参考程序

1.编程计算如下分段函数:

X>10

/=

4It

0e

.5k-6

x<0

[参考程序]

#inelude<>intmain()

{

floatx,y;

printf("inputx:

");scanf("%f",&x);if(x>=10)

y=2*x+3;

elseif(x>=0)

y=4*x;

else

y=5*x-6;

printf("y=%.2f\rTy);

}

2.

90,下同)为A,80分以上为B,70分以上为C,60分以上为D,60分以下,即低于60分

为E。

[参考程序]

#include<>

intmain()

{

floatscore;

charrank;

printf("inputascore:

");

scanf("%f",&score);

if(score>100||score<0)

{

printf("invalidscoreinput'n”);

exit(-1);

}

switch((int)score/10)

{

case10:

case9:

rank='A';break;

case8:

rank='B';break;

case7:

rank=C;break;

case6:

rank='D';break;

default:

rank='E';

}printf("%.2f:

%c\n",score,rank);

return0;

}

3.编程判断以从键盘输入的三个数为边长,是否能构成三角形。

[参考程序]

#include<>

intmain()

{

floata,b,c;printf("inputa,b,c:

");scanf("%f%f%f",&a,&b,&c);if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a)printf("(%.2f,%.2f,%.2f)能围成三角形\n",a,b,c);

else

printf("(%.2f,%,%.2f)

不能围成三角形\n",a,b,c);

}

4.编程实现将从键盘输入的一个正整数逆序输出,如输入

[参考程序]

#include<>

intmain()

{

1234,输出3421

intn;

printf("inputanumber:

");scanf("%d",&n);

do

{

}return0;

printf("%d",n%10);n/=10;while(n!

=0);

}

5.输入一个1~10范围内的整数,计算该数的阶乘。

[参考程序]

#include<>

intmain()

{

intn,s=1,i;

printf("inputanumber(1~10):

");scanf("%d",&n);

 

for(i=2;i<=n;i++)s*=i;

printf("%d!

=%d\n",n,s);

return0;

}

6.从键盘输入的一行字符,统计其含有多少个字符。

【参考程序】

#include<>

intmain()

{

charch;

intcnt=0;

printf("inputacharline:

");

ch=getchar();

while(ch!

='\n')

{

cnt++;ch=getchar();

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

return0;

}

7.打印乘法口诀表。

【参考程序】#include<>intmain(){

inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%d*%d=%-3d",j,i,i*j);printf("\n");

}

return0;

}

8.在屏幕上打印如下规律的图形,具体行数由键盘输入。

***

*****

*******

【参考程序】

#include<>intmain()

{

inti,j,n;

printf("请输入打印图形的行数:

");scanf("%d",&n);

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

{

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

printf("");

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

printf("*");

printf("\n");

}

return0;

}

9.从键盘输入一个正整数,编程判断其是否为素数(质数)【参考程序】

#include<>

intmain()

{

inti,n;

printf("请输入一个正整数:

");scanf("%d",&n);

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

{

if(n%i==0)

break;

}if(i*i<=n||n==1)printf("%d不是一个素数.\n",n);else

printf("%d是一个素数.\n",n);return0;

}

10.从键盘输入100个整数,求其中正整数的和。

【参考程序】

#include<>

#defineN100intmain()

{

intn,s=0,i;

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

{

printf("请输入第%€个整数:

",i);

scanf("%d",&n);

if(*O)

continue;

s+=n;

}

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

}

80分以上(即大于或等

11.从键盘输入1000个学生某门课程的百分制成绩,分别统计其中于80)、60分以上及低于60分的人数。

【参考程序】

#include<>

#defineN1000

intmain()

{

intm,n,k,i;

floatscore;

m=n=k=0;

for(i=1;i<=N;i++){printf("请输入第%€个成绩:

",i);

scanf("%f",&score);

if(score>100||score<0){

请重新输入

printf("输入的成绩不符合百分制成绩要求,本成绩输入作废

第%d(成绩:

",i);

i--;

continue;

}if(score>=80)m++;

elseif(score>=60)

n++;

else

k++;

}

printf("%d:

%d:

%d\rT’m,n,k);

return0;

10-6时,停止计算。

}

12.运用如下公式计算圆周率的近似值,当最后一项的绝对值小于

【参考程序】

#include<>intmain()

{

doublepi=,t=;

intsgn=1;

while(t<1000000)

{

pi+=sgn/t;

sgn=-sgn;

t+=2;

}

printf("Pi=%.6lf\n",4*pi);

return0;

}

13.古代某工地需要搬运砖块,已知男人每人每次搬3块,女人每人每次搬2块,小孩两人每次抬一块,现有45人一次正好搬完全部砖块,请问男人、女人、小孩各几人

【参考程序】

#include<>

intmain()

{

intw,m,c;

for(m=0;m<=15;m++)

for(w=0;w<=22;w++)

{

c=45-m-w;

if(m*3+w*2+c*.5==45)

printf("%d:

%d:

%d\n",m,w,c);

}return0;

}

14.从键盘输入两个正整数到m、n中,求它们的最大公约数和最小公倍数。

【参考程序】

#include<>

intmain()

{

intm,n,m1,n1,r;

printf("请输入两个正整数:

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

m1=m;

n1=n;

r=m%n;while(r!

=0)

{

m=n;

n=r;r=m%n;

}

printf("gcd(%d,%d)=%d\n",m1,n1,n);

printf("lcm(%d,%d)=%d\n",m1,n1,m1*n1/n);return0;

}

14.编程计算如下式子的值,直到

n等于100。

234I丿

【参考程序】

#include<>

^=-+Ifrq

irii

intmain()

{

doubles=,t=;intsgn=1;while(t<=100)

{

s+=sgn/t;

sgn=-sgn;t+=1;

}

printf("s=%.6lf\rT’s);

return0;

}

15.计算如下规律式子的值。

其中

该式子表示的含义为2+22+222,故结果为246。

a*a甘卜aaa*+•日(n个a)

【参考程序】

#include<>

intmain()

{

inta,n,s=0,t;

printf("inputa,n:

”);

scanf("%d%d",&a,&n);

t=a;

while(n>0)

{

s+=t;

t=t*10+a;

n--;

}

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

a与n的值都是由键盘输入确定。

如当a为2,n为3时,

 

return0;

}

16.计算如下式子的值。

357101

1+—1-—+—+■■■+—

246100

【参考程序】#inelude<>intmain()

{

intn;

floats=;

for(n=2;*=100;n+=2)

{

s+=(float)(n+1)/n;

}

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

return0;

}

17.如数列第1项为2,此后各项的值均为其前一项的2倍再加3,编程计算该数列的前10

项之和。

【参考程序】

#inelude<>intmain()

{

intn,s=0,i;

n=2;

for(i=1;i<=3;i++){

s+=n;

n=n*2+3;

}

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

return0;

}

18.现要求将1角钱换成1分、2分或5分的硬币,请问有多少种换法,并输出每一种换法。

【参考程序】

#inelude<>intmain()

{

intone,two,five,ent=0;

for(five=0;five<=2;five++)for(two=0;two<=5;two++){

one=10-five*5-two*2;

if(one>=0)

{

printf("%d:

%d:

%d\n",one,two,five);ent++;

}

}

一共有%d种换法\n”,ent);

printf("return0;

}

20.编程统计并输出200至300以内的全部素数。

【参考程序】

#inelude<>

intmain()

{

intm,i,k=0;for(m=201;m<300;m+=2){

for(i=3;i*i<=m;i+=2)if(m%i==0)break;

if(i*i>m)

{

k++;

printf("%8d",m);

if(k%5==0)

printf("\n");

}

printf("\n200至U300之间一共有%d个素数'n",k);

return0;

}

21.打印所有“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数自身。

如153

【参考程序】

#inelude<>

intmain()

{

intm,n,k;

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

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

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

if(m*m*m+n*n*n+k*k*k==m*100+n*10+k)

printf("%5d",m*100+n*10+k);

printf("\n");

return0;

}

12,数字之积为42.

22.输出200到300之间满足如下条件的数,即各位数字之和为【参考程序】

#include<>

intmain()

{

intm,n;

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

for(n=0;n<=9;n++)if(m+n==10&&m*n==21)printf("%5d",200+m*10+n);printf("\n");

return0;

}

90,须在屏幕上打印出90=2*3*3*5

23.编程将一个正整数进行质因数分解,例如输入【参考程序】

#include<>

intmain()

{

intm,n;scanf("%d",&m);printf("%d=",m);

n=2;

while(m!

=1)

{while(m%n==0){

printf("%d",n);if(m!

=n)printf("*");

m/=n;

}

n++;

}

printf("\n");

return0;

}

24.输入一行字符,分别统计其中英文字母、空格、数字及其他字符的个数。

【参考程序】

#include<>intmain()

charch;

intletter,space,digit,other;letter=space=digit=other=0;printf("inputacharline:

");ch=getchar();while(ch!

='\n')

{

if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')letter++;

elseif(ch>='0'&&ch<='9')

digit++;

elseif(ch=='')

space++;

else

other++;

ch=getchar();

}printf("%d:

%d:

%d:

%d\n",letter,digit,space,other);return0;

}

25.编程输出1000以内的全部完数。

所谓完数,是指该数恰好等于他的全部真因子的和。

6=1+2+3

【参考程序】

#include<>

intmain()

{

intm,i,t;

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

{

t=1;

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

if(m%i==0)

{

t+=i;

if(i*i!

=m)t+=m/i;

}

if(t==m)

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

}return0;

26.从键盘输入10个整数,求这些整数的总和及平均值,并统计不低于平均值的元素个数。

【参考程序】

#include<>#defineN5intmain()

{

inta[N],i,cnt=0;

floataver;

printf(”请输入%4个整数:

”,N);

aver=;

for(i=0;i

{

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

}

for(i=0;i

{

}

printf("printf("return0;

if(a[i]>=aver/N)cnt++;

这%4个整数的和是%.0f,平均值是%.2f\n",N,aver,aver/10);不低于平均值的数有%d(\n",cnt);

}

27.设有存放于数组中一组整数,现从键盘输入一个整数,在数组中查找该数,如果数组中含有该数,则输出其全部出现位置,否则输出“**不存在”,**代表该数值。

【参考程序】

#include<>

#defineN10

intmain()

{

inta[N]={16,35,48,29,56,43,93,64,90,48};

intn,sgn,i;

printf("请输入待查找的整数:

");

scanf("%d",&n);

sgn=0;

for(i=0;i

{

if(a[i]==n)

{

sgn=1;

printf("%d在数组中的%€位置出现.\n",n,i+1);

}

if(sgn==0)

printf("%d不存在\n",n);

return0;

}

28.设有一存在有10个随机数的数组,请编程找出其中的最大数及其在数组中的位置。

【参考程序】

#include<>

#include<>

#include<>

#defineN10

intmain()

{

inta[N],i,k;

srand(time(NULL));for(i=0;i

{

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

}

k=0;

for(i=1;i

{

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

{

k=i;

}

}

printf("\n最大值是%d它是数组的第%d个数\n”,a[k],k+1);

return0;

}

29.现有一未排序的整型数组,要求用选择法将该数组按由大到小的顺序排序。

【参考程序】

#include<>#defineN10

intmain(){

inta[N],i,k,j,t;

printf(”请输入%d个整数:

",N);

for(i=0;i

{

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

}for(j=0;j

{

k=j;

for(i=j+1;i

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

k=i;

t=a[j];a[j]=a[k];a[k]=t;

}

printf("排序后的数组:

\n");

for(i=0;i

printf("\n");

return0;

}

30.现有一数组,其元素已按由大到小的顺序排列,现从键盘输入一个数,插入到该数组中,要求插入后的数组元素依然由大到小排列。

【参考程序】

#include<>#defineN10intmain()

{

inta[N+1]={98,96,87,78,72,64,56,51,43,36};

intn,i;

printf("插入前的数组:

\n");

for(i=0;i

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

printf("\n");

printf("请输入待插入的整数:

");

scanf("%d",&n);

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

if(a[i]

else

break;

a[i+1]=n;

printf("插入后的数组:

\n");

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

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

printf("\n");

}

31.在数组中查找该数,**代表该数值。

【参考程序】#include<>

return0;

设有存放于一维数组中一组整数,且已按由小到大顺序排序,现从键盘输入一个整数,

如果数组中含有该数,则输出该数的出现位置,否则输出“**不存在”#defineN10intmain()

{

inta[N]={93,90,64,56,50,48,43,35,29,16};

intn,sgn,top,bott,mid;

printf("请输入待查找的整数:

");scanf("%d",&n);

sgn=0;

top=0;

bott=N-1;

while(top<=bott)

{

mid=(top+bott)/2;

if(a[mid]==n)

{

sgn=1;break;

}

elseif(a[mid]>n)top=mid+1;

else

bott=mid-1;

}

if(sgn==0)

printf("%d不存在\n",n);

else

printf("%d在第%4个数位置被发现.\n",n,mid+1);

return0;

}

32.按如下格式打印杨辉三角形,具体行数由键盘输入。

1

11

121

1331

14641

15101051【参考程序】

#include<>

#defineN20

intmain()

{

intyang[N][N],n,i,j;

printf("请输入要打印的的行数:

");

scanf("%d",&n);

for(i=0;i

yang[i][0]=yang[i][i]=1;

for(i=2;i

for(j=1;j

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

for(i=0;i

{

for(j=0;j

printf("%3c",'');

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

printf("%6d",yang[i][j]);printf("\n");

}

return0;

}

33.编程实现从一字符串中删除指定的字符。

【参考程序】

#include<>

#defineN80

intmain()

{

charstr[N],ch,i,j=0;

printf("请输入一个字符串:

");gets(str);

printf("请输入待删除的字符:

");ch=getchar();

for(i=0;str[i]!

='\0';i++)if(str[i]!

=ch)str[j++]=str[i];

str[j]='\0';

printf("删除指定字符后的字符串:

%s\n",str);return0;

}

34.现有若干字符串存放于一个二维数组中,每行存放一个字符串,现要求用冒泡法将这些字符串按由小到大排序,即按字符母顺排序。

【参考程序】

#include<>

#include<>

#defineN80

#defineM6intmain()

{

charstr[M][N],temp[N],i,j;

printf(”请输入%d个字符串:

”,M);

for(i=0;i

gets(str[i]);

for(i=0;i

for(j=0;j

if(stremp(str[j],str[j+1])>0)

{

strepy(temp,str[j]);

stre

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

当前位置:首页 > 工程科技 > 机械仪表

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

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