c语言练习题答案_第1页
c语言练习题答案_第2页
c语言练习题答案_第3页
c语言练习题答案_第4页
c语言练习题答案_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

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

文档简介

1、单项选择=题号:8902当x为偶数或奇数时(0除外),其值都为0的表达式是:()A、!x !=0B、x%2=0C、!(x%2)D、(x/2*2-x)=0答案:A题号:8074若a,b是int型变量,执行以下语句后a的值是().for(b=1,a=1;b<=50;b+)if(a>=10)break;if(a%2=1)a+=5;continue;a -=3;A、10B、6C、7D、1答案:A题号:7764有以下程序:#include<stdio.h>void fun(int a,int b)int t;t=a;a=b;b=t;main()int c10=1,2,3,4,5,

2、6,7,8,9,0,i;for(i=0;i<10;i+=2)func(i,ci+1);for(i=0;i<10;i+)printf("%d,",ci);printf"n"程序的运行结果是().A、0,1,2,3,4,5,6,7,8,9,B、1,2,3,4,5,6,7,8,9,0,C、2,1,4,3,6,5,8,7,0,9,D、0,9,8,7,6,5,4,3,2,1,答案:B题号:9539以下程序的输出结果是void fun(flaot *a,float *b)float w;*a=*a+*a;w=*a;*a=*b;*b=w;main()flo

3、at x=2.0;y=3.0;float *px=&x,*py=&y;fun(px,py);printf("%2.0f,%2.0fn",x,y);A、4,3B、2,3 C、3,4D、3,2答案:C题号:9181阅读下面程序段,则执行后的结果为.#include"stdio.h"main()int m=4,n=2,k;k=fun(m,n);printf("%dn",k);fun(int m,int n)return m*m*m-n*n*n;A、56B、64C、0D、8答案:A判断=题号:8630在C程序中,APH和aph

4、是两个不同的变量答案:正确题号:8511putchar()函数参数可以是字符常量、字符变量、整形常量、整形变量和字符串.答案:错误填空=题号:5293一个C源程序中至少应包括一个_。答案:空 1:main函数 【或】 主函数题号:9491将函数func的入口地址赋给指针变量p的语句是_.答案:空 1:p=func 【或】 p=func;程序设计=题号:10118/*-【程序设计】-功能:求出二维数组外围元素之和,作为函数值返回。二 维数组的值在主函数中赋予。-*/#define M 4#define N 5#include "stdio.h"int fun(int aMN)

5、/*Begin*/* End */void TestFunc()FILE *IN,*OUT;int iINMN,iOUT;int i,j,k;IN=fopen("14.in","r");if(IN=NULL)printf("Please Verify The Currernt Dir.It May Be Changed");OUT=fopen("14.out","w");if(OUT=NULL)printf("Please Verify The Current Dir. It May

6、Be Changed");for(k=0;k<10;k+) for(i=0;i<M;i+) for(j=0;j<N;j+) fscanf(IN,"%d",&iINij);iOUT=fun(iIN);fprintf(OUT,"%dn",iOUT);fclose(IN);fclose(OUT);main()int aMN=1,3,5,7,9,2,4,6,8,10,2,3,4,5,6,4,5,6,7,8;int y;y=fun(a);printf("s=%dn",y);TestFunc();示例代码:in

7、t s=0; int i,j; for(i=0;i<M;i+) s=s+ai0+aiN-1; for(j=1;j<N-1;j+) s=s+a0j+aM-1j; return s;题号:5500/*-【程序设计】-功能:实现两个整数的交换。例如:给a和b分别输入:60和65,输入为:a=65 b=60-*/#include<stdio.h>#include<conio.h>void TestFunc();void fun(int *a,int *b) /*Begin*/ /* End */ void main() int a,b; printf("E

8、nter a,b:"); scanf("%d,%d",&a,&b); fun(&a,&b); printf("a=%d b=%dn",a,b); TestFunc();void TestFunc() FILE *IN,*OUT; int a,b,n; IN=fopen("in.dat","r"); if(IN=NULL) printf("Read File Error"); OUT=fopen("out.dat","w&qu

9、ot;); if(OUT=NULL) printf("Write File Error"); for(n=0;n<5;n+) fscanf(IN,"%d%d",&a,&b); fun(&a,&b); fprintf(OUT,"a=%d b=%dn",a,b); fclose(IN); fclose(OUT);示例代码: int t; t=*a;*a=*b;*b=t;程序填空=题号:5080/*-【程序填空】-题目:以下函数用于求一个字符串的长度。-*/#include "stdio.h&

