【www.gbppp.com--经典美文】
习题一
【习题1-1】C语言源程序最多可能由________________部分组成?
A) 预处理部分 B)变量说明部分
C) 函数原型声明部分 D)函数定义部分
【习题1-2】一个完整的C语言源程序最少必须有_______。
A)若干个主函数 B)若干个函数
C)且只能有一个主函数 D)一个函数
【习题1-3】C语言以函数为源程序的基本单位最主要有利于_______。
A)程序设计结构化 B)程序设计模块化
C)程序设计简单化 D提高程序设计有效性
【习题1-4】要使得C语言编写的程序能够在计算机上运行并得出正确结果,必
须要先经过_______________________________________。
A)编辑和链接 B)编译和链接
C)修改和运行 D运行并输入数据
【习题1-5】选择一个C语言集成开发环境并启动它,然后分别输入【例1-1】、
【例1-2】、【例1-3】的源程序,依次编译、链接、运行,看看能否达到预想的结果?从中了解程序的开发过程。
习题二
一、单项选择题
【习题2-1】 已知’A’的ASCII代码是65,以下程序的输出结果是( ) #include "stdio.h"
main( )
{ int c1=65,c2=66;
printf("%c, %c",c1,c2);
}
A. 因输出格式不合法,输出错误信息 B. 65,66
C. A,B D. 65,66
【习题2-2】若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是( )
A. a=a+b,b=a-b,a=a-b; B. t=a,a=b,b=t;
C. a=t,t=b,b=a; D. t=b;b=a;a=t;
【习题2-3】 若k是整型变量,则以下程序段的输出是( )
k=-8567;
printf (“|%d|\n”,k);
A. 输出格式不正确 B. 输出为|008567|
C. 输出为|8567| D. 输出为|-8567|
【习题2-4】下列可作变量的标识符是( )
A. 3rt B. je_c C.$89 D. a+6
【习题2-5】C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )
A.必须为字母或下划线 B.必须为下划线
C.必须为字母
D.可以是字母、数字和下划线中的任一种字符
【习题2-6】 C语言并不是非常严谨的算法语言,在以下关于C语言的不严谨的叙述中,错误的说法是( )
A. 大写字母和小写字符的意义相同
B. 有些不同类型的变量可以在一个表达式中运算
C. 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型
D. 同一个运算符号在不同的场合可以有不同的含义
二、简答题
【习题2-7】 C语言数据类型有哪几类?基本数据类型包括哪几类?
【习题2-8】 C语言中十进制、八进制和十六进制整常量是如何表示的?
【习题2-9】 C语言为什么规定对所用到的变量“先定义,后使用”,这样做有什么好处?
【习题2-10】C语言中的语句有几类?控制语句有哪些?
【习题2-11】 怎样区分表达式和表达式语句?为什么有人称C为表达式语言?
【习题2-12】字符常量与字符串常量有什么区别?
【习题2-13】下面各数用八进制和十六进制数表示:
(1)10 (2)32 (3)75 (4)-617
(5)-111 (6)2483 (7)-28654 (8)21003
三、阅读程序写结果或填空
【习题2-14】写出以下程序的运行结果:
#include<stdio.h>
main()
{
char c1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c %c\n",c4,c5);
}
【习题2-15】写出以下程序的运行结果:
#include<stdio.h>
main()
{
int n=177;
printf("%o\n",n);
}
【习题2-16】写出以下程序的运行结果:
#include<stdio.h>
main()
{
int a,n=0;
n+=(a=10);
printf("%d\n",a);
}
【习题2-17】写出以下程序的运行结果:
#include <stdio.h>
main()
{
int a=5,b=7;
float x=67.8564,y=-789.124;
char c='A';
long n=1234567;
unsigned u=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n",x,y);
printf("%-10f,%-10f\n",x,y);
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%10.2e\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%ld,%lo,%x\n",n,n,n);
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%5.3s\n","COMPUTER","COMPUTER");
}
【习题2-18】写出以下程序的运行结果:
#include<stdio.h>
main()
{
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
【习题2-19】下面运算表达式的值是:
x+a%3*(int)(x+y)%2/4
设x=2.5,a=7,y=4.7
【习题2-20】下面运算表达式的值是:
(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5
【习题2-21】 写出下面赋值表达式运算后a的值,设原来a=12;
(1)a+=a (2) a-=2
(3)a*=2+3 (4) a/=a+a
(5)a%=(n%=2),n 的值等于5 (6)a+=a-=a*=a
【习题2-22】 数学表达式:-5<x<5用C语句如何表达?x>5或x<-5又是如何表达?请写出相应的C语句。
四、编写程序题
【习题2-23】 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积(4πR2)、圆球体积(V=4πR³/3)、圆柱体积。用scanf()输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。请编写程序。
5【习题2-24】 输入一个华氏温度,要求输出摄氏温度。公式为c=(F-32),9
输出要有文字说明,取2位小数。
【习题2-25】 编程序,用getchar()函数读入两个字符给cl、c2,然后分别用putchar()函数和printf()函数输出这两个字符。并思考以下问题:
(1)变量c1、c2应定义为字符型或整型?抑或二者皆可?
(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?
(3)整型变量与字符变量是否在任何情况下都可以互相代替?如“char c1,c2;”与“int cl,c2;”是否无条件地等价?
【习题2-26】编写程序,从终端键盘输入圆的半径r,圆柱的高h,分别计算出圆周c1、圆面积cs和圆柱的体积cvz。输出计算结果要求有文字说明,并取小数点后两位数字。
【习题2-27】编写程序,读入一个字母,输出与之对应的ASCII码,输入输出都要有相应的文字提示。
习题三
一、单项选择题
【习题3-1】“基本结构”不具有以下特点( )
A. 只有一个入口,只有一个出口 B. 没有死循环
C. 没有永远执行不到的语句 D. 不允许退出循环
【习题3-2】 在流程图中,菱形框表示的操作是( )
A. 数据的输入输出 B. 程序的开始
C. 条件判断 D. 赋值
【习题3-3】以下程序的运行结果是( )
#include<stdio.h>
main()
{int m=5,n=10;
printf("%d,%d\n",m++,--n);
}
A. 5,9 B.6,9
C. 5,10 D.6,10
【习题3-4】逻辑运算符两侧的数据类型( )
A. 只能是0和1 B. 只能是0或非0正数
C. 只能是整型或字符型数据 D. 可以是任何类型的数据
【习题3-5】下列关系表达式结果为假的是( )
A. 0!=1 B. 2<=8
C. (a=2*2)= =2 D. y=(2+2)= =4
【习题3-6】下列运算符中优先级最低的是( )
A. ?: B. +=
C. >= D. = =
【习题3-7】写出下面各逻辑表达式的值。设a=3,b=4,c=5。 a+b>c&&b==c
a||b+c&&b-c
!(a>b)&&!c||1
!(x=a)&&(y=b)&&0
!(a+b)+c-1&&b+c/2
二、简单题
【习题3-8】什么是算法?算法有哪些特性?从日常生活中举出几个算法的例子。
【习题3-9】算法有哪些描述方法?各有什么优缺点?
【习题3-10】结构化的算法有哪几种结构?试分别描述。
【习题3-11】选择语句和循环语句对条件的判断的标准是什么?(即何值为真、何值为假?)
三、用传统流程图表示求解以下问题的算法。
【习题3-12】有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换(即A瓶原来盛醋,现改盛酱油,B瓶则相反);
【习题3-13】依次将10个数输入,要求将其中最大的数打印出来;
【习题3-14】有三个数a、b、c,要求按大小顺序把它们打印出来;
【习题3-15】求1+2+3+…+100;
【习题3-16】判断一个数n能否同时被3和5整除;
【习题3-17】将100~200之间的素数打印出来;
【习题3-18】求两个数m和n的最大公约数;
【习题3-19】求方程式ax2+bx+c=0的根(a、b、c从键盘输入)。
四、编写程序题
【习题3-20】有一函数
(x1) x y2x-1 (1x10) 3x-11 (x100)
C++/C经典笔试题及答案
C++/C试题
本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。 笔试时间90分钟。请考生认真答题,切勿轻视。
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分) 提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: if ( n == 0 ) if ( n != 0 )
1、头文件中的 ifndef/define/endif
干什么用?
2、#include <filename.h> 和 #include “filename.h” 有什么区别? 3、const 有什么用途?(请至少说明两种) 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? 5
已知strcpy函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数 strcpy (2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
六、编写类String的构造函数、析构函数和赋值函数(25分)
已知类String的原型为: class String {
public:
String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); // 析构函数
String & operate =(const String &other); // 赋值函数 private:
char *m_data; // 用于保存字符串 };
请编写String的上述4个函数。
C++/C试题的答案与评分标准
1、头文件中的 ifndef/define/endif 干什么用?(5分) 答:防止该头文件被重复引用。
2、#include <filename.h> 和 #include “filename.h” 有什么区别?(5分) 答:对于#include <filename.h> ,编译器从标准库路径开始搜索 filename.h 对于#include “filename.h” ,编译器从用户的工作路径开始搜索 filename.h 3、const 有什么用途?(请至少说明两种)(5分) 答:(1)可以定义 const 常量
(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”? (5分)
答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为: void foo(int x, int y);
该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。
C++提供了C连接交换指定符号extern“C”来解决名字匹配问题。 5
已知strcpy函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数 strcpy char *strcpy(char *strDest, const char *strSrc); {
assert((strDest!=NULL) && (strSrc !=NULL)); // 2分 char *address = strDest; // 2分
while( (*strDest++ = * strSrc++) != „\0‟ ) // 2分 NULL ;
return address ; // 2分
C语言部分
一、选择题(每小题2分,共10分)
(下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。
1、若定义:int a[2][3]{0,2,4,6,8,10};以下描述正确的有( A,C,D,E )
A、*(a+1)为元素6的地址
这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。
B、*(a[1]+1)的值为2
为8,故B不正确
C、**(a+1)+2的值为8
这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确;
D、a[0]与a相同
因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。 E、a[1][2]的值为10
它是指第二行的第三个元素,为10,正确
2、对函数的正确使用方法描述( A,C,D )。
A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组
B、实参数组元素和形参数组元素类型可以不一致
C、形参数组长度可以不指定 D、形参数组长度可以大于实参数组长度 E、数组名做参数属于值传递
3、对静态变量的正确描述( A,B,D,E )
A、静态局部变量在静态存储区内分配单元( )
B、静态外部变量可以赋初值,也可以不赋初值
C、静态外部变量的作用与外部变量相同
D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。
E、静态局部变量只赋一次初值
4、下列描述正确的是( A ,C)。
A、由main 函数及其参数argc和* argv[]可以实现命令行方式
B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中 //先写缓冲区数据到文件中,再释放文件指针
C、字符数组并不要求它的最后一个字符是‘\0’
//是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。
D、‘A’和“A”都是字符串常量
E、若char*S=“\ta\017bc”;则指针变量S指向的字符串所占的字节数是7
5、在缓冲文件系统中用于读写的函数有( A,B,D )
A、putchar () B、fread() C、rewind () D、purw() E、fseek()
二、程序阅读,并给出运行结果(共10分,每题5分)。
(1)main()
{ unsigned a,b,x
int n;
a=0x763 输出结果:
n=6;
b=a<<(12-n);
x=(a>>n-2)^b; //+,-,的优先级比<<,>>高。
printf(“\nb=%x,\nx=%x”,b,x);
}
在用2个字节表示整数的系统中
结果为
d8c0
d8b6
在用4个字节表示整数的系统中
结果为
1d8c0
1d8b6
故以上两种结果都正确。
(2) #include 〈stdin.h〉
struct m {int x;
int *y;
} *p;
int a [4]={12,33,-40,100};
struct m b [4]={10,&a[2],9,&a[3],8,&a[0],7,&a[1]}'
main()
{
p=b; 输出结果:
printf(“%d\n”,++p->x); //->的优先级高于++,因此等于是++(p->x),为11 printf(“%d\n”,(++p)->x); //p后移一个元素,其x值为9;
printf(“%d\n”,++(*p->y));
//->的优先级高于*, 此时p已指向b[1],故*(p->y)为a[3]为100.自加后为101; }
故输出结果为:
11
9
101
三、程序设计(共10分)
设在文件a.txt和文件b.txt中分别存有两个字符串,设计一个程序将这两个字符串按依序交叉的方式合并为一个字符串(例如“aaaaa”与“bbb”的合并结果为“abababaa”,而“bbb”与“aaaaa”的合作结果为“ bababaa”,)并将结果存入文件a.txt中。
【答案】
写程序时,可以分别读取a.txt文件和b.txt文件,注意(1),无论a文件先读完还是b文件先读完,程序都能作出适应性的判断。注意(2)把a和b合并的结果,写到一个临时文件c中,最后把c的文件覆盖到a文件中,达到题意的要求。 #include<stdio.h>
main()
{
FILE *fp,*fq,*fr;
char ch;
if((fp=fopen("a.txt","r+"))==NULL)
{ printf("cannot open file a.txt");
exit(0);
网址:
}
if((fq=fopen("b.txt","r"))==NULL)
{ printf("cannot open file b.txt");
exit(0);
}
fr=fopen("c.txt","w+");
while(!feof(fp))
{
ch=fgetc(fp);
fputc(ch,fr);
if(!feof(fq))
{
ch=fgetc(fq);
fputc(ch,fr);
}
}
while(!feof(fq))
{
ch=fgetc(fq);
fputc(ch,fr);
}
rewind(fp); rewind(fr);
while(!feof(fr))
{
ch=fgetc(fr);
fputc(ch,fp);
}
fclose(fp); fclose(fq); fclose(fr);
}
1.2 四川大学2001年攻读硕士学位研究生入学考试试题 及 答案
1.2.1第2001年――C语言程序设计 题目
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码写在答题纸上。请注意注明题号。每小题1分,共计6分)
1、‘\t’表示什么?
①字符串常数 ②标识符 ③变量 ④字符常量
答案:④
2、对宏定义不正确的描述是哪一个?
①在进行宏定义时,可以引用已经定义的宏名,可以层层置换
//可以引用已经定义了的宏名,可以层层置换
②宏名的有效范围包括本文件的任何位置
//宏名的有效范围定义命令之后到本源文件结束,可以用#define终止宏定义的作用域
③宠定义不是语句,不必在行末加分号
//是预处理定义语句
④对程序中双引号括起来的字符串,即使与宏名相同,也不进行置换
3、若定义static char s[20]=”computer”;则执行语句x = strlen(s);之后,x的值为多少?
①20 ②9 ③8 ④19
//strlen函数计算char*型字符串的长度的时候,并不包含末尾的\0;
4、以下哪一个表达式取值是正确的?
①6>5结果为6 ②6&&5结果为7
③6||5结果为7 ④6<5结果为0
5、如定义
enum weekday {one, two, thr, fou, fiv};
enum weekday working;
以下哪个是不正确的枚举变量的使用?
①working = thr; ②working =2;
③working = (enum weekday)2;
④working = (enum weekday) (5-3);
//不能对其赋值
6、下列说法中正确的是哪一个?
①sizeof (char) 是结果为整型的表达式
②sizeof (char) 是一个不合法的表示形式
③sizeof (char) 是一种函数调用
④sizeof (char) 是结果为实型的表达式
二、阅读程序,并回答问题(共12分)
1、下列程序的输出是什么?(3分)
# include <stdio. h>
void main ()
﹛
char * aplha [6] = ﹛“ABC”,“DEF”,“GHI”,“JKL”,“MNO”,“PQR”﹜; char **p;
int i;
p = aplha;
for (i = 0; i<4; i++)
printf (“%s”, p[i]);
printf (“\n”);
﹜
//输出结果
ABCDEFGHIJKL
刚好是字符串数组里面的前四个元素的内容连接起来
2、下列程序为什么无法将用户输入的三个整数按从小到大排序输出?应该如何修改?(6分)
# include <stdio.h>
void swap (int x, int y)
﹛
int t = x;
x = y;
y = t;
﹜
void main ()
﹛
int a, b, c;
scanf (“%d, %d, %d”, &a, &b, &c);
if (a>b) swap (a, b);
if (a>c) swap (a, c);
if (b>c) swap (b, c);
printf (“%d, %d, %d”, a, b, c);
﹜
//函数swap采用值传递,虽然将形参x和y交换了,但是并不影响到实参。将值传递改成指针传递就可以了。
C函数参数采用值传递方式,虽然swap函数将形式参数x和y的值进行了调换,但是影响不到相应的实在参数。所以在主函数中,通过调用sawp函数调换a和b(或a或c,或b和c)的值是根本达不到目的的。
修改:
(1)(2分)
void swap (int *x, int*y)
﹛
int t = *x;
*x = *y;
*y = t;
﹜
(2)(2分)主函数
if(a>b) swap(&a,&b);
if(a>c) swap(&a,&c);
课程代码:A100002 座位号:
《计算机技术基础(C语言)》试卷A
姓名: 学号: 专业:
学院班级20 年 月 日
第一部分 选择题(共 30 分)
一、单项选择题(本大题共 15 小题,每题只有一个
正确答案,答对一题得 2 分,共 30 分)
1、以下关于C语言标识符的描述中,正确的是 【 】。
A)标识符可以由汉字组成 B)标识符只能以字母开头
C)关键字可以作为用户标识符 D)Area与area是不同的标识符 2、使下列程序段输出“123,456,78”,键盘输入数据,正确的输入是【 】。
int i,j,k;
scanf(“%d,%3d%d”,&i,&j,&k);
printf(“%d,%d,%d\n”,i,j,k);
A)12345678 B)123,456,78 C)123,45678 D)123,*45678 3、判断char类型的变量c1是否为数字字符的正确表达式为 【 】。 A) (c1>=0)&&(c1<=9) B) (c1>=’0’)&&(c1<=’9’)
C) ’0’<=c1<=’9’ D) (c1>=’0’)||(c1<=’9’)
4、若有语句int a=1,b=2,c=3;则以下值为0的表达式是 【 】。
A)’a’&&’b’ B)a<=b C)((a>b)||(b<c) D)(!(a+b)==c&&a)
5、已知:int a[2][3]; 则对数组元素的非法引用是
计算机技术基础试题 第 1页(共8页)
【 】
A. *(a[0]+2) B. a[1][3] C . a[1][0] D. *(*(a+1)+2)
6、在循环语句的循环体中执行break语句,其作用是 【 】。
A) 跳出该循环体,提前结束循环
B) 继续执行break语句之后的循环体各语句
C) 结束本次循环,进行下次循环
D) 终止程序运行
7、执行语句for(i=10;i>0;i--);后,变量i的值为
A)10 B)9 C)0 D)1
8、若有int *p1, *p2,k; 不正确的语句是
A. p1=&k B. p2=p1
C. *p1=k+12 D. k=p1+p2
9、在函数中未指定存储类别的局部变量,其隐含的存储类别是
A. 静态(static) B. 外部(extern)
C. 自动(auto) D. 寄存器(register)
10、如下程序的输出结果是
main( )
{ int x=2,a=0,b=0;
switch(x)
{ case 2: a++; b++;
case 1: ++a; b--; break;
case 0: b++;}
printf("a=%d, b=%d\n", a, b);}
A. a=2, b=0 B. a=2, b=1 C. a=1, b=1 D. a=1, b=0
11、表示关系a<b<=c的C语言表达式为
A. (a<b)&&(b<=c) B. (a<b)AND(b<=c)
C. (a<b<=c) D. (a<b)&(b<=c)
12、 有以下程序
#include <stdio.h>
main()
{int x;
scanf(“%d”,&x);
if(x<=3) ; else
if(x !=10)printf(“%d\n”,x); }
计算机技术基础试题 第2页(
本文来源:http://www.gbppp.com/jd/467110/
推荐访问:保险考试题库与答案 计算机考试题库和答案