您的位置:

c语言考题解析,c语言题目解答

本文目录一览:

C语言的一道计算结果分析试题,百思不得其解,大家分析下,谢了

2473CR

while((c=getchar())!=’\n’)

{

switch(c-‘2’) {

case 0:

case 1:putchar(c+4); //第一次输入c=‘2’,c-'2'=0,走到这里,输出c+4='2'+4='6' 没有break继续下面case 2的语句 再输出一次c+4=6 第四次输入3,c-'2'=1走到这里,同第一次会输出两个c+4=‘7’

case 2:putchar(c+4);break; //第二次输入'4' c-'2'=2走到这里,输出c+4='4'+4='8' 然后break

case 3:putchar(c+3);

default:putchar(c+2);break; //第三次输入'7' c-'2'=5走到这里,输出c+2='7'+2='9' 然后break

}

所以答案是A 668977

几个常见的C语言面试题分析

一次去一个小公司面试,没有太重视,当时由于工作甚忙,也没作准备。他们给我的试卷有大量的题,规定一个小时必须做完,一看题量,吓了一大跳,题有链表,有多维数组,有大量的程序阅读,幸亏基本功还算扎实,未辱使命,差强完成。等到做到编程题时,才发现自己太长时间没有写过程序了,让一些琐碎的改BUG工作和代码维护浪费了太多的精力。一直做下去,心里暗暗吃惊,一个小时,这个题量如果是在刚毕业时,还是有可能完成的,工作几年后,压力渐小,写程序基本都是拿来主义,对标准库函数的原理把握和编程能力越来越退化。由于当时时间紧迫,所写程序也不够完善,过后又思考了一下,回到家后赶紧又对这些问题总结了一下。下面对面试中遇到的编程问题分析了一下。真是人在社会如江湖呀,学习是一刻也不能放松的事。稍一不慎,晚节不保不说,反而会阴沟里翻船。

1.获取路径下的文件名

char * FindFileName(char * s)

{

int len;

char *tmp=NULL;

ASSERT(s != NULL);

for (len=strlen(s); len0;len--)

{

if((s[len]=='/') ||(s[len]=='//'))

{

tmp = s[len+1];

break;

}

}

return tmp;

}

2.把整型转化为字符型

char * i2a(int n, char *s)

{

int i, sign;

ASSERT(s != NULL);

if ((sign = n) 0)

{

n = -n; //转为正数,利于取位

}

do

{

s[i++] = n % 10 + '0';

}

while ((n /= 10) 0)

if (sign 0)

{

s[i++] = '-';

}

s[i] = '/0';

reverse(s);

}

3.把字符型转为整型

int a2i(char * s)

{

int i, n, sign;

ASSERT(s != NULL);

for (i = 0; s[i] == ' '; i++)

{

NULL; //如果字串前有空格,跳过所有空格

}

sign = (s[i] == '-') ?: -1 : 1;

if (s[i] == '+' || s[i] == '-')

{

i++; //判断是正整数串还是负整数串

}

for (n = 0; s[i] = '0' s[i] = '9'; i++)

{

n = 10 * n + (s[i] - '0');

}

return sign*n;

}

4.输出字符串倒文,不能动态分配内存

char * reverse(char * s)

{

int c, i, j;

ASSERT(s != NULL);

for (i = 0, j = strlen(s) - 1; i j; i++, j--)

{

c = s[i];

s[i] = s[j];

s[j] = c;

}

return s;

}

5.查找子串是否存在

int strindex(char *str,char *searchstr)

{

int end, i, j;

ASSERT((str != NULL) (searchstr != NULL));

//计算结束位置

end = strlen(str) - strlen(searchstr);

if ( end 0 )

{

for ( i = 0; i = end; i++ )

{

for ( j = i; str[j] == searchstr[j-i]; j++ )

{

if ( searchstr[j-i+1] == '/0' ) /* 子字符串字结束 */

{

return i + 1; /* 找到了子字符串 */

}

}

}

}

return -1;

}

求高手解答C语言的一个试题,,最好带上解释,,谢谢~~~~~

#include

"stdio.h"

main()

{

int

a=45,b=40,c=50,d;

d=a30?b:c;

/*如果a30,则d=b,否则d=c.因为a=4530,所以d=b=40*/

switch(d)

/*d=40,直接跳到case

40*/

{

case

30

:

printf("%d,",a);

case

40

:

printf("%d,",b);

/*输出"b,",即"40,".由于没有break语句,所以继续往下执行*/

case

50

:

printf("%d,",c);

/*输出"c,",即"50,"*/

default

:

printf("#");

/*输出#*/

}

}

所以结果是:40,50,#

lz要注意在case

40和case

50的输出语句中有一个逗号

C语言考试试题答案

1. 11,12.

2. { ,}, 变量声明,函数体.

3. int,float,double.

4. 存储空间.

5. 将10赋值给变量s.

6. ;

7. 1,0.

8. 高

C语言试题,那位大神帮忙给个答案

◆单选题 共(40 分)

1、在C语言中, char型数据在内存中的存储形式是:___A___

A、补码

B、反码

C、原码

D、ASCII码

2、已知int i, x[3][4];则不能将x[1][1]的值赋给变量i的语句是___C___

A、i=*(*(x+1))

B、i=x[1][1]

C、i=*(*(x+1))

D、i=*(x[1]+1)

3、以下叙述正确的是__D____

A、在C程序中,main函数必须位于程序的最前面

B、C程序的每行中只能写一条语句

C、C语言本身没有输入输出语句

D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误

4、若x=2,y=3则x||y的结果是__B____

A、0

B、3

C、1

D、2

5、若有以下说明语句:char s='\\\092';则下面哪一项是正确的__B____

A、使s的值包含2个字符

B、说明语句不合法

C、使s的值包含6个字符

D、使s的值包含4个字符

6、一个C程序的执行是从_A_____

A、本程序的main函数开始,到main函数结束

B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C、本程序的main函数开始,到本程序文件的最后一个函数结束

D、本程序文件的第一个函数开始,到本程序main函数结束

7、已知int a[10];则对a数组元素的正确引用是______ 没有正确的,AC相同,应该是选项有问题。

A、a[10]

B、a[3.5]

C、a[10]

D、a(5)

8、若希望当A的值为奇数时,表达式的值为"真",A的值为偶数表达式的值为"假"。则以下不能满足要求的表达式是___C___

A、A%2= =1

B、!(A%2 = =0)

C、!(A%2)

D、A%2

9、在C语言的if语句中,用作判断的表达式为___B___

A、关系表达式

B、逻辑表达式

C、算术表达式

D、任意表达式

10、C语言程序由什么组成?___C___

A、子程序

B、主程序和子程序

C、函数

D、过程

11、已知static int a[2][3]={2,4,6,8,10,12}; 正确表示数组元素地址的是___C___

A、*(a[1]+2)

B、a[1]+3

C、*(a+1)

D、a[0][0]

12、075的十进制写法为___,十六进制写法为___。 C

A、0x4b 0113

B、0165 117

C、61 0x3d

D、0x4b 61

13、在C语言中,字符型数据在内存中的存储形式是__B____

A、原码

B、补码

C、反码

D、ASCII码

14、( )以下关于数组的描述正确的是 C

A、数组大小固定,但是可以有不同类型的数组元素

B、数组大小可变,但是所有数组元素的类型必须相同

C、数组大小固定,所有元素的类型必须相同

D、数组大小可变,可以有不同类型的数组元素

15、在C语言中,要求运算数必须是整型的运算符是__D___

A、/

B、++

C、!=

D、%

16、( A)若有以下定义:char s[20]= "programming",*ps=s;则不能代表字符g的表达式是

A、ps+3

B、s[3]

C、ps[3]

D、ps+=3,*ps

17、(D )选择正确的输入语句( )。:(其中:char string[20];)使得string的内容为"I am student". D

A、scanf("%s", string);

B、scanf("%c", string);

C、scanf("%s", string);

D、gets(string);

18、已知char b[5], *p=b;则正确的赋值语句是。__C____

A、b=”abcd”

B、*b=”abcd”;

C、p=”abcd”;

D、*p=”abcd”;

19、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式___B___

A、从左起输出该字串,右补空格

B、按原字符长从左向右全部输出

C、右对齐输出该字串,左补空格

D、输出错误信息

20、75的十六进制写法为___,八进制写法为______ C

A、0x4b 0113

B、0165 117

C、61 0x3d

D、0x4b 61