10、quot;int stringlen(char *p) int len=0; /*FILL*/ while(*p+) _; /*FILL*/ _; main() char s="abcdefg" printf("%d",stringlen(s);答案:位置 1:len+ 【或】 len=len+1位置 2:return len 【或】 return (len)题号:10774/*-【程序填空】-题目:计算某日是当年的第几天。-*/#include <stdio.h>struct int year; int month; int day;/*F

11、ILL*/_void main() int days; printf("请输入日期(年、月、日):"); scanf("%d, %d, %d", &data.year, &data.month, &data.day); switch(data.month) case 1:days = data.day; break;/*FILL*/ case 2:days = data.day+_; break; case 3:days = data.day+59; break; case 4:days = data.day+90; break;

12、 case 5:days = data.day+120; break; case 6:days = data.day+151; break; case 7:days = data.day+181; break; case 8:days = data.day+212; break; case 9: days = data.day+243; break; case 10:days = data.day+273; break; case 11:days = data.day+304; break; case 12:days = data.day+334; break; /*FILL*/ if(dat

13、a.year%4=0&&data.year%100!=0_data.year%400=0) if(data.month>=3)/*FILL*/ _ printf("%d月%d日是%d年的第%d天.n", data.month, data.day, data.year, days);答案:位置 1:data;位置 2:31位置 3:|位置 4:days+; 【或】 +days; 【或】 days+=1; 【或】 days=days+1; 【或】 days=1+days;程序改错=题号:9192/*- 【程序改错】-题目:给定程序MODI1.C中函数fun

14、的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如:当s中的字符串为:"ABCDE"时,则t中的字符串应为:"EDCBAABCDE"。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include <conio.h>#include <stdio.h>#include <string.h> void fun (char *s, char *t)/*Error*/int i;sl = strlen(s);for (i=0; i<sl; i+)/*Erro

15、r*/ti = ssl-i;for (i=0; i<sl; i+)tsl+i = si;/*Error*/ t2*sl = "0"main() char s100, t100;clrscr();printf("nPlease enter string s:"); scanf("%s", s);fun(s, t);printf("The result is: %sn", t);getch();答案:位置 1:int i,sl;位置 2:ti = ssl-i-1;位置 3:t2*sl = '0'

16、【或】 t2*sl = 0;题号:5044/*- 【程序改错】-题目:改正以下程序的函数体中不正确的语句。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include "stdio.h"main() int i=8,a,b; unsigned long w=5; double x=1.42,y=5.3; x=x/(-3); /*ERROR*/ y=float(i); /*ERROR*/ y=y+x a+=a-=(b=4)*(a=3);答案:位置 1:y=(float)i; 【或】 y=i;位置 2:y=y+x;单项选择=题号:4656经过以下语句定义后,表

17、达式z+=x>y?+x:+y的值为()。 int x=1,y=2,z=3;A、3B、2C、5D、6答案:D题号:8552以下程序的运行结果是(). #include<stdio.h>main()int a=3,b=4,c=8,d=4,m=1,n=3; printf("%dn",(m=a>b)&&(n=c>d); A、1B、3C、0D、2答案:C题号:10214有以下程序段:int j;floaty;char name50;scanf("%2d%f%s",&j,&y,name);当执行上述程序段

18、,从键盘上输入555667777abc后,y的值为.A、55566.0B、566777.0C、566.0D、7777.0答案:C题号:10198下列叙述中正确的是().A、在switch语句中不一定使用break语句 B、break语句必须与switch语句中的case 配对使用C、在switch语句中必须使用defaultD、break语句只能用于switch语句答案:A题号:7542已定义char string20;使得string的内容为"You are student"的正确输入语句是().A、scanf("%c",&string);B、

19、gets(string);C、scanf("%s",&string);D、scanf("%s",string);答案:B判断=题号:6999若有定义 int a10;则 for (i=0;i<=10;i+) ai=i;编译时无语法错误.答案:正确题号:9695下列的语句是正确的:int *p;答案:正确填空=题号:4679C语言表达式!(3<6)|(4<9)的值是_.答案:空 1:1题号:7917已知有声明"char ch, int a;",执行语句"seanf("%c%d",&

20、amp;ch,&a);''时如果从键盘输入的数据是"123",则变量a得到的值是(_)。答案:空 1:23程序设计=题号:5362/*-【程序设计】-功能:编写函数对数组中的数据进行从小到大的排序。-*/#include <stdlib.h>#include<stdio.h>void TestFunc();void sort(int a,int n) /*Begin*/ /* End */void main() int a16,i; for(i=0;i<16;i+) ai=rand()%10+15; for(i=0;i&

