(C)一些题8

# include < stdio . h > 
void main ()
{
 union 
{
 int k ;
 char i [2];
}* s , a ;
 s =& a ;
 printf ("% d \ n ", s -> k ); 
printf ("% x \ n ", s -> k );
 s -> i [0]=0x39;
 s -> i [1]=0x38;
 printf ("% x \ n ", s -> k );
}

A .3839 B .3938 C .380039. D .390038

解析:

共同体中,变量有相同的起始地址.也就是说, i [0]的地址就是 k 的起始地址

也就是说 k 的起始地址就是数组第一个元素的地址.

然后 k 占4个字节.函数中的局部变量如果没有初始化. k 是 OXCCCccCCC .

由于起始地址指向的变量的最低位字节.随着地址增大指向高位字节.

s -> i [0]=0x39

s -> i [1]=0x38;

所以后2个字节变成了OXCCCC3839.所以答案是 A

2.C语言源程序名的后缀是()

a. exe B . c

C .. obJ

D .. cpp

3.已知 a 和 b 为整型变量,下面每组表达式等价是()

A . m =( a =3.4*5)与 m = a =3.4*5

B。(float)(a+b)与(float)a/b

C .( int ) a + b 与( int )( a + b )

D. m% = 2+ a *3与m = m %2+ a *3

解析:%=的优先级很低,等价于 m = m %(2+ a *3)

4.若程序中有宏定义行:# define N 100则以下叙述中正确的是(

A .宏定义行中定义了标识符 N 的值为整数100

B .在编译程序对 C 源程序进行预处理时用100替换标识符 N

C .对 C 源程序进行编译时用100替换标识符 N

D .在运行时用100替换标识符 N

5.设有定义: char p[]={'1','2','3'},*p=p;,以下不能计算出 char 型数据所占字节的

A.sizeof(p) B . sizeof ( char ) C . sizeof (* q ) D . sizeof ( p [0])

6.有以下程序:

main ()

{ char s []=" abcde ";

s +=2;

printf ("% d \ n ", s [0]);

}

执行后的输出结果是()

A .输出字符 a 的 ASCII 码 C .输出字符 c

B .输出字符 c 的 ASCII 码 D .程序出错

7.C语言表达式3.26* exp ( x )+( a + b )/3)所表示的数学表达是

A .3.26x+1/3( a + b )

B .3.26x+ a + b

C .3.26ex+1( a + b )

D .3.26lnx+ a + b

解析: exp ( x )表示 e 的 x 次方

double log ( double x )// x 的自然对数, In ( x ), x >0

double lo10g( double x )// x 底数为10的对数,log10x, x >0

double pow ( double x , double y )// x 的 y 次

8.若有以下说明和定义:

Typedef int * INTEGER

INTEGER p ,* q ;

以下叙述正确的是

A . p 是 int 型变量,

C . q 是基类型为 int 的指针变量

B . p 是基类型为 int 的指针变量

D .程序中可用 INTEGER 代替 int 类型名

答案:ABCB ADCB

5.P指的是整个数组

6.s为数组地址,地址不能加2. =只能用于变量,不能用于常量和表达式

9

程序(函数 fun 只对下标为偶数的元素进行操)
程序运行后的输出结果是
# include < stdio . h > 
void fun ( int * a , int n )
{
 int i , j , k , t ;
 for ( i =0; i < n -1; i +=2)
{
 k = i ;
 for ( j = i ;j < n : j +=2)
 if ( a [ j ]> a [ k ])
 k = j ;
 t = a [ i ];
 a [ i ]= a [ k ];
 a [ k ]= t ;
}}

 main ()
{
int aa [10]={1,2,3,4,5,6,7}, i ;
 fun ( aa ,7);
 for ( i =0; i <7; i ++)
 printf ("% d ,", aa [ i ]);
 printf (" \n ");
}

答案:7,2,5,4,3,6,1

有以下程序,程序运行后的输出结果是
# include < stdio . h >
# define PR ( ar ) printf ("% d ", ar );
 void main ()
{int j , a []={1,3,5,7,9,11,13,15},* p = a +5; 
for ( j =3;j;j- -)
{
 switch ( j )
{
 case 1:
caes  2:pR(* p ++); break ;
 case 3:PR(*(-- p ));
}}}

答案:9911

