c语言标识符等价类测试,c语言基础测试题--牧码南山招新检测题

1.请为下列代码段添加注释

#include

int main(){

printf("To c , or not to c , that is the question ./n");

return 0;

}

答案

#include //头文件 包含了标准输入/输出库的相关信息

int main(){ //主函数 必不可少

printf("To c , or not to c , that is the question ./n"); //printf函数功能是输出信息 /n用于换行

return 0; //程序终止时向操作系统返回值0

}

2. Dr.张 编写了一个demo01.c 程序 ,若想生成可执行文件 , 需经过

第一步: ___________

第二步:___________ ,生成 ___________ 后缀的文件

第三步:___________ ,生成 ___________ 后缀的文件

答案

预处理

编译 .obj

连接 .exe

3.写出两种注释方法

作答区:

答案

第一种:

// int a=8;

第二种:

/*

int a=8;

int b=10;

*/

4.常量分为整型常量 、 实型常量 和 字符型常量 ,字符型常量在计算机中是以 ___________ 形式存储的 .

作答区:____________________________________________________________

答案

ascii码

5.字符'a'的ascii码是___________, 字符'A'的ascii码是___________.

作答区:_____________________________ _______________________________

答案

97,65

6.转义字符

转义字符|字符值

---|:--:|---:

'|

"|

?|

\||

\a|

\b|

\f|

\n|

\r|

\t|

\v|

\o、\oo|

\xh[h...]|

答案

转义字符|字符值

---|:--:|---:

'|'

"|"

?|?

\||

\a|警告

\b|退格

\f|换页

\n|换行

\r|回车

\t|水平制表符

\v|垂直制表符

\o、\oo|与该八进制码对应的ascii字符

\xh[h...]|与该十六进制码对应的ascii字符

7.常见数据类型的存储空间与所占字节数(默认带符号数)

类型|字节数

---|:--:|---:

int|

short|

long|

long long|

float|

double|

long double|

char|

答案

类型|字节数

---|:--:|---:

int|2

short|1

long|4

long long|8

float|4

double|8

long double|8

char|1

8.程序改错

#include

int mian(){

double a , b , c , disc , x1 , x2 , p , q;

scanf("%f%f%f", a , b , c);

disc = b*b-4*a*c;

p=-b/(2.0*a);

q=sqrt(disc)/(2.0*a);

x1 = p+q;

x2 = p-q;

printf("x1 = %7.2f\nx2 = %7.2f\n",x1,x2)

return 0;

}

答案

#include

#include

int mian(){

double a , b , c , disc , x1 , x2 , p , q;

scanf("%lf%lf%lf", &a , &b , &c);

disc = b*b-4*a*c;

p=-b/(2.0*a);

q=sqrt(disc)/(2.0*a);

x1 = p+q;

x2 = p-q;

printf("x1 = %7.2f\nx2 = %7.2f\n",x1,x2);

return 0;

}

9.请完善/改正下述宏定义:

#define MAX(a,b) a > b ? a : b

作答区:____________________________________________________________

SEC_PER_YEAR 用宏定义来表示一年中有几秒

#define SEC_PER_YEAR (365*24*60*60)

作答区:____________________________________________________________

答案

#define MAX(a,b) (((a) > (b)) ? (a) : (b))

#define SEC_PER_YEAR (365*24*60*60)UL

解析

本题的四个要点

1.不要吝啬括号

2.宏定义中当第一个数字出现在程序中,它的类型默认是int

3.3652460*60 超过了int的范围

4.强制类型转换成UL类型(无符号长整型)

10.判断题:c语言是区分大小写的 ( )

作答区:____________________________________________________________

答案

11.简述标识符命名规范

作答区:

答案

1.由字母、数字、下划线组成

2.数字不能放第一位

12.判断下列哪些是C语言的关键字

(a) for

(b) If

(c) main

(d) printf

(e) while

作答区:____________________________________________________________

答案

√×√√√

13.下面的printf函数调用产生的输出结果分别是什么?

printf("%10.6f\n",30.253);

printf("%-7.4f\n",83.162);

作答区:

答案

30.253000

83.1620

14.假设scanf函数调用的格式如下:

scanf("%f%d%f\n",&x,&i,&y);

如果用户输入:

12.3 45.6 789

则你预测调用执行后,x,i,y的值分别是:

作答区:____________________________________________________________

答案

x=12.3

i=45

