ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:19.72KB ,
资源ID:28302087      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28302087.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言数组编程题及解答.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、C语言数组编程题及解答【程序1】用筛选法求100之内的素数筛选法又称筛法,是求不超过自然数N(N1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274194年)发明的,又称埃拉托斯特尼筛子。 具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊

2、人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。#include #include void main() int i,j; int a100; for(i=0;i100;i+) ai=i+1; for(i=1;i100;i+) if(ai=0) continue; for(j=i+1;j100;j+) if(aj%ai=0) aj=0; for(j=1;j100;j+) /j从1开始,去除a0(其值为1),因为1既不是质数,也不是合数 if(aj!=0) printf(%d

3、,aj); printf(n);【程序2】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.编程找出1000以内的所有完数。程序源代码:#include int main() int k10; int i,j,n,s; for(j=2;j1000;j+) n=-1; s=j; for(i=1;ij;i+) if (j%i)=0) n+; s=s-i; kn=i; if(s=0) /说明是完数 printf(%d is a wanshu:,j); for(i=0;i=n;i+) printf(%d ,ki); printf(n); return 1;【程序3】题目:用选

4、择法对10个数进行从大到小排序1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。 2.程序源代码:#include #define N 10int main() int i,j,max,tem,aN; /*input data*/ printf(please input ten num:n); for(i=0;iN;i+) printf(a%d=,i); scanf(%d,&ai); printf(n); printf(Before sorted n); for(i=0;iN;i+) printf(%5d,

5、ai); printf(n); /*sort ten num*/ for(i=0;iN-1;i+) max=i; for(j=i+1;jN;j+) if(amaxaj) max=j; if (max!=i) tem=ai; ai=amax; amax=tem; /*output data*/ printf(After sorted n); for(i=0;iN;i+) printf(%5d,ai); printf(n); return 1;=【程序4】题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组,再将aii累加后输出。2.程序源代码:#include

6、int main() float a33,sum=0; int i,j; printf(please input rectangle element:n); for(i=0;i3;i+) for(j=0;j3;j+) scanf(%f,&aij); for(i=0;i3;i+) sum=sum+aii; printf(duijiaoxian he is %6.2f,sum); return 1;【程序5】题目:将一个数组逆序输出。1.程序分析:用第一个与最后一个交换。2.程序源代码:#define N 5int main() int aN=9,6,5,4,1,i,temp; printf(n

7、original array:n); for(i=0;iN;i+) printf(%4d,ai); for(i=0;iN/2;i+) temp=ai; ai=aN-i-1; aN-i-1=temp; printf(n sorted array:n); for(i=0;iN;i+) printf(%4d,ai); printf(n); return 1;1Q_r_P_,j_R_C_D_C0#,?e_O_G/M+f_9B051Testing软件测试网;S$p-$a i 【程序6】_W ?#A_t0u_P+D0打印出以下杨辉三角形(要求打印出10行)。_x_W_(d0151Testing软件测试网2

8、t_k O;11&D_z8H;q_A6A6k%A,*|.|012151Testing软件测试网2Q_X V_z_a_u4b133151Testing软件测试网_Q j_M+_qd1Q_q1464151Testing软件测试网_A_Y_ M_D_U(_Q15101051&9t_S 6YW W0#include void main() int n,i; int a10,b10; a0=1; a1=1; printf(%-4dn,a0); printf(%-4d%-4dn,a0,a1); for(n=3;n=10;n+) b0=1; for(i=1;in-1;i+) bi=ai-1+ai; bn-1

9、=1; for(i=0;in;i+) printf(%-4d,bi); ai=bi; printf(n); ;r.v_X_M_F3F_L.D_P_X_p0 【程序7】有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出无此数51Testing软件测试网+V_e_C7j_p_T5S_i#i#includeint main() int a15=1,4,9,13,21,34,55,89,144,233,377,570,671,703,812; int w,l,m,h; printf(please enter search nu

10、mber:); scanf(%d,&w); for(l=0,h=14;) m=(l+h)/2; if(w=am) break; if(wam) l=m+1; if(wh) break; if(lh) printf(无此数n); if(w=am) printf(it is at %d n,m+1); return 1;【程序8】有一篇文章,共有3行文字,每行有个80字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。w:G_m T_P7u0 #include #include int main() char a381; int i,j,len; int num5=0,0,0,

