安徽大学C语言期末复习题

1. 一个C程序的组成部分可以是(  )。

A) 一个主函数和一至若干个其他函数 B) 一至若干个主函数

C) 一个主程序和一至若干个其他函数 D) 一个主程序和一至若干个子程序  

2. 一个C程序的执行是从(  )。

 (A)本程序的main函数开始,到main函数结束

 (B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束  (C)本程序的main函数开始,到本程序文件的最后一个函数结束  (D)本程序文件的第一个函数开始,到本程序main函数结束  

3. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(  )。  A) 必须为字母 B) 必须为下划线 C) 必须为字母或下划线  D) 可以是字母、数字和下划线中任一种字符   

  4. 设有定义:int m=1,n=-1;则执行语句printf("%d\n",(m--&++n);后的输出结果是(  )。 A) –1     B) 0         C) 1     D) 2   

  5. 表达式11&10的结果用二进制表示为(  )。 A)11    B)3     C)1     D)10  

6. 设有语句int a=3;则执行语句a+=a-=a*a后,变量a的值是(  )。  (A) 3   (B) 0   (C) 9    (D) -12  

7. 在下列选项中,不的赋值语句是( )。

A)t/=5;    B)n1=(n2=(n3=0));       C)k=i= =j;    D)a=b+c=1;  

8. 下列(     )表达式不满足:当x的值为偶数时值为"真",为奇数时值"假"。  A)X%2= =0              B) ! x%2 !=0   C)(x/2 * 2-x)= =0     D) !(x%2)  

  9. 若有定义: int a=8, b= 5, c; 执行语句c=a/b+0.4 后 c的值为() A) 1.4   B)1     C) 2.0    D)2   

10. 假设a=3,b=4,c=5,则逻辑表达式:

   !(a+b)+c-1&&b+c/2的值是(   )。         A)true    B)false    C)0    D) 1  

  11. 若int a=3,b=4;则执行c=a++>2||b-->=4之后, b变量的值为(  )。    A)3    B)0     C)4      D)2  

12. 以下哪个表达式的值为4(  )

 A)11/3  B)11.0/3     C)(flaot)11/3    D)(int)(11.0/3+0.5)  

  13. 若变量a,i已经正确定义,且i已经正确赋值,合法的语句是() A) a==1  B) ++i   C)  a=a++=5   D)a=int(i)  

  14. 以下程序的输出结果是() int a=1234; printf("%2d",a);

A) 12   B) 34    C)1234      D) 提示错误,无结果  

  15. 设x,y分别为单精度和双精度类型变量,则下列选项(  )可将表达式x+y的运算结果强制转换为整型数据。

A) (int)x+y    B) int(x)+y     C) int(x+y)    D) (int)(x+y)  

16. 当a=3,b=2,c=1时, 表达式f=a>b>c执行完后f的值是( )                        A)1    B)0     C)3        D)2  

  17. 若x=2,y=1,则表达式x>y?1:1.5的值为(   )                          A)1   B)1.5   C)1.0    D)2  

  18. 在位运算中,操作数每左移一位,其结果相当于( )                             

A)操作数乘以2   B)操作数除以2  C)操作数乘以4   D)操作数除以4  

  19. 在位运算中,某操作数 右移3位,其结果相当于( )                           

A)操作数乘以6   B)操作数除以6  C)操作数乘以8   D)操作数除以8  

  20. 在C语言中,若以下变量均为int型,则下面程序段的输出结果是(  )。     

 s=6,u=6; u=s++; u++;       printf("%d",u);  

A)7    B)6   C)5    D)4    

21. 若有定义:int x,y; char a,b,c;并有以下输入数据:x=1 2 A B C<CR>,

则能给x赋整数1,给赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的程序段是( )

  1. scanf("x%d y=%d",&x,&y);   a=getch();b=getch();c=getch();
  2. scanf("x=%d%d",&x,&y);

  a=getch();b=getch();c=getch();

C)scanf("x=%d%d%c%c%c",7x,&y,&a,&b,&c);

D)scanf("x=%d%d%c%c%c%c%c",&x,&y,&a,&b,&b,&c,&c);  

  1. 如下程序: #include <stdio.h>

              void main()

              { int m,n,k;

              m=(n=4)+(k=10-7);          printf(“m=%d\n”,m);        }

              运行后m的值为(  )。

  (A)4     (B)3       (C)7      (D)14  

23. 结构化程序的三种基本结构是(  )。

(A)顺序结构、选择结构、循环结构   (B)递归结构、循环结构、转移结构 (C)嵌套结构、递归结构、顺序结构   (D)循环结构、转移结构、顺序结构   

24. 有如下程序  main( )  

{ float x=4.0,y;   if(x<0.0) y=0.0;  

 else if(x<10.0) y=1.0/x;    else y=1.0;  

  printf(“%f\n”,y);  }  

该程序的输出结果是 ( )

A) 0.0   B) 0.25   C) 0.5  D) 1.0  

25. 设int a=0,b=5,c=2;选择可执行x++的语句是( )。 (A)if(a) x++    (B)if(a=b) x++; (C)if(a=<b) x++; (D)if(!(b-c)) x++;  