y=0.6

15.读代码,预测输出值

#include

int main(){

int i=1 , j=1;

printf("i is %d\n",++i);

printf("i is %d\n", i);

printf("j is %d\n",j++);

printf("j is %d\n", j);

return 0;

}

作答区:

答案

i is 2

i is 2

j is 1

j is 2

16.编程题:编写一个程序,要求用户输入一个两位数,然后按位数的逆序打印输出,程序会话应类似下面这样:

Enter a two-digit number: 28

The reversal is: 82

作答区:

17.编程题:利用switch编写一个程序,把用数字表示的成绩转化为字母表示的等级,程序会话应类似下面这样:

Enter numerical grade: 84

Letter grade: B

依据 [ A:90~100 B:80~89 C:70~79 D:60~69 F:0~59 ]

作答区:

参考答案

/* 用数字表示的成绩转化为用字母表示的等级*/

#include

int main()

{

int a,b;

printf("Enter numerical grade:");

scanf("%d",&a);

if(a>=0 && a<=100)

{

a=a/10;

switch(a)

{

case 0:

case 1:

case 2:

case 3:

case 4:

case 5:printf("Letter grade: F");break;

case 6:printf("Letter grade: D");break;

case 7:printf("Letter grade: C");break;

case 8:printf("Letter grade: B");break;

case 9: case 10: printf("Letter grade: A");break;

}

}

else

printf("wrong");

return 0;

}

18. 说说do while 和 while 的异同

19. 编写程序,要求用户输入两个整数,然后计算并显示这两个整数的最大公约数(GCD),程序会话应类似下面这样:

Enter two integers:12 28

Greaest common divisor: 4

提示:求最大公约数的经典算法是Euclid算法,方法如下:分别让变量m和n存储两个数的值。如果n为0,那么停止操作,m中的值是GCD;否则计算m除以n的余数,把n保存到m中,并把余数保存到n中,重复上述过程,每次都先判定n是否为0.

作答区:

参考答案

#include

int main()

{

int m,n,c,min;

printf("Enter two integers:");

scanf("%d %d",&m,&n);

if(m==0 && n!=0)

printf("Greatest common divisor: %d\n",n);

if(n==0 && m!=0)

printf("Greatest common divisor: %d\n",m);

if(m!=0 && n!=0)

{

while(m!=0 && n!=0)

{

if(m>n)

{

c=m%n;

min=n;

}

else

{

c=n%m;

min=m;

}

n=min;

m=c;

}

printf("Greatest common divisor: %d\n",n);

}

if(m==0 && n==0)

printf("非法输入");

return 0;

}

20. 强制类型转换:修改下述代码

#include

int main()

{

long i;

int j = 1000;

i = j*j;

return 0;

}

作答区:

答案

#include

int main()

{

long i;

int j = 1000;

i = (long)j*j;

return 0;

}

21. 用文字或代码解释sizeof()

作答区:

答案

文字:sizeof运算符允许程序存储指定类型值所需空间的大小

代码:printf("Size of int:%lu\n",(unsigned long)sizeof(int));

22. 编程题:打印出所有的“水仙花数”,所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身

作答区:

答案

#include

int main()

{

int i,count = 0;

int i2,i1,i0;

for (i=100;i<1000;i++)

{

i2 = i / 100;

i1 = i / 10 % 10;

i0 = i % 10 ;

if (i2 * i2 * i2 + i1 * i1 * i1 + i0 * i0 * i0 == i)

{

printf("%d ",i);

count ++;

}

}

printf("\nthe count is:%d\n",count);

return 0;

}

23.编程题:递归地计算n! 提示:n!=n*(n-1)!

作答区:

答案

#include

int fact(int n);

int main()

{

int n;

n = fact(10);

printf("%d\n",n);

return 0;

}

int fact(int n){

if(n <= 1)

return 1;

else

return n*fact(n-1);

}

23. 编程题:手写任意一个排序算法

作答区:

24. 请声明一个指针变量p

25. 请初始化上述你声明的指针变量指向一个对象i

26. 将上述两个问题合并成一句代码,在声明变量的同时进行初始化

27. 预测结果:

#include

int main()

{

int *p,i;

p = &i;

i=1;

printf("%d\n",i);

printf("%d\n",*p);

*p=10;

printf("%d\n",i);

printf("%d\n",*p);

return 0;

}

作答区:____________________________________________________________

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值