题目来自:http://blog.csdn.net/hackbuteer1/article/details/7926592 31
1、以下程序的运行结果是()
int main(void)
{
printf("%s , %5.3s\n","computer","computer");
return 0;
}
A、computer , puter B、computer, com (补两个空格,输出3个字符)
C、computer , computer D、computer , compu.ter
2、以下程序的功能是()
#include<stdio.h>
int main(void)
{
FILE *fp;
long int n;
fp = fopen("wj.txt","rb"); // rb 是以二进制形式读。 文件例:123456789
fseek(fp , 0 , SEEK_END); // SEEK_END(2)是文件尾,SEEK_CUR(1)是当前位置,SEEK_SET(0)是文件头,0L是偏移字节。
n = ftell(fp); //计算到文件头的偏移字节数,(感觉要多1) 例:10 ASKII
fclose(fp);
printf("%ld",n);
}
A、计算文件wj.txt内容的字节数
B、计算文件wj.txt的终止地址
C、计算文件wj.txt的起始地址
D、将文件指针定位到文件末尾
3、若输入B,则以下程序运行后的输出结果是()
A、error.
B、>=60
C、>=85
D、>=60<60error.
4、以下程序的输出结果是()
int power(int x , int y);
int main(void)
{
float a = 2.6 , b = 3.4;
int p;
p = power((int)a , (int)b);
printf("%d\n",p);
return 0;
}
int power(int x , int y)
{
int i , p = 1;
for(i = y ; i > 0 ; i--)
p *= x;
return p;
}
A、27 B、9 C、8 D、81
5、以下程序段的输出结果是()
A、12 B、34 C、1234 D、提示出错、无结果
6、以下程序运行后的输出结果是()
A、1 65 1 6.5
B、1 65 1.5 6.5
C、1 65 1.0 6.5
D、2 65 1.5 6.5
7、以下程序的运行结果是()(主要考察运算符的优先级)
A、1 ,2 B、1 , 1 C、0,2 D、0,1
8、以下语句的输出结果是()(主要考察逗号表达式)
A、4 B、0 C、3 D、1
逗号表达式的一般形式:
表达式1,表达式2,表达式3......表达式n
它的值为表达式n的值。
括号表达式要求按顺序逐一计算各个子表达式,并以最后一个子表达式的值作为括号表达式的结果,最后将该结果赋给变量。
printf("%d %d %d",(a,b,c),b,c);
则(a,b,c)是一个逗号表达式,它的值等于c的值。括号内的逗号不是参数间的分隔符而是逗号运算符。括号中的内容是一个整体,作为printf函数的第一个参数。
9、设有语句 char a = '\72'; 则变量a()// \为转义字符,\072转义为一个八进制数072,也就是十进制数的58 即是 \:
A、包含2个字符 B、说明不合法
C、包含1个字符 D、包含3个字符
10、已知数据表A中每个元素距其最终位置不远,为节省时间,应该采用的算法是()
A、直接选择排序
B、堆排序
C、快速排序 // 越有序越好,移动距离越小,速度越快。完全有序时,时间为O(n)
D、直接插入排序
11、以下程序段的运行结果是()
A、b B、a C、c D、d
12、在C语言中,下列()是合法的标示符。
A、4x B、1P234
C、COUNT D、short
13、C语言中的标识符只能有字母、数字和下划线三种字符组成,且第一个字符()
A、必须为字母
B、必须为字母或下划线
C、必须不是字母或下划线
D、必须为下划线
14、下面程序的输出是()
int main(void)
{
enum team { my , your = 9 , his , her = his + 3}; // 编译时直接确定值
printf("%d %d %d %d\n",my , your , his , her);
return 0;
}
A、0 9 10 13 B、0 8 11 12C、0 8 10 12 D、0 8 12 9
15、 以下程序
int main(int argc, char** argv)
{
int n = 0 , i;
for(i = 1 ; i < argc ; i++)
n = n * 10 + *argv[i]-'0';
printf("%d\n",n);
return 0;
}
经编译链接生成可执行文件tt.exe,若运行时输入以下命令行 tt 12 345 678,则程序运行的输出结果是() // argc=4 (空字符串时,argc=1)
A、136 B、12345 C、12345678 D、12
解析:主函数的第一个参数argc为整型参数,记下从命令行输入参数的个数;第二个参数argv是一个字符型的指针数组,它的每一个元素分别指向命令行输入的各字符串。在本例中argc的值为4,argv[0]指向字符串“tt”,argv[1]指向字符串“12”,argv[2]指向字符串“345”, argv[3]指向字符串“678”。程序中,通过一个for循环,遍历了后面的三个参数字符串,每次将n自乘10,然后累加argv[i]-‘0’,即第i个参数字符串的首字符减去‘0’。 一个数字字符减去‘0’字符,即可得到这个数字字符的实际数值,因此三次循环的结果是让n的值变为136,故本题应该选择A。
16、若已定义:int a[9],*p = a; 并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是()
A、++p B、a+1 C、p+1 D、a++
17、若执行下面的程序时,从键盘上输入5,则输出是()
int main(int argc, char** argv)
{
int x;
scanf("%d",&x);
if(x++ > 5)
printf("%d\n",x);
else
printf("%d\n",x--);
return 0;
}
A、7 B、4 C、6 D、518、 已知有如下的变量定义,那么第二行的表达式的值是多少() (主要考察运算符的优先级)
int main(void)
{
int x = 3 , y = 4 , z = 5;
!(x + y) + z-1 && y + z/2;
return 0;
}
A、6 B、2 C、0 D、1
19、下列运算符函数中,肯定不属于类Value的成员函数是()
A、Value operator/(Value);
B、Value operator-(Value,Value); // 两个操作数已够,无隐含指针const Value *this
C、Value operator+(Value);
D、Value operator*(int);
20、以下关于函数模板和模板函数的描述中,错误的是()
A、函数模板是定义重载函数的一种