11、0,0; for(i=0;i3;i+) gets(ai); for(i=0;i3;i+) len=strlen(ai); for(j=0;j=a&aij=A&aij=1&aij=9) num3+; else num4+; printf(英文小写字母、大写字母、空格、数字、其他字符的个数分别为%d,%d,%d,%d,%dn,num0,num1,num2,num3,num4); return 1; 51Testing软件测试网,f*_h_I_S_B4k_P9G*Z 【程序9】打印以下图案51Testing软件测试网_g_x_y c_u_a H_t_F*_YD(M_s_YY0 *_Y+P_Q_l_x

12、I&Q_i_8n0 *51Testing软件测试网:j+w+v8S r * *51Testing软件测试网5_$t D/s_ *_v_?_b_F_Fd_j0#include #define N 5 int main() int i,j; for(i=0;iN;i+) for(j=0;ji;j+) printf( ); for(j=0;jZa-z51Testing软件测试网_E7L7G_Q#N_cB-Yb-y/_E;1Z:H0C-Xc-x51Testing软件测试网*3Z_!T-T_F51Testing软件测试网1P_Y_r!_2go_A_即第一个字母变成第26个字母,第i个字母变成第(26-i

13、+1)个字母。非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。51Testing软件测试网 b)_hSs!e3u a/a#include int main() int i;char str1100,str2100; gets(str1); for(i=0;str1i!=0;i+) if(str1i=A&str1i=97&str1iS2,输出一个正数;S1=S2,输出0;S1S2,输出一个负数。不要用strcmp函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。例如,A与C相比,由于AC,应输出负数,由于A与C的码差值为

14、2,因此应输出-2。同理:And和Aid比较,根据第2个字符比较结果,n比i大5,因此应输出5。51Testing软件测试网x_w U5b)_Y#include #include int main() int result=0; int i=0; char a20,b20; gets(a); gets(b); while(ai!=0&bi!=0) if(ai!=bi) result=ai-bi; break; i+; if(ai=0&bi!=0) result=-bi; else if(ai!=0&bi=0) result=ai; printf(返回值为%dn,result); return

15、1;#Qc _X.FK*UA0 4O;c0u;?_k,QM_C;Q051Testing软件测试网,f*_h_I_S_B4k_P9G*Z 【程序12】编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷贝时,0也要拷贝过去,0后面的字符不拷贝。G-b4Q T%NP&_s0#include #include void main() int i; char a20; char b20; gets(a); i=-1; do i+; bi=ai; while(ai!=0); printf(拷贝后为%sn,b);51Testing软件测试网 T3P4HJ_v_j6G m;

16、Z_x h_g【程序13】 从键盘输入若干个整数,其值在0至4范围内,用-1作为输入结束的标志。统计每个整数的个数。参考程序:#include int main() int i,s5=0,x; printf(Input some numbers(between 0 to 4):); scanf(%d,&x); while(x!=-1) if (x=0&x=4) sx+; scanf(%d,&x); for(i=0;i=4;i+) printf(%d: %dn,i,si); return 1;【程序14】从键盘输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串a中;如果b

17、的长度小于5,则把b的所有元素都连接到a中。试编程。参考程序:#include #include int main() char a80,b80; int i=0,j; printf(Input two strings:n); gets(a); gets(b); while(ai) i+; for(j=0;j5&bj;j+) ai+=bj; ai=0; puts(a); return 1;【程序15】阿姆斯特朗数:如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数)。如407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。程序分析:可采用穷举法,依次取1000以内的各数(设为i),将i的各位数字分解后,根据阿姆斯特朗数的性质进行计算和判断。程序源代码:#include int main() int i,t,k,a3; printf(there are following Armstrong number smaller than 1000:n); for (i=2;i=10;t+) at=(i%k)/(k/10); /截取整数的各位,分别赋于a0-a2 k/=10; if (a0*a0*a0+a1*a1*a1+a2*a2*a2=i) printf(%d ,i); return 1;

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

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