C语言程序设计部分习题及例题参考程序docx.docx
- 文档编号:27591667
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:42
- 大小:34.35KB
C语言程序设计部分习题及例题参考程序docx.docx
《C语言程序设计部分习题及例题参考程序docx.docx》由会员分享,可在线阅读,更多相关《C语言程序设计部分习题及例题参考程序docx.docx(42页珍藏版)》请在冰豆网上搜索。
C语言程序设计部分习题及例题参考程序docx
《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,%2.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=0.0,t=1.0;
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=0.0,t=1.0;
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=0.0;
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=0.0;
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];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 部分 习题 例题 参考 程序 docx