语言程序设计部分习题及例题参考程序Word文件下载.docx
《语言程序设计部分习题及例题参考程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《语言程序设计部分习题及例题参考程序Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
![语言程序设计部分习题及例题参考程序Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/5/c26eee78-8dc9-49d5-ba66-730e3f33f778/c26eee78-8dc9-49d5-ba66-730e3f33f7781.gif)
switch((int)score/10)
case10:
case9:
rank='
A'
;
break;
case8:
B'
case7:
rank=C;
case6:
rank='
D'
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>
c>
a+b>
c&
a+c>
b&
b+c>
a)printf("
(%.2f,%.2f,%.2f)能围成三角形\n"
a,b,c);
printf("
(%.2f,%,%.2f)
不能围成三角形\n"
4.编程实现将从键盘输入的一个正整数逆序输出,如输入
[参考程序]
1234,输出3421
intn;
inputanumber:
%d"
n);
do
}return0;
n%10);
n/=10;
while(n!
=0);
5.输入一个1~10范围内的整数,计算该数的阶乘。
intn,s=1,i;
inputanumber(1~10):
for(i=2;
i<
=n;
i++)s*=i;
%d!
=%d\n"
n,s);
6.从键盘输入的一行字符,统计其含有多少个字符。
【参考程序】
charch;
intcnt=0;
inputacharline:
ch=getchar();
while(ch!
='
\n'
)
cnt++;
ch=getchar();
%d\n"
cnt);
7.打印乘法口诀表。
【参考程序】#include<
intmain(){
inti,j;
for(i=1;
=9;
i++){for(j=1;
j<
=i;
j++)printf("
%d*%d=%-3d"
j,i,i*j);
\n"
8.在屏幕上打印如下规律的图形,具体行数由键盘输入。
***
*****
*******
【参考程序】
intmain()
inti,j,n;
请输入打印图形的行数:
"
for(i=1;
i++)
for(j=1;
=n-i;
j++)
=2*i-1;
*"
9.从键盘输入一个正整数,编程判断其是否为素数(质数)【参考程序】
inti,n;
请输入一个正整数:
i*i<
if(n%i==0)
}if(i*i<
=n||n==1)printf("
%d不是一个素数.\n"
n);
else
%d是一个素数.\n"
return0;
10.从键盘输入100个整数,求其中正整数的和。
#defineN100intmain()
intn,s=0,i;
=N;
请输入第%€个整数:
i);
if(*O)
continue;
s+=n;
s);
80分以上(即大于或等
11.从键盘输入1000个学生某门课程的百分制成绩,分别统计其中于80)、60分以上及低于60分的人数。
#defineN1000
intm,n,k,i;
m=n=k=0;
i++){printf("
请输入第%€个成绩:
0){
请重新输入
输入的成绩不符合百分制成绩要求,本成绩输入作废
第%d(成绩:
i--;
}if(score>
=80)m++;
elseif(score>
=60)
n++;
k++;
%d:
%d\rT’m,n,k);
10-6时,停止计算。
12.运用如下公式计算圆周率的近似值,当最后一项的绝对值小于
doublepi=,t=;
intsgn=1;
while(t<
1000000)
pi+=sgn/t;
sgn=-sgn;
t+=2;
Pi=%.6lf\n"
4*pi);
13.古代某工地需要搬运砖块,已知男人每人每次搬3块,女人每人每次搬2块,小孩两人每次抬一块,现有45人一次正好搬完全部砖块,请问男人、女人、小孩各几人
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)
m,w,c);
14.从键盘输入两个正整数到m、n中,求它们的最大公约数和最小公倍数。
intm,n,m1,n1,r;
请输入两个正整数:
%d%d"
m,&
m1=m;
n1=n;
r=m%n;
while(r!
m=n;
n=r;
r=m%n;
gcd(%d,%d)=%d\n"
m1,n1,n);
lcm(%d,%d)=%d\n"
m1,n1,m1*n1/n);
14.编程计算如下式子的值,直到
n等于100。
234I丿
^=-+Ifrq
irii
doubles=,t=;
intsgn=1;
while(t<
=100)
s+=sgn/t;
sgn=-sgn;
t+=1;
s=%.6lf\rT’s);
15.计算如下规律式子的值。
其中
该式子表示的含义为2+22+222,故结果为246。
a*a甘卜aaa*+•日(n个a)
inta,n,s=0,t;
inputa,n:
”);
t=a;
while(n>
s+=t;
t=t*10+a;
n--;
a与n的值都是由键盘输入确定。
如当a为2,n为3时,
16.计算如下式子的值。
357101
1+—1-—+—+■■■+—
246100
【参考程序】#inelude<
floats=;
for(n=2;
*=100;
n+=2)
s+=(float)(n+1)/n;
%.6f\n"
17.如数列第1项为2,此后各项的值均为其前一项的2倍再加3,编程计算该数列的前10
项之和。
intn,s=0,i;
n=2;
=3;
i++){
n=n*2+3;
18.现要求将1角钱换成1分、2分或5分的硬币,请问有多少种换法,并输出每一种换法。
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>
one,two,five);
ent++;
一共有%d种换法\n”,ent);
20.编程统计并输出200至300以内的全部素数。
#inelude<
intm,i,k=0;
for(m=201;
300;
m+=2){
for(i=3;
=m;
i+=2)if(m%i==0)break;
if(i*i>
m)
%8d"
m);
if(k%5==0)
\n200至U300之间一共有%d个素数'
n"
k);
21.打印所有“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数自身。
如153
intm,n,k;
for(m=1;
for(n=0;
n<
n++)
for(k=0;
k<
k++)
if(m*m*m+n*n*n+k*k*k==m*100+n*10+k)
%5d"
m*100+n*10+k);
12,数字之积为42.
22.输出200到300之间满足如下条件的数,即各位数字之和为【参考程序】
intm,n;
n++)if(m+n==10&
m*n==21)printf("
200+m*10+n);
90,须在屏幕上打印出90=2*3*3*5
23.编程将一个正整数进行质因数分解,例如输入【参考程序】
m);
%d="
while(m!
=1)
{while(m%n==0){
if(m!
=n)printf("
m/=n;
24.输入一行字符,分别统计其中英文字母、空格、数字及其他字符的个数。
intletter,space,digit,other;
letter=space=digit=other=0;
while(ch!
if(ch>
a'
ch<
z'
||ch>
Z'
)letter++;
elseif(ch>
0'
9'
digit++;
elseif(ch=='
'
space++;
other++;
letter,digit,space,other);
25.编程输出1000以内的全部完数。
所谓完数,是指该数恰好等于他的全部真因子的和。
如
6=1+2+3
intm,i,t;
for(m=2;
=1000;
t=1;
if(m%i==0)
t+=i;
if(i*i!
=m)t+=m/i;
if(t==m)
26.从键盘输入10个整数,求这些整数的总和及平均值,并统计不低于平均值的元素个数。
#defineN5intmain()
inta[N],i,cnt=0;
floataver;
printf(”请输入%4个整数:
”,N);
aver=;
for(i=0;
N;
scanf("
a[i]);
aver+=a[i];
if(a[i]>
=aver/N)cnt++;
这%4个整数的和是%.0f,平均值是%.2f\n"
N,aver,aver/10);
不低于平均值的数有%d(\n"
cnt);
27.设有存放于数组中一组整数,现从键盘输入一个整数,在数组中查找该数,如果数组中含有该数,则输出其全部出现位置,否则输出“**不存在”,**代表该数值。
#defineN10
inta[N]={16,35,48,29,56,43,93,64,90,48};
intn,sgn,i;
请输入待查找的整数:
sgn=0;
if(a[i]==n)
sgn=1;
%d在数组中的%€位置出现.\n"
n,i+1);
if(sgn==0)
%d不存在\n"
28.设有一存在有10个随机数的数组,请编程找出其中的最大数及其在数组中的位置。
inta[N],i,k;
srand(time(NULL));
for(i=0;
a[i]=rand();
%6d"
a[i]);
k=0;
a[k])
k=i;
\n最大值是%d它是数组的第%d个数\n”,a[k],k+1);
29.现有一未排序的整型数组,要求用选择法将该数组按由大到小的顺序排序。
#defineN10
intmain(){
inta[N],i,k,j,t;
printf(”请输入%d个整数:
N);
}for(j=0;
N-1;
k=j;
for(i=j+1;
t=a[j];
a[j]=a[k];
a[k]=t;
排序后的数组:
\n"
i++)printf("
30.现有一数组,其元素已按由大到小的顺序排列,现从键盘输入一个数,插入到该数组中,要求插入后的数组元素依然由大到小排列。
#defineN10intmain()
inta[N+1]={98,96,87,78,72,64,56,51,43,36};
intn,i;
插入前的数组:
请输入待插入的整数:
for(i=N-1;
i>
=0;
i--)
if(a[i]<
n)a[i+1]=a[i];
a[i+1]=n;
插入后的数组:
31.在数组中查找该数,**代表该数值。
设有存放于一维数组中一组整数,且已按由小到大顺序排序,现从键盘输入一个整数,
如果数组中含有该数,则输出该数的出现位置,否则输出“**不存在”#defineN10intmain()
inta[N]={93,90,64,56,50,48,43,35,29,16};
intn,sgn,top,bott,mid;
top=0;
bott=N-1;
while(top<
=bott)
mid=(top+bott)/2;
if(a[mid]==n)
break;
elseif(a[mid]>
n)top=mid+1;
bott=mid-1;
%d在第%4个数位置被发现.\n"
n,mid+1);
32.按如下格式打印杨辉三角形,具体行数由键盘输入。
1
11
121
1331
14641
15101051【参考程序】
#defineN20
intyang[N][N],n,i,j;
请输入要打印的的行数:
n;
yang[i][0]=yang[i][i]=1;
i;
yang[i][j]=yang[i-1][j]+yang[i-1][j-1];
for(j=0;
n-i-1;
%3c"
'
yang[i][j]);
33.编程实现从一字符串中删除指定的字符。
#defineN80
charstr[N],ch,i,j=0;
请输入一个字符串:
gets(str);
请输入待删除的字符:
str[i]!
\0'
i++)if(str[i]!
=ch)str[j++]=str[i];
str[j]='
删除指定字符后的字符串:
%s\n"
str);
34.现有若干字符串存放于一个二维数组中,每行存放一个字符串,现要求用冒泡法将这些字符串按由小到大排序,即按字符母顺排序。
#defineM6intmain()
charstr[M][N],temp[N],i,j;
printf(”请输入%d个字符串:
”,M);
M;
gets(str[i]);
M-1;
M-i-1;
if(stremp(str[j],str[j+1])>
strepy(temp,str[j]);
stre