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

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

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

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

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

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

集团标准化办公室:

[VV986T-J682P28-JP266L8-68PNN]

 

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

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

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

[参考程序]

#include<>

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\n",y);

}

2.编程将从键盘输入的百分制成绩转换为等级分,转换方法如下:

90以上(大于或等于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.编程实现将从键盘输入的一个正整数逆序输出,如输入1234,输出3421

[参考程序]

#include<>

intmain()

{

intn;

printf("inputanumber:

");

scanf("%d",&n);

do

{

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

n/=10;

}while(n!

=0);

return0;

}

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

#defineN100

intmain()

{

intn,s=0,i;

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

{

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

",i);

scanf("%d",&n);

if(n<0)

continue;

s+=n;

}

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

return0;

}

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

【参考程序】

#include<>

#defineN1000

intmain()

{

intm,n,k,i;

floatscore;

m=n=k=0;

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

{

printf("请输入第%d个成绩:

",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\n",m,n,k);

return0;

}

12.运用如下公式计算圆周率的近似值,当最后一项的绝对值小于10-6时,停止计算。

【参考程序】

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

【参考程序】

#include<>

intmain()

{

doubles=,t=;

intsgn=1;

while(t<=100)

{

s+=sgn/t;

sgn=-sgn;

t+=1;

}

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

return0;

}

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

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

如当a为2,n为3时,该式子表示的含义为2+22+222,故结果为246。

【参考程序】

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

return0;

}

16.计算如下式子的值。

【参考程序】

#include<>

intmain()

{

intn;

floats=;

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

{

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

}

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

return0;

}

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

【参考程序】

#include<>

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分的硬币,请问有多少种换法,并输出每一种换法。

【参考程序】

#include<>

intmain()

{

intone,two,five,cnt=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);

cnt++;

}

}

printf("一共有%d种换法\n",cnt);

return0;

}

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

【参考程序】

#include<>

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到300之间一共有%d个素数\n",k);

return0;

}

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

如153

【参考程序】

#include<>

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;

}

22.输出200到300之间满足如下条件的数,即各位数字之和为12,数字之积为42.

【参考程序】

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

}

23.编程将一个正整数进行质因数分解,例如输入90,须在屏幕上打印出90=2*3*3*5

【参考程序】

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

#defineN5

intmain()

{

inta[N],i,cnt=0;

floataver;

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

",N);

aver=;

for(i=0;i

{

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

aver+=a[i];

}

for(i=0;i

{

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

cnt++;

}

printf("这%d个整数的和是%.0f,平均值是%.2f\n",N,aver,aver/10);

printf("不低于平均值的数有%d个\n",cnt);

return0;

}

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在数组中的%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("%5d",a[i]);

printf("\n");

return0;

}

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

【参考程序】

#include<>

#defineN10

intmain()

{

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]

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

else

break;

a[i+1]=n;

printf("插入后的数组:

\n");

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

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

printf("\n");

return0;

}

31.设有存放于一维数组中一组整数,且已按由小到大顺序排序,现从键盘输入一个整数,在数组中查找该数,如果数组中含有该数,则输出该数的出现位置,否则输出“**不存在”,**代表该数值。

【参考程序】

#include<>

#defineN10

intmain()

{

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在第%d个数位置被发现.\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

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

当前位置:首页 > 小学教育 > 英语

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

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