1.请为下列代码段添加注释
#include<stdio.h>
int main(){
printf("To c , or not to c , that is the question ./n");
return 0;
}
答案
#include<stdio.h> //头文件 包含了标准输入/输出库的相关信息
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<stdio.h>
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<stdio.h>
#include<math.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
int main()
{
long i;
int j = 1000;
i = j*j;
return 0;
}
作答区:
答案
#include<stdio.h>
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 <stdio.h>
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<stdio.h>
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<stdio.h>
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;
}
作答区:____________________________________________________________