admin 管理员组文章数量: 887021
2023年12月21日发(作者:mysql数据库80安装教程)
第一章 基础知识
1、c语言支持三种数制,下列哪个数制不支持?
A)十进制
B)八进制
C)二进制
D)十六进制
【答案】:选择C。计算机可以识别的是二进制数,八进制和十六进制的提出是为了“压缩”二进制,所以本质上八进制和十六进制一样,故而两者要么都选,要么都不选。熟悉c语言的人都知道,十进制数可以在c程序中直接使用而二进制则不可以。二进制是机器可以识别的码,在c语言中不可以直接被识别。
第二章 c语言的组成结构及数据
1、下列标识符在c语言中属于合法的用户自定义的标识符?
A)a_12 B)a12 C)3m D)do E) F)c#bh
【答案】c语言中允许的合法的用户标识符只有数字、字母、下划线,且必须以字母或者下划线开始,不能使用系统预定于的关键字作为标识符。因此,C、D、E、F均不正确。
2、在c语言中下列常量的写法正确的是?
A)①、-32767 ②、023f ③、0x123dfh
分析:①:正确。是一个十进制整型常量的正确表示法。
②:错误。以“0”开头的是八进制数,在其表示的数中只能出现0~7这七种符号。正确的写法为:023.
③:错误。以0x开头的是十六进制数,在其表示的数中只能出现0~9和A~F这十六种符号,正确的写法为:0x123df。
B)①、123.46 ②、123. ③、.456 ④、0.456
分析:以上均是c语言中实型数据的一种正确表示—小数形式。
小数形式定义:由数字和小数点组成。
C)①:123.4E4 ②、5.4E0.5 ③、4E ④、1.23e-5 ⑤:3E2
分析:②、③不正确,其余全部正确。考查实型数据的指数表示形式。
指数形式应注意:
一、字母E或e之前之后必须有数字,且后必须是整数。
二、字母E或e的前后及各数字之间不能有空格。
C)①、”abbchkdl” ②、”a” ③、”” ④、’’ ⑤、’n’ ⑥、’’
分析:④、⑥不正确,其余全部正确。考查字符型常量和字符串常量的表示方法。
字符型常量应注意:
一、有一对单引号括一个字符。
二、转移字符常量,必须以一个反斜杠””开头。
字符串常量应注意:
一、用一对双引号括起来若干个字符。
3、若int a,b;,则表达式a=3,b=1,b=a+b;的值为 4 ,此时a= 3 ,b= 4 。
分析:逗号表达式的形式为:表达式1,表达式2,………,表达式n。
功能:逗号表达式的值就是表达式n的值,求值顺序是从左至右依次求解。
令注:可以编写如下程序对题目结果进行验证。
#include
void main()
{
int a,b;
printf("%d n",(a=3,b=1,b=a+b));
printf("a=%d , b=%dn",a,b);
}//程序
运行结果,如下图所示:
4、若float x=123.456,y=0.6;求解下列表达式的值。
1)、(int) x= 123 ,(int) (x)= 123 。
2)、(int) x+y= 123.600000 ,(int)(x+y)= 124 。
分析:此题考查了强制类型转换以及不同类型的数据在做算术运算时最终结果如何得到。
(int)x:表示对浮点型x进行强制类型转化为整型。
(int)x+y:表示将x强制类型转换成整型后,再与浮点型数据y进行相加运算。由于浮点型数据高于整型,故而整个表达式的结果为浮点型数据且与y保留一样位数的小数。
令注,可以编写如下程序对题目进行验证。
#include
void main()
{
float x=123.456,y=0.6;
printf("%dn",(int)x);
printf("%dn",(int)(x));
printf("%fn",(int)x+y);
printf("%dn",(int)(x+y));
}//程序
运行结果,如下图所示:
第三章 顺序结构
顺序结构程序设计示例:
编写一个求某同学的3门课程的平均成绩程序。
程序如下:
#include
void main()
{
int a,b,c;
float average;
a=87;
b=69;
c=95;
average=(a+b+c)/3;
printf("该同学3门课程的平均成绩为:");
printf("%fn",average);
}//程序
程序运行结果,如下图所示:
以上就是一个顺序结构程序的示例。
1、 若char a,b;a=getchar();b=getchar();当进行如下输入时,分别求a,b的值。
1)、输入:fg<回车>,则a= f ,b= g 。
2)、输入:f,h<回车>,则a= f ,b= , 。
3)、输入:f<回车><回车>,则a= f ,b= <回车>。
分析:此题考查了getchar()函数的使用,该函数的输入可以是键盘上的任意字符。
第五章 循环结构
1、编写一个由goto和if语句组合使用的循环语句的程序,实现1+2+3……+100。
编写的程序如下:
#include
void main()
{
int i,sum;
i=0;
sum=0;
LP:sum=sum+i;//此时LP为标号
i=i+1;
if(i<=100)goto LP;//转向LP标号所在的行
printf("sun=1+2+3+....+100=%dn",sum);
}//程序
程序运行结果如下图所示:
2、如果x=3,求如下程序的输出结果 1 -2 。
do
printf("%dt",x-=2);
while(!(--x));
分析:根据“直到型循环”的特点,依次判断程序每走一步的变量x的值。
令注:可以编写如下程序验证题目:
#include
void main()
{
int x=3;
do
printf("%dt",x-=2);
while(!(--x));
}//
程序运行的结果如下图所示:
第九章 指针
1、阅读如下程序,写出运行结果 .
void fun(int *x,int *y)
{
printf("%d %dn",*x,*y);
*x=3;
*y=4;
}
void main()
{
int x=1,y=2;
fun(&y,&x);
printf("%d %dn",x,y);
}
答案:2 1
4 3
可以编写如下程序对题目进行验证。
#include
void fun(int *x,int *y)
{
printf("%d %dn",*x,*y);
*x=3;
*y=4;
}
void main()
{
int x=1,y=2;
fun(&y,&x);
printf("%d %dn",x,y);
}//
程序运行结果,如下图所示:
2、阅读如下程序,写出运行结果 .
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void main()
{
int a,b;
int *p1=&a,*p2=&b;
a=1;
b=2;
swap(p1,p2);
printf("%d %dn",*p1,*p2);
}//
答案:1 2.
可以编写如下程序对题目进行验证。
#include
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void main()
{
int a,b;
int *p1=&a,*p2=&b;
a=1;
b=2;
swap(p1,p2);
printf("%d %dn",*p1,*p2);
}
程序运行的结果,如下图所示;
3、阅读如下程序,写出运行结果 .
void swap(int *p1,int *p2)
{
int *temp;
temp=p1;
p1=p2;
p2=temp;
}
void main()
{
int a,b;
int *p1=&a,*p2=&b;
a=1,b=2;
swap(p1,p2);
printf("%d,%dn",*p1,*p2);
}
可以编写如下程序对题目进行验证。
#include
void swap(int *p1,int *p2)
{
int *temp;
temp=p1;
p1=p2;
p2=temp;
}
void main()
{
int a,b;
int *p1=&a,*p2=&b;
a=1,b=2;
swap(p1,p2);
printf("%d,%dn",*p1,*p2);
}//
程序运行的结果,如下图所示;
4、阅读如下程序,分析是否有误?如果有请说明错误原因。
#include
void swap(int *p1,int *p2)
{
int *temp;
*temp=*p1;
*p1=*p2;
*p2=*temp;
}
void main()
{
int a,b;
int *p1=&a,*p2=&b;
a=1;
b=2;
swap(p1,p2);
printf("%d,%dn",*p1,*p2);
}//
答案:本程序有错误。原因swap()函数中的temp指针变量没有指定其所指向的内容,程序运行时其指向地址是随机的。如果在程序运行期间其所指向的单元为系统空间,则很危险。
如下图所示,编译程序时,编译器有警告的提示。
第十章 构造类型
1、若double a,double *b,double c[5],char *d[3];则求下列各值。
1)、sizeof(a)= 8 。
2)、sizeof(b)= 2 。
3)、sizeof(c)= 40 。
4)、sizeof(d)= 6 。
分析:double 类型的变量b占8个字节。
任何类型的指针类型变量均占两个字节。
令注:可以编写如下程序对题目进行验证。
#include
void main()
{
double a,*b,c[5];
char *d[3];
printf("sizeof(a)=%dn",sizeof(a));
printf("sizeof(b)=%dn",sizeof(b));
printf("sizeof(c)=%dn",sizeof(c));
printf("sizeof(d)=%dn",sizeof(d));
}//
程序运行结果如下图所示:
2、 编写一个程序实现用三种方法访问结构体中的成员
#include
struct student
{
int num;
char name[20];
char sex;
float score;
};
void main()
{
int i;
struct student stu[3]={{1000,"zhang",'M',60},{1002,"li",'W',70},{1003,"wang",'W',90}};
struct student *p=stu;
printf("输出结构体中数据的方法之一:n");
for(i=0;i<3;i++)
printf("%d %s %c %fn",(p+i)->num,(p+i)->name,(p+i)->sex,(p+i)->score);
printf("输出结构体中数据的方法之二:n");
for( i=0;i<3;i++)
printf("%d %s %c %fn",(*(p+i)).num,(*(p+i)).name,(*(p+i)).sex,(*(p+i)).score);
printf("输出结构体中数据的方法之三:n");
for( i=0;i<3;i++)
printf("%d %s %c %fn",stu[i].num,stu[i].name,stu[i].sex,stu[i].score);
}//
运行结果如下图所示:
3、 若有如下定义的结构体类型变量,求sizeof(a)= 16 ,sizeof()= 4 。
struct data
{
int day;
int mouth;
int year;
union
{
int shar1;
float share2;
}share;
}a;
分析:共用体变量所占的字节为其中占字节数最多的成员所占的字节。
结构体变量所占的字节为其中所有成员所占的字节数之和。
令注:可以编写如下程序对题目进行验证。
#include
struct data
{
int day;
int mouth;
int year;
union
{
int shar1;
float share2;
}share;
}a;
void main()
{
printf("%d %dn",sizeof(a),sizeof());
}//
程序运行结果如下图所示:
4、求如下程序的运行结果 0 。
#include
union myun
{
struct
{
int x,y,z;
}u;
int k;
}a;
void main()
{
a.u.x=4;
a.u.y=5;
a.u.z=6;
a.k=0;
printf("%dn",a.u.x);
}//
分析:本题考查了共用体变量中其成员共享用一段内存。
程序运行结果如下图所示:
5、阅读如下程序并求其输出结果 2 。
#include
void main()
{
union
{
char i[4];
int k;
}r;
r.i[0]=2;
r.i[1]=0;
r.i[2]=0;
r.i[3]=0;
printf("%dn",r.k);
}//
分析:本题考查了共用体类型变量中成员共享同一内存单元,考查了变量在内存中的存储形式,低地址在高位,高地址在低位。
程序运行结果如下图所示;
第十一章 位运算
1、 int b=2;求表达式(b>>2)/(b>>1)的值 0 。
分析:“>>”是按位右移运算符。如果参与右移位运算的操作数为一个负数并且不能被2的n次方整除则得到的数为商加1。
令注:可以编写如下程序对题目进行验证。
#include
void main()
{
int b=2;
printf("%dn",(b>>2)/(b>>1));
}//
程序运行结果如下图所示:
2、 int x=040;求表达式x<<1= 100 。
分析:“<<”是左移运算符。对一个十进制数左移n位后得到的值为该数乘以2的n次方的积。
令注:可以编写如下程序对题目进行验证。
#include
void main()
{
int x=040;
printf("%on",x<<1);
}//
程序运行结果如下图所示。
3、 求如下程序在屏幕上的输出结果是什么?
#include
void main()
{
printf("1|0=%d 0|1=%d 0|0=%d 2|5=%dn",1|0,0|1,0|0,2|5);
printf("5&1=%d 5&9=%dn",5&1,5&9);
printf("~2=%d ~9=%d ~-10=%dn",~2,~9,~-10);
printf("1^2=%d 2^7=%d 4^8=%dn",1^2,2^7,4^8);
}//
程序运行结果如下图所示。
版权声明:本文标题:c语言考研练习习题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1703142364h439728.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论