C程序设计辅导资料版.doc_第1页
C程序设计辅导资料版.doc_第2页
C程序设计辅导资料版.doc_第3页
C程序设计辅导资料版.doc_第4页
C程序设计辅导资料版.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序设计辅导资料 一、填空题1、C语言程序是函数构成的,其中有且只有1个 主 函数,程序的的执行总是从该函数开始。2、在C语言中,正确的标识符是由 字母、数字和下划线 组成的。3、定义一个符号常量PI,其值为3.1415926,格式是 #define PI 3.1415926 。4、结构化程序设计的三种基本结构是顺序结构、选择结构和 循环结构 。5、下面运算符 % + = 按照优先级从高到低排列顺序为_+,%,15&6525|8875的值 1 。9、写出表达式6665&6585|8595的值 1 10、表达式 (int)(20+2.5*3+6+5.3) 的值是 38 。11、表达式m = a b ? ab : b5 当a=15,b=11时,m的值为: 26 ; 12、用条件运算符写出求两个整数x,y中大数的表达式 z xy?x:y 。13、写出下面表达式的值 3*5/7+7%3 _3_ 3+4=7-10 _1_ x=2,y=2;+x|+y _1_ 14、执行语句“for(j=15 ;j =5 ;j- );”后,变量j的值为 4 。15、执行语句“for(s=0,j=5 ;j3?2:13、设有宏定义 #define pi 3.14和 #define S(a) pi*a若在函数中有语句 float b=3.6 , area ; area=S(b) ;则area的值是(C)A 3.6 B 3.14 C 11.304 D 40.69444、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与(C )组成配对关系。A. 缩排位置相同的if B. 在其之前未配对的ifC. 在其之前未配对的最近的if D.同一行上的if5、下列语句不具有赋值功能的是(C)Aa*=b Bx=1 Ca+b Da+6、若有以下定义和语句:int a,b,c;scanf(“ %d %d %d”,&a,&b,&c);为了使1,3,2分别赋给a,b,c,从键盘上输入数据的正确形式是( A )A 1 3 2 B 1,3,2 C a=1b=3c=2 D a=1,b=3,c=27、设a为存放整型的一维数组,如果a的首地址为P,那么a中第i 个元素的地址为(C )。AP+i*2 B. P+(i-1)*2 C. P+(i-1) D. P+i8、在C程序中有如下语句:char func(int x,int y); 它是(C )。 A. 对函数func的定义。 B. 对函数func的调用。 C对函数func的原型说明。 D. 不合法的。9、下列描述中不正确的是(C )。A. 字符型数组中可以存放字符串。B. 可以对字符型数组进行整体输入、输出。C. 可以对整型数组进行整体输入、输出。D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。10、不能把字符串:Hello!赋给数组b的语句是(B )。A. char b10=H,e,l,l,o,!; B. char b10; b=Hello!;C. char b10; strcpy(b,Hello!); D. char b10=Hello!;11、表达式y=(132122?152:67?18:9)的值为_C_ 。 A 9 B 7 C 152 D. 1812、以下程序的输出结果是 ( D ) #include main()int i,j,k,a=3,b=2;i=(-a=b+)? - -a:+b;j=a+;k=b;Printf(“i=%d,j=%d,k=%dn”,i,j,k);(A)i=2,j=1,k=3 (B)i=i,j=1,k=2(C)i=4,j=2,k=4 (D)i=1,j=1,k=313、一个C语言的源程序中 ( C ) (A)必须有主函数和其它函数 (B)可以有多个主函数(C)必须有一个主函数 (D)可以没有主函数14、有下列结构体,对该结构体变量stu的成员项引用正确的是(B) struct student int m; float n; stu ,*p; A stu.nm Bp-m C*p.m Dp.stu.n15、写出程序的运行结果 ( A ) main()int n;for(n=1;ny?x:y; int z; z=xy?x:y;(C) int max(x,y) return(z);int x,y,z; z=xy?x:y; (D) int max()return(z); 18、在函数内,定义变量时存储类型符可省略的是(A) A.auto B.static C.extern D.register19、以下对二维数组a进行初始化不正确的是(C )A. int a23=1,2,3,3,4,5;B. int a 3=1,2,3,4,5,6;C. int a2 =1,2,3,4,5,6; D. int a23=1,2,3,4;20、在使用TurboC2.0环境编辑程序时,运行某程序使用的菜单项为(B)AFILE BRUN CEDIT DOPTION21、设有如下定义: int x=10,y=3,z; 则语句printf(%dn,z=(x%y,x/y); 的输出结果是(D )。A. 1 B. 0 C. 4 D. 322、若有说明: int i,j=7, *p=&i;, 则与i=j; 等价的语句是(B )。A. i= *p; B. *p=j; C. i=&j; D. i=* *p;24、函数调用strcat(strcpy(str1,str2),str3)的功能是(A )A将串str2复制到串str1中后,再将串str3连接到串str1之后B将串str1复制到串str2中后,再连接到串str3之后C将串str1复制到串str2中后,再复制到串str3之后D 将串str2连接到串str1中后,再将串str1复制到串str3中25、 执行下列程序 inta33=1,2,3; intb33=1,2,3; main() printf(dn,a10+b00); 后输出的结果是(D) A.0 B.1 C.2 D.326、执行下列程序 inta=3,b=4; voidfun(intx1,intx2) printf(d,dn,x1+x2,b); main() inta=5,b=6;fun(a,b); 后输出的结果是(C) A.3,4 B.11,1 C.11,4 D.11,627、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值: scanf(i=%d,f=%f ,&i, ,&f); 为了把100和765.12分别赋给i和f,则正确的输入为 ( B )A) 100765.12 B) i=100,f=765.12 C) 100765.12 D) x=100y=765.1228、C语言中以只读方式打开一个文件应选择_A_参数。 A“r” B“rw” C“ b” D“a”29、 为表示关系xyz,应使用C语言表达式_A_ A)(x=y)&(y=z) B(x=y)AND(y=z) C)(x=y=z) D)(x=y)&(y=z) 30、 设有如下定义: int x=10,y=3,z; 则语句 printf(%dn,z=(x%y,x/y); 的输出结果是_D_ A)1 B)0 C)4 D)3 31、以下关于if语句的错误描述是(A)条件表达式可以是任意的表达式条件表达式只能是关系表达式或逻辑表达式条件表达式的括号不可以省略与else配对的if语句是其之前最近的未配对的if语句32、以下程序的输出结果是(B)main( ) int m=5; if(m+5) printf(%dn,m); else printf(%dn,m- -); A、7B、6C、5D、433、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是(C)A、c=b=a;B、(a=c)|(b=c);C、(a=c)&(b=c);D、a=c=b;34、使条件表达式(year%4=0&year%100!=0)|(year%400=0)结果为假的值是(A)A、1950B、2000C、1996D、200435、当执行以下程序段时(A)x=-1;do x=x*x;while(!x);A、循环体将执行一次B、循环体将执行两次C、循环体将执行无限次D、系统将提示有语法错误36、已知有语句:for(x=0,y=0;(y!=123)(xb?(ac?a:c):(b)); A、6B、5C、4D、不确定38、以下程序段循环体的执行次数是(B)main( ) int i,j; for(i=0,j=1;i=j+1;i+=2,j-) printf(%dn,i); A、0B、1C、2D、339、在说明语句中有:float (*fp)( );则fp代表的是:( C ) A 一个用于指向一维数组的行指针; B 一个返回值为实型的函数名; C 一个用于指向函数的指针变量; D 一个指向实型数据的指针;40、Break语句的正确的用法是(B )。A. 无论在任何情况下,都中断程序的执行,退出到系统下一层。 B. 在多重循环中,只能退出最靠近的那一层循环语句。C. 跳出多重循环。D. 只能修改控制变量。42、在函数中默认存储类型说明符的变量应该是_C_存储类型。 A内部静态 B. 外部 C自动 D. 寄存器三、阅读程序题(1) 阅读下列程序: main() static int a3=9,7,5,3,1,2,4,6,8; int i,j,s1=0,s2=0; for (i=0;i3;i+) for (j=0;j3;j+) if (i=j ) s1=s1+aij; if (i+j=2) s2=s2+aij; printf (“%dn%dn”,s1,s2); 程序的输出结果:18 10(2) 阅读下列程序: main() int x , y = 25 ; x = 5 + 5 * 5 + y ; printf ( x = %d y=%d n , x , y ) ; x = 10 + 2 * 3 7 ; y = y +10 + 2 * 3 ; printf ( x = %d y=%d n , x , y ) ; x = (y + 6 ) % 5 + y ; y = x + y ;printf ( x = %d y=%dn , x , y) ; 程序的输出结果:x=45 y=25 x=9 y=41 x=43 y=84(3) 阅读下列程序:include “ stdio.h ”main ( )int i;int count (int i );for ( i = 10 ; i 16 ; i=i+2)count( i ) ;int count ( int n) static int x = 10 ;printf ( “%d : x=%d , “ , n , x ) ;x = x+10 ;printf ( “x+10 = %d n, “ , x ) ;输出结果:10:x=10, x+10=20,12:x=20, x+10=30,14:x=30, x+10=40,(4)# include main ( ) int a , b ; for ( a=1 ; a= 6 ; a+) for ( b=1 ; b= 14-2*a ; b+) printf (“ “ ) ; /*输出一个空格*/for ( b=1 ; b= a ; b+) printf (“%4d “ , a ) ;printf (“ n“ ) ; 输出结果: 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6(5) swap ( int *p1 , int *p2 ) int temp ; temp = *p1 ; *p1=*p2 ; *p2 = temp ; main ( ) int a, b ; int *pt1 , *pt2 ; scanf ( %d %d , &a , &b ) ; pt1=&a ; pt2= &b ;if ( ab) swap (pt1, pt2 ) ;printf ( %d %d ,*pt1 ,*pt2 ) ; 输入 33 38输出结果:38 33(6)阅读下列程序: main() char *s=12134211; int v4=0,0,0,0,k,i;for(k=0;sk!=0;k+) switch(sk) case 1:i=0;break;case 2:i=1;break;case 3:i=2;break;case 4:i=3;vi+;for(k=0;k4;k+) printf(%d ,vk);输出结果:4 2 1 1(7) 阅读下列程序: include “ stdio.h ”main( )int sum=0 , k=1 ;do sum = sum + k ;k = k+2 ; while ( k=10 );printf ( “sum %d” , sum);输出结果:sum =25(8) 阅读下列程序:include “ stdio.h ”main( )int sum=0 , k=1 ;for( k=1; k=500; k+ )if (k%5=0) sum = sum + k ;printf ( “sum %d” , sum);输出结果:sum =25250(9)阅读下列程序:#includemain() int i, j, row, column,m;static int array33=121,120,301,208,172,331,165,182,165;m=array00;for (i=0; i3; i+) for (j=0; j3; j+) if (arrayij=m) m=arrayij; row=i; column=j;printf(%d,%d,%dn,m,row,column);输出结果:120 0 1(11) main()int number;scanf(%d,&number);if (prime(number) printf(n%d is prime number.,number);else printf(n%d is not prime number.,number);int prime(int number)int flag=1,n;for(n=2;n y ) if ( zx ) m =z ; else if ( y x ) m = y ; return ( m ) ; main ( ) float a , b , c , ma ; scanf ( “ %f %f %f “ , &a , &b , &c ); ma = max ( a , b , c) ; printf (“ the max is %f “ , ma ) ; 2、采用选择法对一维数组中的n个数按升序进行排序。void sort ( int a , int n )int j , k , p , t ;for ( j = 0 ; jn-1 ; j+ ) p = j ;for ( k = j+1 ; k n ; k+ ) if ( ak ap ) p=k ;if ( p != j ) t = ap ; ap = a j ; a j = t ; 3、求100 200 之间的全部素数 # include main ( ) int m , k ,i , n = 0 ; for (m=101 ; m=200 ;m= m+1 ) k = sqrt (m) ; for ( i=2 ;i=k+1) printf ( “ %d” , m ); 4、编程把100到200之间的不能被3整除的数找出来并输出 main ( ) int n ; for ( n=100 ; n=200 ; n+ ) if ( n%3 = = 0 ) continue ; printf ( “ %d” , n ) ; 5、计算数组元素的平均值。float average(n,array)int n; ;int i;float sum=0;for(i=0;in;i+) sum+=arrayi;return( sum/n );main()int i;float score10 ;printf(input 10 score:n);for(i=0;i10;i+) scanf(%f,&scorei);aver=average(10, score );printf(average score is %.2fn,aver);6、利用插入排序法将十个字符从小到大排序#include void insert(char s) int i,j,t; for (i=1; i=0)&( tsj ) sj+1=sj; j- ; sj+1=t; main() char a11;int i; for (i=0;i10;i+) ai=getchar(); Insert(a) ; puts(a);7、下面是实现打印九九乘法表的程序 main() int i , j , k; for(i=1;_i10_; i+) for(j=1;_j=i_; j+) printf(“%d*%d=%d”,_i,j,i*j_); printf(“n”); 8、下面的程序输出3到1000之间的所有素数,且每个一行。main( )int i,j; int b ,c=0; for(i=3;i=1000;i+) b=0;for(j=2;j=i-1;j+)if ( i%j=0 ) b=1;break; if (!b) c+;printf(%4d,i); if ( c%5=0 ) printf(“n”); 9、函数fun,其功能是求两个整数的最大公约数fun(int x,int y)int a,b, r; a=x; b=y; while( r=a%b,r!=0 ) a=b; b=r ; return (b); 10、下面程序的功能是:输出 100以内(不包含100)能被 3整除且个位数为 6的所有整数。Includestdiohmain() int j ;for(i=1; _i_=48&c=0_ _) if(xamax) amax=x;if(_xamin_ _) amin=x;scanf(%f,&x); printf(namax=%fnamin=%fn,amax,amin); 13、下面程序的功能是:对如下分段定义的函数,输入自变量并计算函数值.main() float x,y; scanf (“%f”, _&x_);if (x=4) y=3*x;else if ( x_=10_ ) y=1+ _sqrt(1+x)_ ;else _y=100_;printf (“ x=%f, y=%fn”,x,y);五、编程题1、百马百担问题,有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?#includevoid main() int i, j; for (i=0;i34;i+)/大马 for (j=0;j(100-i*3)/2+1;j+)/中马 if (100-i-j)%2=0 & 3*i+2*j+(100-i-j)/2 =100) printf(%dt%dt%dn,i,j,100-i-j); 2、编程序按下列公式计算e的值(精度为1e-6) e=1+1/1!+1/2!+1/3!+1/n! #include#includeusing namespace std;int main() int n,sum=1,i; float e=0; coutn; for(i=1;i=n;i+) sum*=i; e+=1.0*1/sum; coute=1+eendl; system(PAUSE); return 0;3、编写一个求:1/1+1/2+1/3+1/100的值。#includeviod main()int i;float sum=0.0;for(i=1;i=100;i+)sum+=1/i;printf(sum=%.3f,sum);4、写一个主函数,输出100至300之间的所有的素数#include # include void main() int m,k,i,n=0; for(m=101;m=300;m=m+2) k=sqrt(m); for (i=2;i=k+1)printf(%d ,m);n=n+1; if(n%10=0) printf(n); printf (n);5、求一个3X4矩阵的所有元素之和。并求出最大元素. 1 2 3 4 5 6 7 8 9 10 11 12#includevoid main()int a34;int sum,max,i,j;sum=0;max=0;for(i=0;i3;i+)for(j=0;jmax)max=aij;printf(sum=%dnmax=%dn,sum,max);6、输入a, b, c 求 的根#includmain() int a,b,c; float m,n,k,l,p,q; char s; s=i; printf(input a b c:/n); scanf(%d %d %d,&a,&b,&c); if(a=0) m=-c/b; printf(the result is:%f,m); if(a!=0) k=b*b-4*a*c; if(k0) m=(-b-sqrt(k)/(2*a); /sqrt:开跟号; m,n既为两实根 n=(-b+sqrt(k)/(2*a); printf(the result is:m=%f n=%f,m,n); if(k=0) m=n=(-b)/(2*a); /两相等实根 printf(the result is:m=n=%fn,m); if(k0) l=4*a*c-b*b; p=-b/(2*a);q=sqrt(l)/(2*a); printf(the result is:m=%f+%f*%cn,p,q,s); printf(n=%f-%f*%cn,p,q,s); /求出两虚根 7、设计程序求: #includmain()float sum=0.0;int i;for(i=1;i=100;i+)if(i%2=1)sum += 1/(float)i;elsesum -= 1/(float)i;8、输出 1到100之间 所有能被3整除但不能被5整除的整数.#include main() int i,sum=0; for(i=1;i100;i+) if (i%3=0)&(i%5!=0) sum=sum+i; printf(%d,sum); 9、利用公式 求的近似值,直到某一项的绝对值小于10-6为止#include#includevoid main() int s=1; float n=1,t=1,pi=0; while(fabs(t)1e-6) pi=pi+t; n+=2; s=-s; t=s/n; pi=pi*4; printf(%f,pi); getch();10、有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13, ,求出这个数列的前150项之和。#include main()int n,t,number=150;float a=2,b=1,s=0;for(n=1;n=number;n+)s=s+a/b;t=a;a=a+b;b=t;printf(sum is %9.6fn,s); 11、编程从键盘输入一个5行5列的二维数组数据,并找出数组中的最大值及其所在的行下标和列下标;最小值及其所在的行下标和列下标。要求打印格式,例如最大值形式:Max=最大值,row=行标,col=列标main() int a35;int point;int i,j,r,l;for(i=0;i3;i+)for(j=0;j5;j+)scanf(%d,&aij);point=a00;for(i=0;i3;i+)for(j=0;jpoint)point = aij;r+;l+;printf(最大值、行标、列标分别是:%d %d %d,aij,r,l);12、有80个学生,每个学生的数据包括学号(num),姓名(name10),四门课成绩(score4),要求编一个程序,输入学生的数据,并计算出每个学生的总分,然后找出总分最高的学生与总分最低的学生,再输出这两个学生的各项数据。#include#include struct student char name20; char num20; int a,a1,a2,a3,a4; int aver;stu10;void mark(student *b) int i; for(i=0;i10;i+) bi.a=bi.a1+bi.a2+bi.a3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论