26. 下列程序段运行后,x的值是( )。 int a,b,c,x; a=b=c=0;x=35; if(!a) x--; else if(b); if(c) x=3; else x=4;

A)3  B)4  C)34   D)35  

  27. 若要求在if后一对圆括号中表示a不等于0的关系,则能表示这一关系的表达式为 A)a<>0      B)!a        C)a=0       D)a   

28. 若N为整型变量,则for(N=10;N=0;N--);循环里的循环体被(  )。

A) 无限循环       B) 执行10次    C) 执行一次       D) 一次也不执行

  29. 下列程序段运行后i的值是( )。 int i=10 switch(i+1)

 {case 10:i++;break;  case 11:++i;

 case 12: ++i;break;  default:i=i+1;  }

A)11  B)13  C)12  D)14  

30. 以下程序的输出结果为(  )。 #include <stdio.h>  main() { int i;

  for (i=0;i<10; i++) ;   printf("%d",i); }

(A) 0   (B) 123456789  (C) 0123456789  (D) 10  

  31. C语句for(;;){ „„}是指(  )。

(A)无意义    (B)无限循环    (C)循环执行1次   (D)循环执行0次  

32. 有如下程序  main( )  

{ int x=1,a=0,b=0;  switch(x){  

case 0: b++;  case 1: a++; case 2: a++;b++; }  

printf(“a=%d,b=%d\n”,a,b);  }  

该程序的输出结果是 ( ) A) a=2,b=1    B) a=1,b=1   C) a=1,b=0    D) a=2,b=2   

33. 如果程序中有 #include "文件名" 则意味着( )。

(A) 将"文件名" 所指的该文件的全部内容,复制插入到此命令行处。 (B) 指定标准输入输出    (C) 宏定义一个函数  (D) 条件编译说明   

34. 要将一个整数12000分别以ASCII码文件和二进制文件形式存放,各自所占的存储空间数分别是( )字节。

A)5和2   B)2和5   C) 2和2  D) 5和5     

  35. 在下面关于一维数组的定义中,其中(  )有语法错0。 A) int x[ ] = {1,2,3,4,5};  B) int x[5] = {0}; C) int x[ ];                D) int x[5];  

  36. 设有字符数组a,则的输入语句是(  )。

(A) gets(''a'');    (B) scanf("%c",a);    (C) scanf("%s",a);   (D) gets("a");  

  37. 函数调用“strcat(strcpy(str1,str2),str3)” 的功能是(  )。 (A)将字符串str1复制到字符串str2后再连接到字符串str3之后 (B)将字符串str1连接到字符串str2后再复制到字符串str3之后

(C)将字符串str2复制到字符串str1后再将字符串str3连接到str1之后 (D)将字符串str2连接到字符串str1后再将str1复制到字符串str3中  

  38. 定义如下变量和数组: int i;

int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是(  )。

for(i=0;i<3;i++)  printf("%d ",x[i][2-i]);

A)1 5 9       B)1 4 7      C)3 5 7     D)3 6 9    

39. C语言中,以下叙述中错误的是(  )。

A) 主函数中定义的变量是全局变量   B) 同一程序中,全局变量和局部变量可以同名 C) 全局变量的作用域从定义处开始到本源程序文件结束 D) 局部变量的作用域被限定在其所定义的局部范围中  

  40. C语言中,函数调用时若实参是数组名,则被调函数对应形参(  )。 A) 可以是相应类型简单变量   B) 必须是相应类型数组名

C) 可以是相应类型数组名     D) 必须是相应类型的指针变量  

  41. 在下面C语言的函数说明语句中,的是(  )。 A) int fun(int , int);   B) int fun(int x,y); C) int fun(x,y);         D)int fun(int x; int y);  

  42. 若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件读写方式字符串应是(  )。   A)”a+”  B)”r+”    C)”wb+”   D)”ab”    

43. C语言中规定,简单变量做实参时,它和对应形参之间的数据传递方式是(  )。

(A)地址传递   (B)单向值传递  (C)有实参传给形参,再由形参传回给实参    (D)由用户指定传递方式     

  44. 已知:int *p; 使用“p = malloc(sizeof(int));”语句动态申请int型的存储单元,应当使用(  )。

A)int   B)int*    C)(*int)   D)(int*)     

  45. 在C函数中,局部变量的隐含存储类型是(  )。

 (A) auto    (B) static    (C) register    (D) extern    

46. 有定义:int x,*p;,能使指针变量p指向变量x的语句是(  )。 A) *p=&x;    B) p=&x;          C) *p=x;    D) p=*&x;     

  47. 有定义:int x,y=10,*p=&y;,则能使得x的值也等于10的语句是(  )。 A) x=p;    B) x=&p;            C) x=&y;    D) x=*p;    

  48. 有定义:int *p1,*p2;,则的赋值语句为(  )。

A) p1=p2;    B) p1/=p2;                  C) p1+=p2;    D) p1*=p2;     

  49. 在C语言中,关于文件存取方式,(    )。

