C语言编程题文档格式.docx
《C语言编程题文档格式.docx》由会员分享,可在线阅读,更多相关《C语言编程题文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
num);
}while(num<
0||num>
99999);
if(num<
=9)wsh=1;
elseif(num<
=99)wsh=2;
=999)wsh=3;
=9999)wsh=4;
elsewsh=5;
printf("
输入的是一个%d位数,"
wsh);
各个位的数字分别为:
"
switch(wsh)
{
case5:
ww=num%100000/10000;
%d,"
ww);
case4:
qw=num%10000/1000;
qw);
case3:
bw=num%1000/100;
bw);
case2:
sw=num%100/10;
sw);
case1:
gw=num%10/1;
gw);
default:
\n"
}
5.输入三个整数x,y,z,请把这三个数由小到大输出。
答案见上机实验2中的5.4题。
6.输入两个正整数m和n,求其最大公约数和最小公倍数。
intm,n,p,r,a,t;
%d%d"
m,&
n);
p=m*n;
if(m<
n)
t=m;
m=n;
n=t;
r=m%n;
while(r!
=0)
n=r;
r=m%n;
a=p/n;
printf("
%d,%d\n"
n,a);
7.计算1到10之间奇数之和及偶数之和。
#include<
intmain()
{
inta,b,i;
a=b=0;
for(i=0;
i<
=10;
i+=2)
a+=i;
for(i=1;
b+=i;
偶数之和=%d\n"
a);
奇数之和=%d\n"
b);
8.有一分数序列
2/1,3/2,5/3,8/5,13/8,21/13,…·
求出这个数列的前20项之和。
inti;
floatsum=0,fz=2,fm=1,temp;
20;
sum=sum+fz/fm;
temp=fz;
fz=fz+fm;
fm=temp;
前20项之后为%f\n"
sum);
9.一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
编程序找出1000之内的所有完数,并按下面格式输出其因子:
6itsfactorSare1,2,3
voidmain()
intm,s,i;
for(m=2;
m<
1000;
m++)
s=0;
for(i=1;
m;
if((m%i)==0)s=s+i;
if(s==m)
{
printf("
%d是一个完数,它的因子是"
m);
for(i=1;
if((m%i)==0)
{
printf("
i);
if(i!
=m/2)printf("
"
}
printf("
}
10.打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一水仙花数,因为153=13+53+33。
main()
intge,shi,bai,number;
for(number=100;
number<
number++){
bai=number/100;
shi=(number%100)/10;
ge=number%10;
if(number==bai*bai*bai+shi*shi*shi+ge*ge*ge)
\nnumber=%d\n"
number);
}
11.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
charc;
intletters=0,space=0,digit=0,other=0;
请输入一行字符:
for(;
(c=getchar())!
\n'
)
if(c>
a'
&
c<
z'
||c>
A'
Z'
letters++;
elseif(c=='
'
space++;
elseif(c>
0'
9'
digit++;
else
other++;
字母数:
%d\n空格数:
%d\n数字数:
%d\n其他字符数:
%d\n"
letters,space,digit,other);
12.用筛法求100之内的素数。
答案见127页的例题6.9,只需将范围由例题的100到200改为1到100即可。
13.求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数。
要求输出结果5个一行。
intnum,n=0;
1000以内能被7或11整除但又不能同时被7和11整除的数有:
for(num=1;
num<
=1000;
num++)
if(num%7==0||num%11==0)
if(!
(num%7==0&
num%11==0))
{
printf("
%5d"
num);
n=n+1;
if(n%5==0)printf("
}
14.计算和输出下列级数的和。
s=1/(1×
2)+1/(2×
3)+…+1/(n×
(n+1))
例如,当n=10时,函数值为0.909091。
conio.h>
doublefun(intn)
inti=1,j=2,k;
doublesum=0.0;
for(k=0;
k<
n;
k++)
sum+=1.0/(i*j);
i++;
j++;
returnsum;
clrscr();
%f\n"
fun(10));
15.编写一个程序,求出1~100之间所有每位数的乘积小于每位数的和的数。
例如:
13满足1*3<
1+3.
intnum,gw,sw;
for(num=10;
100;
gw=num%10;
sw=num/10;
if(gw*sw<
gw+sw)
%3d"
16.编写一个程序,求出1~100之间所有每位数的乘积大于每位数的和的数。
98满足9*8>
9+8.
if(gw*sw>
17.编写一个程序,从3个红球,5个白球,6个黑球中任意取出8个球,且其中必须有黑球,输出所有可能的方案。
intred,white,black;
for(red=0;
red<
=3;
red++)
for(white=0;
white<
=5;
white++)
for(black=1;
black<
=6;
black++)
if(red+white+black==8)
红球=%d,白球=%d,黑球=%d\n"
red,white,black);
18.编写一个程序,从3个红球,5个白球,6个黑球中任意取出8个球,且其中必须有白球,输出所有可能的方案。
for(white=1;
for(black=0;
19.有一个3×
4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
答案见139页例题7.5
inti,j,max,hangs,leis;
inta[3][4];
请输入12个整数\n"
3;
for(j=0;
j<
4;
j++)
scanf("
a[i][j]);
max=a[0][0];
for(i=0;
if(a[i][j]>
max)
max=a[i][j];
hangs=i+1;
leis=j+1;
printf("
max=%d\nhangs=%d\nleis=%d\n"
max,hangs,leis);
20.一个3×
20的整数数组,要求输出该数组中的最小值,并将其行号和列号输出。
答案参考20题,改动3处:
(1)intmax;
改成intmin;
(2)inta[3][4]改成inta[3][20]
(3)将a[i][j]>
max改成a[i][j]<
min
21.从字符串中删除指定的字符。
同一字母的大小写按不同字符处理。
若程序执行时,输入字符串为:
turbocandBorlandc++,从键盘上输入字符:
n,则输出后变为:
turbocadborladc++,如果输入的字符串不存在,则字符串照原样输出。
(10分)
#defineN15
chars1[N]={'
},s2[2*N]={'
},delchar;
inti,j;
请输入要处理的字符串"
gets(s1);
请输入要删除的字符"
scanf("
%c"
delchar);
for(i=0,j=0;
s1[i]!
if(s1[i]!
=delchar|)
s2[j++]=s1[i];
s2[j]=’\0’;
%s\n"
s1);
s2);
22.要求用数组实现求fibonacci数列40个数,并且每输出5个数换行。
这个数列有如下特点:
第1,2两个数为1,1。
从第3个数开始,该数是其前面两个数之和。
答案见133页例题7.2
23.求一个3×
3矩阵主对角线元素之和。
答案将上机实验4中的7.3题。
24.将一个数组中的值按逆序重新存放。
例如,原来顺序为8,6,5,4,1。
要求改为1,4,5,6,8。
答案将上机实验4中的7.5题。
25.打印出以下的杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051
………………
答案将上机实验5中的7.6题。
26.有一篇文章,共有3行文字,每行有80个字符。
要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
27.
答案将上机实验5中的7.10题。
28.用选择法对10个整数排序。
答案见181页例题8.13
29.用冒泡法对10个整数排序。
答案见134页例题7.3
30.要求在字符串中所有数字字符前加一个$字符。
例如,输入:
A1B23CD45,则输出为:
A$1B$2$3CD$4$5。
};
i++,j++)
if(s1[i]>
s1[i]<
s2[j++]='
$'
s2[j]=s1[i];
31.编一程序,将两个字符串连接起来,不要用strcat函数。
charconcatenate(charstring1[],charstring2[],charstring[])
inti,j;
for(i=0;
string1[i]!
=’\0’;
string[i]=string1[i];
for(j=0;
string2[j]!
string[i+j]=string2[j];
string[i+j]=’\0’;
chars1[100],s2[100],s[100];
printf(“请输入字符串1:
”);
scanf(“%s”,s1);
printf(“请输入字符串2:
scanf(“%s”,s2);
concatenate(s1,s2,s);
printf(“连接后的字符串为:
%s”,s);
32.写一函数,将两个字符串连接。
与31题相同
33.写一函数,使给定的一个二维数组(3×
3)转置,即行列互换。
参考138页的例题7.4.
34.写一个判素数的函数,在主函数输入一个整数,输出是否素数的信息。
答案将上机实验6中的8.3题。
35.写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
答案将上机实验6中的8.5题。
36.编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
#include<
intletter,digit,space,others;
voidcount(char[]);
chartext[80];
输入字符串:
gets(text);
字符串是:
puts(text);
letter=0;
digit=0;
space=0;
others=0;
count(text);
letter:
%d,digit:
%d,space:
%d,others:
letter,digit,space,others);
voidcount(charstr[])
{inti;
str[i]!
if((str[i]>
str[i]<
)||(str[i]>
))
letter++;
elseif(str[i]>
elseif(str[i]==32)
others++;
37.写一函数,用“起泡法”对输入的10个字符按由小到大顺序排列。
#defineN10
{
voidcharsort(charstr[]);
chara[N];
请输入待排序的字符串:
gets(a);
charsort(a);
排序好的字符串:
voidcharsort(charstr[])
inti,j,len;
chart;
len=strlen(str);
for(j=0;
len-1;
len-1-j;
if(str[i]>
str[i+1])
t=str[i];
str[i]=str[i+1];
str[i+1]=t;