C语言数组编程题及解答.docx

上传人:b****6 文档编号:7732671 上传时间:2023-01-26 格式:DOCX 页数:14 大小:19.83KB
下载 相关 举报
C语言数组编程题及解答.docx_第1页
第1页 / 共14页
C语言数组编程题及解答.docx_第2页
第2页 / 共14页
C语言数组编程题及解答.docx_第3页
第3页 / 共14页
C语言数组编程题及解答.docx_第4页
第4页 / 共14页
C语言数组编程题及解答.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C语言数组编程题及解答.docx

《C语言数组编程题及解答.docx》由会员分享,可在线阅读,更多相关《C语言数组编程题及解答.docx(14页珍藏版)》请在冰豆网上搜索。

C语言数组编程题及解答.docx

C语言数组编程题及解答

【程序1】

用筛选法求100之内的素数

筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法。

据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。

具体做法是:

先把N个自然数按次序排列起来。

1不是质数,也不是合数,要划去。

第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。

2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。

3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。

这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。

因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。

#include

#include

voidmain()

{

inti,j;

inta[100];

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

a[i]=i+1;

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

{

if(a[i]==0)

continue;

for(j=i+1;j<100;j++)

if(a[j]%a[i]==0)

a[j]=0;

}

for(j=1;j<100;j++)//j从1开始,去除a[0](其值为1),因为1既不是质数,也不是合数

if(a[j]!

=0)

printf("%d,",a[j]);

printf("\n");

}

【程序2】

题目:

一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如6=1+2+3.编程找出1000以内的所有完数。

程序源代码:

#include

intmain()