21、lt;16;i+) printf("%3d",ai); printf("n-n"); sort(a,16); for(i=0;i<16;i+) printf("%3d",ai); TestFunc();void TestFunc() FILE *IN,*OUT; int n; int i10; int o; IN=fopen("in.dat","r"); if(IN=NULL) printf("Read File Error"); OUT=fopen("out

22、.dat","w"); if(OUT=NULL) printf("Write File Error"); for(n=0;n<10;n+) fscanf(IN,"%d",&in); sort(i,10); for(n=0;n<10;n+) fprintf(OUT,"%dn",in); fclose(IN); fclose(OUT);示例代码:int i,j,t; for(i=0;i<n-1;i+) for(j=0;j<n-1-i;j+) if(aj>aj+1) t=a

23、j; aj=aj+1; aj+1=t; 题号:10696/*编程题题目求一维数组中各元素的最大值、最小值。具体要求如下: 在主函数中定义一个数组 int data12:存储数组值,其初值为2,1,4,45,23,33,-7,8,5,9,0,-4 ; 求出数组a中元素的最大值、最小值并输出结果。本程序正确的输出结果为:2 1 4 45 23 33 -7 8 5 9 0 -4max=45 min=-7 */#include<stdio.h>int main()int data12=2,1,4,45,23,33,-7,8,5,9,0,-4 ,max,min,i;FILE *outf; /

24、*系统判分使用*/for(i=0;i<12;i+)printf("%d ",datai);printf("n"); /* Begin */ /* End */printf("max=%d min=%dn",max,min);/*此处将结果输出到文件"bc01.in",请勿改动,否则影响判分*/outf=fopen("bc01.in","w");for(i=0;i<12;i+)fprintf(outf,"%d ",datai);fprintf(o

25、utf,"n");fprintf(outf,"max=%d min=%dn",max,min);fclose(outf);return 0;示例代码:max=data0;min=data0;for(i=1;i<12;i+) if(datai>max) max=datai; if(datai<min) min=datai;程序填空=题号:7305/*-【程序填空】-题目:以下程序的功能是删除字符串中的指定字符,字符串和 要删除的字符均由键盘输入。-*/#include <stdio.h>void main() char str

26、80,ch; int i,k=0;/*FILL*/ gets(_); ch=getchar();/*FILL*/ for(i=0;_;i+) if(stri!=ch) /*FILL*/ _; k+; /*FILL*/ _; puts(str);答案:位置 1:str位置 2:stri!='0' 【或】 stri!=0 【或】 stri!=NULL 【或】 stri 【或】 *(str+i)!='0' 【或】 *(str+i)!=0 【或】 *(str+i)!=NULL 【或】 *(str+i)位置 3:strk=stri 【或】 *(str+k)=*(str+i

27、)位置 4:strk='0' 【或】 strk=0 【或】 strk=NULL 【或】 *(str+k)='0' 【或】 *(str+k)=0 【或】 *(str+k)=NULL题号:7927/*-【程序填空】-功能:输出1到100之间每位数的乘积大于每位数的和的数。例如:数字26,数位上数字的乘积12大于数字之和8。-*/#include <stdio.h>void main() int n,k=1,s=0,m; for(n=1;n<=100;n+) k=1; /*FILL*/ s=_; m=n; /*FILL*/ _(m>0) k*=

28、m%10; s+=m%10; /*FILL*/ _; if(k>s) printf("%d ",n); 答案:位置 1:0位置 2:while位置 3:m=m/10 【或】 m/=10程序改错=题号:8965/*- 【程序改错】:只允许修改错误代码,其他代码不允许修改!-功能:根据整型形参m,计算如下公式的值: y=1/21/81/18.1/2m*m-*/#include "stdio.h"double fun(int m) /*ERROR*/ double y=0 double x; int i=1; /*ERROR*/ while( i<

29、m) x=1.0/(2*i*i); /*ERROR*/ y=+x; i+; return(y);void main() int n; printf("Enter n: "); scanf("%d", &n); printf("nThe result is %1fn", fun(n); 答案:位置 1:double y=0; 【或】 double y=0.0; 【或】 double y=.0; 【或】 double y=0.;位置 2:while(i<=m) 【或】 while(i<m+1)位置 3:y+=x; 【或

30、】 y=y+x; 【或】 y=x+y;题号:8944/*- 【程序改错】-功能:给定n个实数,输出平均值,并统计在平均值以下(含平 均值)的实数个数。例如:n=6时,输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得 平均值为40.828335,在平均值以下的实数个数应为3。-*/int fun(float x,int n) int j,c=0; /*ERROR*/ float j=0; /*ERROR*/ for(j=0;j<=n;j+) xa+=xj; xa=xa/n; printf("ave=%fn",xa); /*ERROR*/ for

31、(j=0;j<=n;j+) if(xj<=xa) c+; /*ERROR*/ return xa;main() float x=23.5,45.67,12.1,6.4,58.9,98.4; printf("%dn",fun(x,6);答案:位置 1:float xa=0; 【或】 float xa=0.0;位置 2:for(j=0;j<n;j+) 【或】 for(j=0;n>j;j+) 【或】 for(j=0;n-1>=j;j+) 【或】 for(j=0;j<=n-1;j+)位置 3:for(j=0;j<n;j+) 【或】 for(

32、j=0;n>j;j+) 【或】 for(j=0;j<=n-1;j+) 【或】 for(j=0;n-1>=j;j+)位置 4:return c; 【或】 return (c);单项选择=题号:6961下面程序的运行结果是#include<stdio.h>main()int y=10;doy-;while(-y);printf("%dn",y-);A、1B、8C、0D、-1答案:C题号:6782有以下程序:#include<stdio.h>main()int i=0,a=0;while(i<20)for(;)if(i%5)=0)b

33、reak;else i-;i+=13;a+=i;printf("%dn",a);程序的输出结果是().A、63B、62C、23D、36答案:D题号:7232有以下程序段:int n,t=1,s=0;scanf("%d",&n);dos=s+t;t=t-2;while(t!=n);为使程序段不陷入死循环,从键盘键入的数据应该是().A、任意正奇数B、任意负奇数C、任意负偶数 D、任意正偶数答案:B题号:6790若i,j已定义成int型,则以下程序段中,内循环体的总执行次数是(). for(i=6;i>0;i-) for(j=0;j<4;

34、j+) A、30B、20C、24D、25答案:C题号:6898若有int i=0;,则以下程序段中,while 循环的循环次数是()while(i<10)if(i<1)continue;if(i=5)break;i+;A、6B、死循环,不能确定次数C、1D、4答案:B判断=题号:7186已知int k=0;则语句while(k=1)k+;将一次也不执行.答案:错误题号:6987for循环的三个表达式都可以省略.答案:正确题号:7007对于for(表达式1;表达式2;表达式3)语句来说,continue语句意味着转去执行表达式2.答案:错误题号:6899循环体如果包含一个以上的语句,

35、应该用圆括号括起来,以复合语句形式出现.答案:错误填空=题号:6792下面程序的功能是从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。请填空。#include<stdio.h>void main() int i,j,k; printf(n hong bai hei n); for(i=0;i<=3;i+) for(_; j<=5;j+) k=8-i-j; if(k<6) printf(%3d %3d %3d n,i,j,k)答案:空 1:j=1题号:6912以下程序段的输出结果是_。int i=0, sum=1; do sum

36、 +=i+; while(i < 5); printf("%dn", sum);答案:空 1:11题号:7051已知int i,s=0;执行以下程序段后的i的值是_.for(i=3;i<4;i+)s+=i;答案:空 1:4程序设计=题号:7213/*-【程序设计】-功能:能计算从1开始到n的自然数的和,n由键盘输入, 并在main()函数中输出。-*/#include <stdio.h>void bky(); int fun(int n) /*Begin*/ /* End */ main() int m; printf("Enter m:

37、"); scanf("%d", &m); printf("nThe result is %dn", fun(m); bky(); void bky() FILE *IN,*OUT; int t; int o; int c; IN=fopen("in.dat","r"); if(IN=NULL) printf("Read FILE Error"); OUT=fopen("out.dat","w"); if(OUT=NULL) printf("Write FILE Error"); for(c=1;c<=5;c+) fscanf(IN,"%d",&t); o=fun(t); fprintf(OUT,"%dn",o); fclose(IN); fclose(OUT);示例代码:int sum,i;sum =0;for(i=1;i<=n;i+)sum=sum+i;return(sum);程序填空=题号:7145/*-【程序填空】-功能:求下式的和1+1/2!

温馨提示

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

评论

0/150

提交评论