(C)一些题8

1.

# 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

10.

有以下程序,程序运行后的输出结果是
# 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

11.

以下程序中函数 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);

12.

编写函数 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 );
}

13.

请编写函数 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 ");
}

14.

请编写函数 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 ");
}

15.


学校统计学生的人数,让学生排队报数,按从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 ;
}
}

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值