(C)一些题(7)

1.若要说明一个类型名STP,使得定义语句STP s;等价于char *s;, 以下选项中正的是( )。

A.typedef STP char *s
B.typedef *char STP
C.typedef STP *char
Dhypeder char *STP

分析:(1)先按定义变量的方法写出定义体(char *s;)

②将变量名换成新类型名(将s换成STP )

(3)在最前面加上typedef(typedef char *STP )
④用新类型名去定义变量STP s: 与char *s;等价
 

2.下面的函数调用语句中func函数的实参个数是
func (f2 (vl,v2) ,(v3,v4,v5) ,(v6,max (v7,v8)));
A.3
B.5
C.7
D.8


3.下面程序的的运行结果是()
a=1;b= 2;c =2:
while(a<b<c)
{
t= a;a =b;b=t;c--;}
printf( "%d,%d,%d",a,b,c);

A.1.2,0
B.2,1.0
C.1,2,1
D。2,1,1



4.下面程序的运行结果是(

#include<stdio.h>
#include<string.h>
void main( )
{
char a[80]="AB",b[80]="LMNP";

int i=0;
strcat(a,b);
while(a[i++]!='0')

b[i]=a[i];
puts(b);

A. LB
B. ABLMNP,

 c. AB
D. LBLMNP

5..若有以下程序段:
。。。。。。。。
int a[]= {4,0,2,3,1};

int  i,j,t;

for(i=1;i<5;i++)
{
t= a[i]; j=i-1;
while(j> =0&&t>a[j])
{
a[j+1]-a[j];j--;
}
a[ j+1]=t:
}
则该程序段的功能是()。

A.对数组a进行插入排序(升序)

B.对数组a进行插入排序(降序)

C.对数组a进行选择排序升序)
D.对数组a进行选择排序(降序)

分析:插入排序基本思想:将第i趟排序中的第i个元素插入到一个排好序的子序列中,若是由小到大排序,则将元素temp =a[i]插入到子序列a[0】,a[1】。。。a[i-1]中,
将比a[i]元素大的数往后移动。直到找到插入的位置

#include <stdio.h>
void InsertSort(int a[],int n)
{
int i,j;
int temp;
for(i=l;i<n;i++) //执行n-1躺插入
{
temp=a[i];  //将要插入的数暂存到temp
j=i-1;
while(j>=0 && temp<a[j])//找出temp的插入位置
a[j+1]-=j--1; //将 a[j]后移,再将j减1
a[j+1]=temp; //将temp插入指定位置
}

6.以下叙述中错误的是( )

A.在程序中凡是以"#”开始的语句行都是预处理命令行
B.预处理命令行的最后不能以分号表示结束
C. #define MAX是合法的宏定义命令行
D.C程序对预处理命令行的处理是在程序执行的过程中进行的。


分析:编译预处理就是在编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理指令进行处理的过程

答案:CAA DBD

2.看,分了几个

3.while(a《b《c) 因为a《b,为1,1《c,所以为t=1,a=2,b=1,c=1

   循环在执行,a》b为0,0《c,所以为t=2,a=1,b=2,c=0,

    在循环执行,a《b为1,1》c,不合法

6.编译预处理就是在编译程序对C源程序进行编译前

7.以下程序,程序运行后的输出结果是

#include <stdio.h>
main()
{
int I;
for(i=l;i<= 5;i++)
switch(i%5)
{
case  0:printf("* ");break;

case  1:printf("#");break;

default :printf("\n");
case 2:printf("&");
}}

答案:#&

          &

         &*

8.有以下程序,程序运行后的输出结果是

#include< stdio.h>
main()
{
int а[6][6],i,j;
for(i=1;i<6;i++)
for(j=1;j<6;j++)
a[i][j]=(i/j)*(j/i);
for(i=1;i<6;i++)
{
for(j=1;j<6;j++)
printf("%2d",a[i][j]);
printf("\n");
}}

答案:10000

          01000

          00100

          00010

          00001

分析:i/j或j/i除不尽为零

9.

对某一正数的值保留2位小数,并对第三位进行四舍五入。
# include < stdio . h >
 double fun ( float h )
{
 int i ;
 i =( int )( h *1000)%10;
 if ( i >=5)
 return ( int )( h *100+1)/100.0;
 else 
 return ( int )( h *100)/100.0;
}

 void main ()
{
float m ;
 printf (" Enter m :");
 scanf ("% f ",& m );
 printf (" nThe result is %8.2fn", fun ( m ));
}

10.

编写函数实现找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回,编写主函数并测试。
# include < stdio . h >
int fun ( int n )
{
 int i , k ;
 for ( i = n +1;;1++)
{
 for ( k =2; k < i ; k ++)
 if ( i % k ==0)
 break ;
 if ( k == i )
 return ( i );
}
 void main ()
{
 int m ;
 printf (" Enter m :");
 scanf ("% d ",& m );..
 printf (" nThe result is % d ' n ", fun ( m ));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值