C语言数组编程的题目及解答Word格式文档下载.docx
《C语言数组编程的题目及解答Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言数组编程的题目及解答Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。
![C语言数组编程的题目及解答Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/e98d12fc-52ef-4ee4-9076-0c10187a62fb/e98d12fc-52ef-4ee4-9076-0c10187a62fb1.gif)
,a[j]);
printf("
\n"
);
}
【程序2】
题目:
一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
程序源代码:
intmain()
intk[10];
inti,j,n,s;
for(j=2;
1000;
n=-1;
s=j;
for(i=1;
j;
{
if((j%i)==0)
{
n++;
s=s-i;
k[n]=i;
}
}
if(s==0)//说明是完数
%disawanshu:
"
j);
for(i=0;
=n;
printf("
%d"
k[i]);
return1;
【程序3】
用选择法对10个数进行从大到小排序
1.程序分析:
可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
2.程序源代码:
#defineN10
inti,j,max,tem,a[N];
/*inputdata*/
pleaseinputtennum:
N;
printf("
a[%d]="
i);
scanf("
%d"
&
a[i]);
Beforesorted\n"
%5d"
a[i]);
/*sorttennum*/
N-1;
max=i;
if(a[max]<
a[j])max=j;
if(max!
=i)
tem=a[i];
a[i]=a[max];
a[max]=tem;
/*outputdata*/
Aftersorted\n"
==============================================================
【程序4】
求一个3*3矩阵对角线元素之和
利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
floata[3][3],sum=0;
pleaseinputrectangleelement:
3;
for(j=0;
scanf("
%f"
a[i][j]);
sum=sum+a[i][i];
duijiaoxianheis%6.2f"
sum);
【程序5】
将一个数组逆序输出。
用第一个与最后一个交换。
#defineN5
{
inta[N]={9,6,5,4,1},i,temp;
\noriginalarray:
%4d"
N/2;
temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
\nsortedarray:
1QrP^,jRCDC0
#],?
'
eOG/M+f\9B051Testing软件测试网;
S$p-]$ai【程序6】
W?
#At0uP+D0打印出以下杨辉三角形(要求打印出10行)。
xW"
`](d01
51Testing软件测试网]2tkO;
^
1 1
&
Dz8H;
q]A6A6k%A,]*|.|01 2 1
51Testing软件测试网2QX`Vzau4b
1 3 3 1
51Testing软件测试网QjM+@qd1Qq
1 4 6 4 1
51Testing软件测试网AY{MDU(`Q
1 5 10 10 5 1
~9tS`6YWW~0#include<
intn,i;
inta[10],b[10];
a[0]=1;
a[1]=1;
%-4d\n"
a[0]);
%-4d%-4d\n"
a[0],a[1]);
for(n=3;
n<
=10;
n++)
b[0]=1;
n-1;
b[i]=a[i-1]+a[i];
b[n-1]=1;
for(i=0;
n;
%-4d"
b[i]);
a[i]=b[i];
};
r.vXMF3FL.DPXp0
【程序7】
有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。
如果该数不在数组中,则打印出"
无此数"
51Testing软件测试网+V~eC7jpT5Si#i
#include<
inta[15]={1,4,9,13,21,34,55,89,144,233,377,570,671,703,812};
intw,l,m,h;
pleaseentersearchnumber:
scanf("
w);
for(l=0,h=14;
;
)
m=(l+h)/2;
if(w==a[m])
break;
if(w>
a[m])
l=m+1;
if(w<
h=m-1;
if(l>
h)
if(l>
无此数\n"
if(w==a[m])
itisat%d\n"
m+1);
【程序8】
有一篇文章,共有3行文字,每行有个80字符。
要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。
w:
GmTP7u0#include<
string.h>
chara[3][81];
inti,j,len;
intnum[5]={0,0,0,0,0};
gets(a[i]);
len=strlen(a[i]);
len;
if(a[i][j]>
='
a'
a[i][j]<
z'
num[0]++;
elseif(a[i][j]>
A'
Z'
num[1]++;
elseif(a[i][j]=='
'
num[2]++;
1'
9'
num[3]++;
else
num[4]++;
英文小写字母、大写字母、空格、数字、其他字符的个数分别为%d,%d,%d,%d,%d\n"
num[0],num[1],num[2],num[3],num[4]);
51Testing软件测试网,f*@hISB4kP9G*Z【程序9】
打印以下图案
51Testing软件测试网gxycuaHtF
* * * * *
Y'
D(MsY'
Y0
* * * * *
Y+PQlx
I&
Qi_8n0
51Testing软件测试网:
j+w+v8Sr
*
* * * *
51Testing软件测试网5{~$tD/s}
v?
bFF'
dj0#include<
i;
"
*"
51Testing软件测试网,f*@hISB4kP9G*Z【程序10】
有一行电文译文下面规律译成密码:
K'
e4T5O-L)rj0A->
Z a->
z
51Testing软件测试网E7L7GQ#Nc
B->
Y b->
y
/[E;
^1Z:
H0C->
X c->
x
51Testing软件测试网*~3Z@!
T-T[F
…
51Testing软件测试网1PYr!
_2g"
o~A`
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。
非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。
51Testing软件测试网b){hSs!
e3ua/a
inti;
charstr1[100],str2[100];
gets(str1);
str1[i]!
\0'
i++)
if(str1[i]>
str1[i]<
)
str2[i]=2*'
+25-str1[i];
/*str1[i]表示第(str1[i]-'
+1)个字母,变成(26-(str1[i]-'
+1)+1)个字母,对应的ASCII是26-(str1[i]-'
+1)+1+'
-1=2*'
A"
+25-str1[i]*/
elseif(str1[i]>
=97&
=122)
else
str2[i]=str1[i];
str2[i]='
miwenis:
%s\nyuanwenis:
%s\n"
str2,str1);
51Testing软件测试网,f*@hISB4kP9G*Z【程序11】
0nB.D.r;
Z0编一个程序,将两个字符串S1和S2比较,如果S1>
S2,输出一个正数;
S1=S2,输出0;
S1<
S2,输出一个负数。
不要用strcmp函数。
两个字符串用gets函数读入。
输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。
例如,’A’与’C’相比,由于’A’<
’C’,应输出负数,由于’A’与’C’的码差值为2,因此应输出"
-2"
。
同理:
And"
和"
Aid"
比较,根据第2个字符比较结果,’n’比’i’大5,因此应输出"
5"
51Testing软件测试网'
xwU5{"
b)~Y
intresult=0;
inti=0;
chara[20],b[20];
gets(a);
gets(b);
while(a[i]!
b[i]!
if(a[i]!
=b[i])
result=a[i]-b[i];
i++;
if(a[i]=='
result=-b[i];
elseif(a[i]!
b[i]=='
result=a[i];
返回值为%d\n"
result);
}#Qc]X.FK*UA0
4O;
c0u;
?
k,Q
MC;
Q051Testing软件测试网,f*@hISB4kP9G*Z【程序12】
编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。
拷贝时,’\0’也要拷贝过去,’\0’后面的字符不拷贝。
G-b4QT%N"
P&
{s0#include<
chara[20];
charb[20];
i=-1;
do
b[i]=a[i];
}while(a[i]!
拷贝后为%s\n"
b);
}51Testing软件测试网T3P4H"
Jvj6Gm;
Zxhg
【程序13】
从键盘输入若干个整数,其值在0至4范围内,用-1作为输入结束的标志。
统计每个整数的个数。
参考程序:
inti,s[5]={0},x;
Inputsomenumbers(between0to4):
x);
while(x!
=-1)
if(x>
=0&
x<
=4)
s[x]++;
=4;
%d:
%d\n"
i,s[i]);
【程序14】从键盘输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串a中;
如果b的长度小于5,则把b的所有元素都连接到a中。
试编程。
chara[80],b[80];
inti=0,j;
Inputtwostrings:
while(a[i])i++;
for(j=0;
5&
b[j];
a[i++]=b[j];
a[i]='
puts(a);
【程序15】阿姆斯特朗数:
如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数)。
如407=43+03+73就是一个阿姆斯特朗数。
试编程求1000以内的所有阿姆斯特朗数。
程序分析:
可采用穷举法,依次取1000以内的各数(设为i),将i的各位数字分解后,根据阿姆斯特朗数的性质进行计算和判断。
inti,t,k,a[3];
therearefollowingArmstrongnumbersmallerthan1000:
for(i=2;
i++)//穷举要判定数的范围
for(t=0,k=1000;
k>
t++)
a[t]=(i%k)/(k/10);
//截取整数的各位,分别赋于a[0]-a[2]
k/=10;
if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==i)