




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C综合练习2 (数组和常用算法练习题)C综合练习2 (数组和常用算法练习题)1. 数组概念题(1) 下列各语句定义了数组,其中哪一个是不正确的 _. A、char a310=China,American,Asia; B、int b22=1,2; C、float x2=1,2,4,6,8,10; D、int y3=1,2,3,4,5,6;(2) 下面叙述中,正确的有_. A)同一个数组中的各个元素具有相同的数据类型。 B)a是一维数组名,数组元素 a1 还可以写作 *(a+) . C)设变量定义为 char s =hello,则数组s中有6个元素. D) 已定义int w5;程序中可以引用的数组元素分别是w1,w2,w3,w4,w5. E) 已定义int n=4 ; 则执行语句float xn=1,2,3,4; 后,x2的值是3 . F) 已定义int a23=1,2; 则元素a12 的值是不确定的值.(3) 不正确的赋值或赋初值的方式是 _. A、char str6=s, t, r, i, n, g; B、char str10= string;C、char str6=g; D、char str10; str=string;(4) 设int str100;int i=5;则引用数组元素str5的错误形式是_. A. str5 B. stri C. stri+ D. str+i(5) 设char str100 = Hangzhou ; 则数组str所占内存空间应为 字节.(6) 设char str = Hangzhou ; 则数组str所占内存空间应为 字节 (7) 设int a23=2,3;则初值为3的数组元素名是_.(8) 若声明char s20=Windows;则语句“printf(%s,s+3);”的输出结果为_.(9) 程序中使用了字符串函数strcmp ,则必须包含的头文件名为_,若使用 gets 呢 ?(10)有定义 char ch 9 =”1230abc ”,则 strlen ( ch ) 等于_.2. 程序阅读题(1) 下列程序的输出结果是 。main ( ) int a 5 = 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 ;printf ( %d , a12 ) ; (2) 下列程序的输出结果是_.main ( ) char str 10 = abcd , 1234 , efgh , 5678 ;int k ;for ( k = 1 ; k 3 ; k + ) printf ( %sn , strk ) ; (3) 下列程序的输出结果是_. main() int i=0,n; char s10=”298h01”; n0; for(i=0;si!=0;i+) if(si=9& si0)n=n10+(si 0); else break; printf(“%dn”,n); (4) 下列程序的输出结果是_.#include #include main() char c,a10=Office; int i; for(i=0;istrlen(a)/2;i+) c=a0; strcpy(a,a+1); astrlen(a)=c; astrlen(a)+1=0; puts(a); (5) 下列程序的输出结果是_. main() float a43=3,2,5,-3,2,1,4,3,2,5,1,3; int i,j; float v; for(i=0;i4;i+) v=ai0; for(j=1;j3;j+) v+=aij; v/=3; for(j=0;j3;j+) aij-=v; for(i=0;i4;i+) for(j=0;j3;j+) printf(%6.1f,aij); printf(b n); (6) 下列程序的输出结果是_.#include main() int i,k,j,m=5,7,9;for(i=0;i3;i+) k=sqrt( m i ) ;for(j=2;j=k;j+)if(m i %j = = 0) break ;if ( j k+1 ) printf (“ m=%d”, m i ); (7) 设运行时输入为 4, 则下列程序的输出结果是_.main() int x = 22,33,44,55,66,77,88; int k , y = 0 , n ; scanf ( “%d”,&n ); for ( k=1;k=n;k+ ) if ( x k %2 = = 1 ) y + ; printf ( “y=%dn”, y ): (8) 下列程序的输出结果是_.main () int x = 2,3,4,5,6,7 ; int i, j , p , t ; for ( i =3 ; i5 ; i+) p=i; for ( j =i+1 ; j x p ) p=j ; t=x p ; x p =x i ; x i =t ; for ( i = 0 ; i=5 ; i+ ) printf ( “ %d ”, x i ); (9) 下列程序的输出结果是_. main( ) int i ,j,s1 = 0 ,s2 = 0 , a 3 = 1 ,2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ;for ( i = 0 ; i 3 ; i + + )for ( j = 0 ; j 3 ; j + + ) if ( i = = j ) s1 += aij ;if ( i +j = = 2 ) s2 += aij ; printf ( s1=%d , s2=%d n , s1 , s2 ) ; 3. 程序填空题 (1) 程序说明: 下述程序的功能是将字符串 s1 复制到字符串 s2 中。#include main() char s1100,s2100; int i;gets( s1) ;_ 1 ;while (s1 i != 0 ) s2 i = s1 i ; _ 2 ;_ 3 ;puts(s1);puts(s2); (2) 程序说明: 下述程序的功能是输入10个整数,将它们存入数组a中,再输入一个数x,然后在数组中查找x,如果找到,输出相应的下标(如有多个元素与x相等,只要输出下标值最小的那个元素的下标),否则,输出“Not Found”。请从给出的答案中选取合适的填空. main() int k,sub,x;int a10;for(k=0;k10;k+ )scanf(“d”,ak); printf(”Input xn”); scanf(”d”,x);sub= -1;for ( k=0 ; k10 ; k+) if(ak=x)_ 1 if(_ 2 )printf(”Index is %dn”,sub); else printf(”Not Foundn”); 1 A、subk; B、break; C、subk;break; D、subk;break:2 A、sub!= -1 B、sub!=0 C、sub=-1 D、sub=0 (3) 程序说明: 下列程序的功能是从键盘向一维数组 x 输入 100 个整数,然后将数组 x 用选择法排成升序( 从小到大 ),并打印出数组 x 。 main () int i, j , p , t ; _ 1 ;for ( i =0 ; i100 ; i+) scanf (“%d” , & x i ) ;for ( i =0 ; i99 ; i+) _ 2 ; for ( j =i+1 ; j100 ;j+ ) if ( x j _ 3 ) p=j ; t=x p ; x p =x i ; x i =t ; for ( i = 0 ; i=0.0& n1000) sum+ _ 1 ; xn= _ 2 ; n+; scanf(%f,&a); ave=_ 3 ; printf(Output:n); printf(ave=%fn,ave);for( i=0;in;i+) if(_ 4 ) printf(%fn,xi); (5) 程序说明 :该程序功能是调用函数f,将一个整数首尾倒置,若程序输入12345,则输出54321;若程序输入-34567,则输出-76543。*/#includemain()long m,n,y=0;scanf(“%ld”, &n); m=fabs(n);while(m!=0)y=y*10+m%10;_1_ if(n0) _2_ printf(%ldt, y ); (6)程序说明 :以下程序的功能是输入自然数 m 和n ,输出它们的最大公约数。 main()int m,n,k;while(scanf(%d%d,&m,&n), _ 1 );for(_ 2 ;(n%k!=0)|(m%k!=0);k-);printf(%dn,k); 4程序改错题 答题注意:下列各个程序中,紧接着”*N*”的下一行中有错误 ,请改正 。(1) 程序说明 :该程序功能是运行时若输入a、n分别为3、6,则输出下列表达式的值:3+33+333+3333+333333+333333main() int a,i,n ; long t=0;/*1*/s=0;scanf(“%d%d”,&a,&n);for(i=0;in;i+)/*2*/t=t*10+i;s=s+t; printf(“%dn”,s); (2) 程序说明 :该程序功能是运行时输入n,输出n各位数字之和(如n=1308,则输出12,n=-3204则输出9)。 #inculde main( )int n,s=0;scanf (%d,&n); n=fabs(n);/*1*/while (n1) s=s+n%10;/*2*/n=n%10; printf(%dn,s); 5. 编程题 (1). 计算并分别打印出 100 ,500 上的奇数之和以及偶数之和. (2) 输入两个正整数 m和 n(mn ),输出 m , n 上的所有素数以及这些素数的个数。 (3) 输入一个字符( 串的长度 50 ),统计并输出其中英文字母、数字字符和其他字符的个数( 统计时可利用 C 的系统函数以简化程序书写 ,如 isdigit 等)。 (4) 将字符串str( 串的长度 50 )的内容颠倒过来输出,这个串是否是回文 ?(5) 任意输入一个 5 阶方阵,输出这个方阵中上三角元素里的最小数和下三角元素里的最大数 。(6)输入 5 对 自然数 m 和 n ,分别输出各对m 和 n的最大公约数和最小公倍数。(7)任意输入 1000 个整数,将这些数按降序输出。(8)输出斐波那契序列中大于 1000 的最小数项,并同时指出这是第几项。( 思考:若所求的为斐波那契序列中小于 1000 的最大数项呢?)前四题的参考答案1. 数组概念 (1) C (2) A,C (3) D (4) D (5) 100 (6) 9 (7) a10 (8) dows (9) string.h ,stdio.h (10) 32. 程序阅读 (1) 2 (2) 1234 efgh (3) 298 (4) fficeo ficeof iceoff (5) -0.3, -1.3, 1.7 -3.0, 2.0, 1.0 1.0, 0.0, -1.0 2.0, -2.0, 0.0 (6) 9 (7) 2 (8) 2,3,4,7,6,5 (9) s1=15,s2=15 3. 程序填空 (1) 1 i=0 2 i+ 3 s2i=0 (2) 1 C 2 A (3) 1 int x100 2 p=i 3 xp (4) 1 =a 2 a 3 sum/n 4 xiave (5) 1 m=m/10; 2 y=y;(6) 1 m=0 | n=0 2 k=m1改为 n0 /*2*/ 将 n=n%10; 改为 n=n/10;5. 编程题 (1). 计算并分别打印出 100 ,500 上的奇数之和以及偶数之和.Main() int k , s1=0 , s2=0 ; for ( k=100 ; k=500 ; k+) if( k%2=1) s1+=k ; else s2+=k ;printf(” 奇数之和=%d,偶数之和= %dn”,s1,s2); (2) 输入两个正整数 m和 n(mn ),输出 m , n 上的所有素数以及这些素数的个数。#include Main() int m, n , t=0, k, i , j ; while(scanf(”d,%d”,m,&n), ( m=0)|(nn) ;for(i=m;i=n;i+) k=sqrt( i ) ;for(j=2;j=k;j+) if( i %j = = 0) break ;if ( j = = k+1 ) printf (“素数=%5d”, i ); t + ; printf (“n素数个数=%5d”, t ); (3) 输入一个字符( 串的长度 50 ),统计并输出其中英文字母、数字字符和其他字符的个数( 统计时可利用 C 的系统函数以简化程序书写 ,如 isdigit 等)。#include #include main() char char s 50 ; int t1=0 , t2=0 , t3=0 ,i , k ;scanf(”s”,s ); k = strlen( s ) ;for(i=0 ;ik ; i+) if ( isalpha ( s i ) = = 1 ) t1 + ; else if( isdigit (s i )= = 1 ) t2 + ; else t3 + ; printf (“英文字母个数=%5d,数字字符个数=%5d,其他字符个数=%5d”, t1,t2,t3 ); (4) 将字符串str( 串的长度 50 )的内容颠倒过来输出,这个串是否是回文 ?#include main() char char s 50 , t ; int j ,i , k ;scanf(”s”,s ); k = strlen( s ) ;for(i=0, j = k-1 ;ij ; i +, j - ) t = s i ;s i =s j ; s j = t ; printf (“%sn”, s );for(i=0, j = k-1 ;i=j ) printf (“s 是回文n” ); else printf (“s 不是回文n” ); (5) 任意输入一个 5 阶方阵,输出这个方阵中上三角元素里的最小数和下三角元素里的最大数 。main( ) int i , j , a 5 5 ,max , min ;for ( i = 0 ; i 5 ; i + + ) for ( j = 0 ; j 5 ; j + + ) scanf(”d”,&a i j );min= a 0 1 ;for ( i = 0 ; i 4 ; i + + ) for ( j =i+1 ; j 5 ; j + + ) if(a i j min) min = a i j ;max= a 1 0 ;for ( i = 1 ; i 5 ; i + + ) for ( j =0 ; j max) max = a i j ;printf ( max=%d , min=%d n , max , min ) ; (6)输入 5 对 自然数 m 和 n ,分别输出各对m 和 n的最大公约数和最小公倍数。main()int m , n , k , i ;for ( i =0 ; i5 ; i+) while(scanf(%d%d,&m,&n), m=0 | n=0 ) ;for(k=mn?
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械制造技术基础期末试题及答案
- 交通银行2025绍兴市结构化面试15问及话术
- 中国银行2025乐山市信息科技岗笔试题及答案
- 工商银行2025平顶山市秋招笔试综合模拟题库及答案
- 2025年3D打印技术的金属3D打印技术
- 中国银行2025秋招笔试性格测试题专练及答案海南地区
- 农业银行2025洛阳市秋招群面模拟题及高分话术
- 中国银行2025北京市秋招笔试专业知识题专练及答案
- 2025行业数字化转型路径分析
- 中国银行2025双鸭山市金融科技岗笔试题及答案
- 风电场基础知识培训课件记录
- 2025广东广州市公安局第二批招聘交通辅警150人笔试参考题库附答案解析
- 2025年内科慢性疾病治疗路径分析测试答案及解析
- 2025秋人教版(2024)七年级上册英语学期教学计划
- 智能会计应用课件
- 2025全国小学生“学宪法、讲宪法”活动知识竞赛题库及答案
- 2025-2026学年北师大版小学数学四年级上册教学计划及进度表
- 【初一】【七年级】【语文上】【秋季】开学第一课《“语”你相遇今朝》【课件】
- 国防知识教育培训课件
- 预防艾滋病、梅毒和乙肝母婴传播服务流程
- 中国陶瓷教学课件
评论
0/150
提交评论