A、只能顺序存取 B、只能随机存取(也称直接存取)  

C、可以顺序存取,也可以随机存取 D、只能从文件开头存取       

  50. 有定义:int a[]={1,3,5,7,9},*p=a;,则值为5的表达式是(  )。

  1. p+=2, *p++   B) p+=2, *++p     C) p+=2, (*p)++  D) a+=2, *a         

填空 

1.将百分制成绩转化为A-E这5个等级,90以上为A;80-89为B;70-79为C;60-69为D,60以下为E Void main() {

   Int  score;

   printf(“输入一个介于0-100之间的数”);    scanf(“ __1___” , &score);    ___2___(score/10) {

   case 10:printf(“A\n”);  break; case 9:printf(“A\n”);  break; case 8:printf(“B\n”);  break; case 7:printf(“C\n”);  break; case 6:printf(“D\n”);  break;

   ____3___:printf(“E\n”,score);  break; } }   

2.输入三角形三条边长度a,b,c,判断能不能组成三角形.如果可以输出YES ,如果不能输出NO main() {

___4__ a, b, c;

scanf(“%f%f%f”,&a,&b,&c);

if((a+b>c)&&(a+c>b)&&(b+c>a)) printf(“YES”); ___5__

printf(“NO”); }    

3计算1---100的和 main () {

int i,sum; sum=0; i=___6___; do {

  sum=sum+i;   i++   

  }while(i<=___7___); printf("%d\n",sum); }

for(i=2;i<n;i++)    if(n%i==0)      {

       flag =0;

        _____11___;       }

     if(flag!=0)       printf("yes");        else

       printf("no"); }

    4、* 计算每个学生成绩的平均分,并把结果保存在数组bb中。

例如,当score[N][M]={{83.5,82,86,65,67},{80,91.5,84,99,95},{90.5,95,86,95,97}}时,三个学生的平均分为76.7,89.9,92.7。 #include <stdio.h> #define N 3 #define M 5

void __8___ (int x,int y,float cc[],float aa[][5]) { int i,j;

for(i=0;i<x;i++)  {

for(j=0;j<y;j++) cc[i]+=aa[i][j]; cc[i]/=y;  } }

void main() {  int i;

 static float score[N][M]={{83.5,82,86,65,67},{80,91.5,84,99,95},{90.5,95,86,95,97}};  float __9___[N];  for(i=0;i<N;i++) bb[i]=0;

 Fun(N,M,bb,score);  for(i=0;i<N;i++)

printf("\nstudent%d\taverage=%5.1f",i+1,bb[i]);  printf("\n"); }     

5.判断某个大于2的证书是否是素数  

main() {

  int n, i, flag;

  scanf("%d", __10___);

  for(i=2;i<n;i++)    if(n%i==0)      {

       flag =0;

        _____11___;       }

     if(flag!=0)       printf("yes");        else

       printf("no"); }   

6.输出程序的运行结果 main() {

   int a, b;

    int *p_1, *p_2;     a=100;      b=10;       p_1=&a;      p_2=&b;

     printf("%d%d",*p_1,*p_2); }

运行结果____12_____  ,____13______   

7.打印9*9乘法表,输出格式要求为: 1*1=1

2*1=2  2*2=4

3*1=3  3*2=6  3*3=9  

main() {

 int m,n  

  for(m=1; m<=9;m++)    {

     for(n=1;n___14____m;n++)

        printf("%d*%d=%2d",m,m,m*n);          printf("___15___");     } }  

   编程

1. * 编写程序:

* 计算20到30的每个整数立方根之和(保留小数点后两位) 参考答案:

#include <stdio.h> #include <math.h> int main()

 {  int i;double s=0;

     for(i=20; i<=30; i++)

     s=s+pow(i,1.0/3);    //如果平方根改为s=s+sqrt(i);       printf("%.2f\n",s);      return 0;  }

运行结果:32.11   

* 编写程序:

* 读取文件wj6.txt中数据,一行为一组,作为三角形三边长,统计有多少组能组成三角形。 参  考答案:

#include <stdio.h> int main()

 {  int a,b,c,k=0; FILE *p;

p=fopen("D:\\wj6.txt","r");   while(!feof(p))

  {fscanf(p,"%d%d%d",&a,&b,&c);   if(a+b>c&&b+c>a&&c+a>b)  k++;    }

printf("%d\n",k);   fclose(p);      return 0;  }   

C语言001 选择

1.A 2.A 3.C 4.B 5.D 6.D 7.D 8.B 9.B 10.D 11.C 12.D 13.B 14.C 15.D 16.B 17.C 18.A 19.D 20.B 21.D 22.C 23.A 24.B 25.B 26.B 27.D 28.D 29.C 30.D 31.B 32.A 33.A 34.A 35.C 36.C 37.C 38.C 39.A 40.C

41.A 42.C 43.B 44.D 45.A 46.B 47.D 48.A 49.C 50.A

 填空

1.%d  2.case  3.default  4.float  5.else  6. 1  7. 100  8. Fun  9.bb  10. &n  11.break 12.100  13. 10 14.<=  15.\n

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计科 执念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值