以下程序中函数 fun 的功能是:统计 person 所指结构体数组中所有性别( sex )为 M 的记录的个数,存入变量 n 中,并做为函数值返回。请填空:
# include < stdio . h >
# define N 3
 typedef struct 
{
 int num ; 
char nam [10]; 
char sex ;
} SS ;

 int fun ( SS person [])
{
 int i , n =0;
 for ( i =0; i < N ; i ++)
if (_______________==' M ') n ++;
return n;
}

 main ()
{
 SS W [ N ]={{1." AA ",' F '{,{2," BB ",' M '},{3," CC ",' M '}};
 int n ;
 n =_________;
 printf (" n =% d n ", n );
}

答案:1.person[i].sex

2.fun(w);

编写函数 fun 求一个字符串的长度,在 main 函数中输入字符串,并输出其长
# include < stdio . h >
 int fun ( char * pl )
{
 char * p ;
 int n =0; p = pl ;
 while (* p ++)
 n ++;
 return n ;
}

main ()
{
 char * p , a [20];
 int len ;
 p = a ;.
printf (" please input a string : \n ");
 gets ( p );
 len = fun ( p );
 printf (" The string ' s length is :% d \n ", len );
}
请编写函数 fun ,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出" YES ",否则返回0,主函数中输出" NO "。回文是指顺读和倒读都一样的字符串。
# include < stdio . h >
# define N 80
 int fun ( char * str )
{
 int i , n =0, fg =1;
 char * p = str ;
 while (* p ) /*将指针 p 置位到字符串末尾,并统计字符数*/
{
n++;
p++;
}
 for ( i =0; i < n /2; i ++)/*循环比较字符*/
 if ( str [ i ]== str [ n - 1 - i ]);
 else 
/*相同,什么都不作*/
/*不同,直接跳出循环*/
{
 fg =0;
 break ;
}
return fg ;
}

 main ()
{
 char s [ N ];
 int i ;
 printf (" Enter a string :");
gets ( s );
 printf ("\ n \ n ");
 puts ( s );
 if ( fun ( s ))
 printf (" YES \ n ");
 else 
 printf (" NO \n ");
}
请编写函数 fun ,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。
例如:二维数组中的值为
13579
29994
69998
13570
则函数值为61。

# include < stdio . h >
# define M 4
# define N 5
 int fun ( int a [ M ][ N ])
{
 int tot =0, i , j ;
 for ( i =0; i < N;i ++)
{
 tot+=a [0][ i ];
 tot +=a[M-1][i];
}
 for ( i =1; i < M -1; i ++){
 tot += a [ i ][0];
 tot += a [ i ][ N -1];
}
 return tot ;
 }

main ()
{ int aa [ M ][ N ]={{1,3,5,7,9},
{2,9,9,9,4},
{6,9,9,9,8),
{1,3,5,7,0}};
 int i , j , y ;
 printf (" The original data is :\ n ");
 for ( i =0; i < M ; i ++)
{ for ( j =0: j < N ; j ++) 
printf ("%6d", aa [ i ][ i ]);
 printf (" n ");
}
 y = fun ( aa );.
 printf (" \nThe sum :% d \ n ", y );
 printf (" n ");
}
学校统计学生的人数,让学生排队报数,按从1至5报数,最后一位同学报的数为1:按从1至6报数,最后一位同学报的数为5:按从1至7报数,最后一位同学报的数为4:按从1至11报数,最后一位同学报的数为10,计算至少有多少学生。
# include < stdio . h >
 void main ()
{
 int x =1;
 for ( x =1;;x++).
 if ( x %5==1&& x %6==5&&x%7==4&& x %11==10)
{
 printf (" x =% d ", x );
 break ;
}
}
相关推荐
XH华7 分钟前
初识C语言之二维数组(下)
c语言·算法
Uu_05kkq3 小时前
【C语言1】C语言常见概念(总结复习篇)——库函数、ASCII码、转义字符
c语言·数据结构·算法
嵌入式科普6 小时前
十一、从0开始卷出一个新项目之瑞萨RA6M5串口DTC接收不定长
c语言·stm32·cubeide·e2studio·ra6m5·dma接收不定长
A懿轩A6 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
1 9 J7 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
仍然探索未知中8 小时前
C语言经典100例
c语言
爱吃西瓜的小菜鸡8 小时前
【C语言】矩阵乘法
c语言·学习·算法
Stark、10 小时前
【Linux】文件IO--fcntl/lseek/阻塞与非阻塞/文件偏移
linux·运维·服务器·c语言·后端
deja vu水中芭蕾10 小时前
嵌入式C面试
c语言·开发语言
stm 学习ing12 小时前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl