本文目录一览:
C语言笔试题!求答案!另送100积分!
我看你前面带答案了。我就做了最后两个。我把整体的再给你发一遍!
1. 说说下列声明的不同之处
char *a = "abc";
char b[] = "abc";
char c[3] = "abc";
a是一个字符型指针变量,起内容为字符串”abc”的首地址,字符串”abc”存放在常量区。
b[ ]占4个字节,b[0]=’a’ ,b[1]= ‘b’,b[2]=’ c’,[3]=’\0’
c[3]占3个字节,c[0]=’a’ ,c[1]= ‘b’,c[2]= ‘c’
2.以下为Windows NT下的32位C程序,请填空 。
例如:int i; long int j; char k; sizeof(i) = 4; sizeof(j) = 8; sizeof(k) = 1;
在32位系统下,整形所占的字节数是4。长整形所占的字节数是8,字符型所占的字节数是1。
(1)
typedef struct
{
int iPara1;
union
{
char iPara2[5];
int iPara3;
char iPara4;
} Params;
char cPara5;
char cPara6[12];
} TEST_INFO_T;
TEST_INFO_T stTestInfo;
请计算
sizeof (stTestInfo ) = 28
(这个答案我没验证,但是我感觉结构体的大小得看对齐位数是多少。正常对齐位数是4,可能不一样的系统默认的设置不一样。我记得我原来用的Solaris默认是8,你也可以自己改。)
(2)
void Func ( char str[3])
请计算
sizeof( str ) =4
(3)
void *p = malloc( strlen(“hello world”) );
请计算
sizeof ( p ) =4
(4)
char str[] = “Hello” ;
char *p = str ;
int n = 10;
请计算
sizeof (str ) =6
sizeof ( p ) =4
sizeof ( n ) =4
3. 请问运行此程序后,在终端上输出的结果是什么?
char acFileName_p[2][50]; /*全局变量,在整个程序运行期间有效*/
int FileExists(char* name)
{
int i;
for(i = 0; i 2; i++)
{
if( strcmp (( char*) name, (char*)acFileName_p [i] ) = = 0)
{
return 1;
}
}
return 0;
}
void CheckFileName(char *name)
{
static char suffix[3] = "_1";
if( FileExists(name) )
{
if(suffix[1] != '1')
{
name[strlen(name) - 2] = '\0';
}
strcat(name, suffix);
suffix[1]++;
CheckFileName(name);
}
else
{
suffix[1] = '1';
}
}
main
{
char cString1[50];
char cString2[50];
strcpy(acFileName_p[0], "test1");
strcpy(cString1, "test1");
strcpy(cString2, "test2");
CheckFileName(cString1);
printf("Output1 = %s\n", cString1);
CheckFileName(cString2);
printf("Output1 = %s\n", cString2);
strcpy(acFileName_p[1], cString1);
CheckFileName(cString1);
printf("Output1 = %s\n", cString1);
}
答:
Output1 = test1_1
Output1 = test2
Output1 = test1_1_1
你的代码有错误,最明显的main函数你得加对小括号啊!!!
4、请找出下面代码中的所有错误
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
(1)#include"string.h"
(2)main()
(3){
(4) char*src="hello,world";
(5) char* dest=NULL;
(6) int len=strlen(src);
(7) dest=(char*)malloc(len);
(8) char* d=dest;
(9) char* s=src[len];
(10) while(len--!=0)
(11) d++=s--;
(12) printf("%s",dest);
(13) return 0;
(14)}
我把改过的重新写了一遍,
#include string.h
#include stdlib.h
#include stdio.h
int main()
{
char *src = "hello,world";
char* dest =NULL;
int len = strlen(src);
dest = (char*)malloc(len);
char* d = dest;
char* s= src[len-1];
printf("%s\n",s);
printf("%d\n",len);
while(len--!=0){
*(d++) = *(s--);
}
printf("%s\n",dest);
free(dest);
dest=NULL;
return 0;
}
C语言笔试题一道
整形数字去减字符2, 等于 c 的 ASCII 值 减 字符2 的ASCII 值。
2743回车:
c = '2', c-'2' 等于 0。进case 0: case 1:
打 ASCII 值 等于 c+4 的符号 ,就是符号6,
没有 break; 进case 2:
打 ASCII 值 等于 c+4 的符号 ,就是 符号6,
break 了。
c = '7', c-'2' 等于 5。没case。退出开关。
c = '4',c-'2' 等于 2。进case 2:
打 ASCII 值 等于 c+4 的符号 ,就是 符号8,
break 了。
c = '3',c-'2' 等于 1。进case 1:
打 ASCII 值 等于 c+4 的符号,就是 符号7,
没有 break; 进case 2:
打 ASCII 值 等于 c+4 的符号 ,就是 符号7,
break 了。
回车,满足 while 跳出条件,做最后的printf("\n")
结果是:
66877
关于C语言笔试的几道题
printf(..... B*2)
而B是什么?是(AA+2)-2
那么也就是(AA+2)-2*2 而你的2*((AA+2)-2) 人家又没有破号,你自己给他加一个上去,这能没问题吗?这没什么原理,是规定,是逻辑,想不通没关系,这种样的宏初级编程用不上,等你到达高级程度了也就自己会理解的了。
展开后是(AA+2)-2*2 并不是2*((AA+2)-2)
乘法当然比减法优先了,先乘后减。。。。。。。
第一题
首先定义了宏 A 他的值是10 实际上可以当成int a=10;
然后#define B (AA+2)-2
实际上也就是#define B (1010+2)-2
首先算术运算符比关系运算法优先高就变成了 (1012)-2,然后1012条件是真,为1,变成了 1-2 由于printf("%d",B*2); 又变成了 1-2*2 结果1-4=-3;
第二题
这个二维数组分解开来就是 a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4,a[2][0]=5,a[2][1]=6, 这个二维数组是三行,二列,行的下标有0,1,2,列的下标有0,1 你的a[1][2]越界了。
第三题并不是单纯的用box 的长度去和boss比较,而是acsii表里的值去减,首先 b和b比,相等,会自动看下一个,o和o比,任然相等,然后x和s比,在acsii里x是120而s是115,所以box大,至于boss最后多出的s就不管了。