{

intk[10];

inti,j,n,s;

for(j=2;j<1000;j++)

{

n=-1;

s=j;

for(i=1;i

{

if((j%i)==0)

{

n++;

s=s-i;

k[n]=i;

}

}

if(s==0)//说明是完数

{

printf("%disawanshu:

",j);

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

printf("%d",k[i]);

printf("\n");

}

}

return1;

}

【程序3】

题目:

用选择法对10个数进行从大到小排序

1.程序分析:

可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。

      

2.程序源代码:

#include

#defineN10

intmain()

{

inti,j,max,tem,a[N];

/*inputdata*/

printf("pleaseinputtennum:

\n");

for(i=0;i

{

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

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

}

printf("\n");

printf("Beforesorted\n");

for(i=0;i

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

printf("\n");

/*sorttennum*/

for(i=0;i

{

max=i;

for(j=i+1;j

if(a[max]

if(max!

=i)

{

tem=a[i];

a[i]=a[max];

a[max]=tem;

}

}

/*outputdata*/

printf("Aftersorted\n");

for(i=0;i

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

printf("\n");

return1;

}

==============================================================

【程序4】

题目:

求一个3*3矩阵对角线元素之和

1.程序分析:

利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

2.程序源代码:

#include

intmain()

{

floata[3][3],sum=0;

inti,j;

printf("pleaseinputrectangleelement:

\n");

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

for(j=0;j<3;j++)

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

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

sum=sum+a[i][i];

printf("duijiaoxianheis%6.2f",sum);

return1;

}

【程序5】

题目:

将一个数组逆序输出。

1.程序分析:

用第一个与最后一个交换。

2.程序源代码:

#defineN5

intmain()

{

inta[N]={9,6,5,4,1},i,temp;

printf("\noriginalarray:

\n");

for(i=0;i

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

for(i=0;i

{

temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf("\nsortedarray:

\n");

for(i=0;i

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

printf("\n");

return1;

}

1Q_r_P_^,j_R_C_D_C0

#],?

'e_O_G/M+f_\9B051Testing软件测试网;S$p-]$ai【程序6】

_W?

#A_t0u_P+D0打印出以下杨辉三角形(要求打印出10行)。

 

_x_W"`_](d01 51Testing软件测试网]2t_kO;^

1  1 

&D_z8H;q_]_A6A6k%A,]*|.|01  2  1 51Testing软件测试网2Q_X`V_z_a_u4b

1  3  3  1 51Testing软件测试网_Qj_M+@_qd1Q_q

1  4  6  4  1 51Testing软件测试网_A_Y_{M_D_U(`_Q

1  5  10 10  5  1

&~9t_S`6YWW~0#include

voidmain()

{

intn,i;

inta[10],b[10];

a[0]=1;

a[1]=1;

printf("%-4d\n",a[0]);

printf("%-4d%-4d\n",a[0],a[1]);

for(n=3;n<=10;n++)

{

b[0]=1;

for(i=1;i

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

b[n-1]=1;

for(i=0;i

{

printf("%-4d",b[i]);

a[i]=b[i];

}

printf("\n");

}

};r.v_X_M_F3F_L.D_P_X_p0

【程序7】

有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。

如果该数不在数组中,则打印出"无此数"51Testing软件测试网+V_~_e_C7j_p_T5S_i#i

#include

intmain()

{

inta[15]={1,4,9,13,21,34,55,89,144,233,377,570,671,703,812};

intw,l,m,h;

printf("pleaseentersearchnumber:

");

scanf("%d",&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)

break;

}

if(l>h)

printf("无此数\n");

if(w==a[m])

printf("itisat%d\n",m+1);

return1;

}

【程序8】

有一篇文章,共有3行文字,每行有个80字符。

要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。

"w:

G_mT_P7u0#include

#include

intmain()

{

chara[3][81];

inti,j,len;

intnum[5]={0,0,0,0,0};

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

gets(a[i]);

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

{

len=strlen(a[i]);

for(j=0;j

{

if(a[i][j]>='a'&&a[i][j]<='z')

num[0]++;

elseif(a[i][j]>='A'&&a[i][j]<='Z')

num[1]++;

elseif(a[i][j]=='')

num[2]++;

elseif(a[i][j]>='1'&&a[i][j]<='9')

num[3]++;

else

num[4]++;

}

}

printf("英文小写字母、大写字母、空格、数字、其他字符的个数分别为%d,%d,%d,%d,%d\n",num[0],num[1],num[2],num[3],num[4]);

return1;

}

51Testing软件测试网,f*@_h_I_S_B4k_P9G*Z【程序9】

打印以下图案 51Testing软件测试网_g_x_yc_u_aH_t_F

* * * * * 

_Y'D(M_s_Y'Y0   * * * * * 

_Y+P_Q_l_x

I&Q_i__8n0       * * * * * 51Testing软件测试网:

j+w+v8Sr

           * * * * * 51Testing软件测试网5{_~$tD/s_}

               * * * * * 

_v_?

_b_F_F'd_j0#include

#defineN5

intmain()

{

inti,j;

for(i=0;i

{

for(j=0;j

printf("");

for(j=0;j

printf("*");

printf("\n");

}

return1;

}

51Testing软件测试网,f*@_h_I_S_B4k_P9G*Z【程序10】

有一行电文译文下面规律译成密码:

 

_K'e4T5O-L)r_j0A->Z a->z 51Testing软件测试网_E7L7G_Q#N_c

B->Y b->y 

/[_E;^1Z:

H0C->X c->x 51Testing软件测试网*~3Z_@!

T-T_[_F

… 51Testing软件测试网1P_Y_r!

_2g"o_~A_`

即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。

非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。

51Testing软件测试网b){_hSs!

e3ua/a

#include

intmain()

{

inti;charstr1[100],str2[100];

gets(str1);

for(i=0;str1[i]!

='\0';i++)

if(str1[i]>='A'&&str1[i]<='Z')

str2[i]=2*'A'+25-str1[i];

/*str1[i]表示第(str1[i]-'A'+1)个字母,变成(26-(str1[i]-'A'+1)+1)个字母,对应的ASCII是26-(str1[i]-'A'+1)+1+'A'-1=2*'A"+25-str1[i]*/

elseif(str1[i]>=97&&str1[i]<=122)

str2[i]=2*'a'+25-str1[i];

else

str2[i]=str1[i];

str2[i]='\0';

printf("miwenis:

%s\nyuanwenis:

%s\n",str2,str1);

return1;

}

51Testing软件测试网,f*@_h_I_S_B4k_P9G*Z【程序11】

0n_B.D.r;Z0编一个程序,将两个字符串S1和S2比较,如果S1>S2,输出一个正数;S1=S2,输出0;S1

不要用strcmp函数。

两个字符串用gets函数读入。

输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。

例如,’A’与’C’相比,由于’A’<’C’,应输出负数,由于’A’与’C’的码差值为2,因此应输出"-2"。

同理:

"And"和"Aid"比较,根据第2个字符比较结果,’n’比’i’大5,因此应输出"5"。

 51Testing软件测试网'x_wU5{"b)~_Y

#include

#include

intmain()

{

intresult=0;

inti=0;

chara[20],b[20];

gets(a);

gets(b);

while(a[i]!

='\0'&&b[i]!

='\0')

{

if(a[i]!

=b[i])

{

result=a[i]-b[i];

break;

}

i++;

}

if(a[i]=='\0'&&b[i]!

='\0')

result=-b[i];

elseif(a[i]!

='\0'&&b[i]=='\0')

result=a[i];

printf("返回值为%d\n",result);

return1;

}#Qc]_X.FK*UA0

4O;c0u;?

_k,Q

M_C;Q051Testing软件测试网,f*@_h_I_S_B4k_P9G*Z【程序12】

编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。

拷贝时,’\0’也要拷贝过去,’\0’后面的字符不拷贝。

 

G-b4QT%N"P&{_s0#include

#include

voidmain()

{

inti;

chara[20];

charb[20];

gets(a);

i=-1;

do

{

i++;

b[i]=a[i];

}while(a[i]!

='\0');

printf("拷贝后为%s\n",b);

}51Testing软件测试网T3P4H"J_v_j6Gm;Z_xh_g

【程序13】

从键盘输入若干个整数,其值在0至4范围内,用-1作为输入结束的标志。

统计每个整数的个数。

参考程序:

#include

intmain()

{

inti,s[5]={0},x;

printf("Inputsomenumbers(between0to4):

");

scanf("%d",&x);

while(x!

=-1)

{

if(x>=0&&x<=4)

s[x]++;

scanf("%d",&x);

}

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

printf("%d:

%d\n",i,s[i]);

return1;

}

【程序14】从键盘输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串a中;如果b的长度小于5,则把b的所有元素都连接到a中。

试编程。

参考程序:

#include

#include

intmain()

{

chara[80],b[80];

inti=0,j;

printf("Inputtwostrings:

\n");

gets(a);

gets(b);

while(a[i])i++;

for(j=0;j<5&&b[j];j++)

a[i++]=b[j];

a[i]='\0';

puts(a);

return1;

}

【程序15】阿姆斯特朗数:

如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数)。

如407=43+03+73就是一个阿姆斯特朗数。

试编程求1000以内的所有阿姆斯特朗数。

程序分析:

可采用穷举法,依次取1000以内的各数(设为i),将i的各位数字分解后,根据阿姆斯特朗数的性质进行计算和判断。

程序源代码:

#include

intmain()

{

inti,t,k,a[3];

printf("therearefollowingArmstrongnumbersmallerthan1000:

\n");

for(i=2;i<1000;i++)//穷举要判定数的范围

{

for(t=0,k=1000;k>=10;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)

printf("%d",i);

}

return1;

}

 

Welcome!

!

!

欢迎您的下载,

资料仅供参考!

 

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

当前位置:首页 > 高等教育 > 研究生入学考试

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

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