复合数据对象

来源:互联网 发布:cad怎么添加网络打印机 编辑:程序博客网 时间:2024/05/02 03:10

小测验

单选题
1、C语言中下列叙述正确的是___D___。
  A:不能使用do-while语句构成的循环
  B:do-while语句构成的循环,必须用break语句才能退出
  C:do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
  D:do-while语句构成的循环,当while语句中的表达式值为零时结束循环
知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构

2、下列描述中不正确的是__C____。 
  A:字符型数组中可以存放字符串
  B:可以对字符型数组进行整体输入、输出
  C:可以对整型数组进行整体输入、输出
  D:不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用

3、以下程序的输出结果是___A___。
main()
{ int x=10,y=10,i;
for(i=0;x>8 ;y=++i)
printf("%d %d ",x--,y);
}
A:10 1 9 2
B:9 8 7 6
C:10 9 9 0
D:10 10 9 1
知识点:知识点/循环结构程序设计/FOR循环结构


4、以下程序的输出结果是___B___。  
main()
{   char  a[10]={'1','2','3','4','5','6','7','8','9',0},*p;
int i ;
i=8;
p=a+i;
printf("%s\n",p-3);
}
  A:6
  B:6789
  C:'6'
  D:789
知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数

5、能正确表示a和b同时为正或同时为负的逻辑表达式是__D____。
  A:(a>=0||b>=0)&&(a<0|| b<0)
  B:(a>=0&&b>=0)&&(a<0&&b<0)
  C:(a+b>0)&&(a+b<=0)
  D:a*b>0
知识点:知识点/基本语句/表达式语句,空语句,复合语句

6、以下程序的输出结果是_A_____。
main()
{  int  n=4;
   while(n--)printf("%d   ",--n);
}
  A:2  0
  B:3  1
  C:3  2  1
  D:2  1  0
知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构

7、以下程序的输出结果是__D____。
main()  
{  int  k=17;
   printf("%d,%o,%x\n",k,k,k);
}
  A:17,021,0x11
  B:17,17,17
  C:17,0x11,021
  D:17,21,11
知识点:知识点/数据类型及其运算/C的数据类型及其定义方法

8、若有说明:long  *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是__A____。
  A:*p=&a;scanf("%ld",p);
  B:p=(long *)malloc(8);scanf("%ld,p);
  C:scanf("%ld",p=&a);
  D:scanf("%ld",&a);
知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用

9、以下选项中,能定义s为合法的结构体变量的是__B____。
  A:typedef  struct  abc 
{  double a;
   char b[10];
} s;
  B:struct  
{  double a;
   char  b[10];
}s;
  C:struct  ABC 
{  double a;
   char b[10];

ABC s; 
  D:typedef  ABC
{  double a;
   char b[10]; 

ABC s;

10、请读程序:
    #include <stdio.h>
    main()
    {
       int a, b ;
       for(a = 1 , b = 1 ; a <= 100 ; a++) {
          if(b >= 20)  break ;
          if (b%3 == 1) { b += 3 ; continue ; }
          b -= 5 ;
       }
       printf("%d\n", a) ;
    }
上面程序的输出结果是___B___。
  A:7
  B:8
  C:9
  D:10
知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构


11、请选出合法的C语言赋值语句___C___。
  A:a=b=58
  B:i++;
  C:a=58,b=58
  D:k=int(a+b);

12、若x和y都是int型变量,x=100、y=200,且有下面的程序片段
      printf("%d",(x,y) );
上面程序片段的输出结果是___A___。
  A:200
  B:100
  C:100   200
  D:输入格式符不够,输出不确定的值

13、若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是__A____。
  A:pb=&x;
  B:pb=x;
  C:*pb=&x;
  D:*pb=*x

14、设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是__D____。
  A:'a'&&'b'
  B:a<=b 
  C:a||+c&&b-c 
  D:!((a<b)&&!c||1)

15、有程序如下:
typedef struct link { double score;  struct link  *next; };
void main ( ) {  
link *ps, qs, rs;
ps = ( struct link *) malloc (sizeof (struct link) );
ps->score = 81.5; qs.score = 55.5; rs.score = 68.0;
ps->next = &qs ; qs.next =&rs;
printf ( " %d \n ", ps->score + ps->next->score);
}
上面程序的输出结果是__137____。
--------------------------------------------------------------------
程序设计
1.定义函数double fact( int n) 计算n!的值。

double fact( int n)  {  double mul;  if (n==1||n==0)  mul=1;  else      mul=n*fact(n-1);  return mul;  }  



2.判断数m是否为素数(只能被1和它本身整除的整数)?若是,则输出yes;否则输出no

void main ()  {       int num,i;      scanf("%d",&num);      for(i=2;i<num;i++)      {      if(num%i!=0)          continue;      else          break;      }      if(i==num)                  printf("yes");      else      printf("no");  }  



--------------------------------------------------------------------
3.求出第n项Fibonacci数,并统计前n项之和。Fibonacci序列:1,1,2,3,5,8,13,21,34,55,……。该序列的第一个数和第二个数都是1,从第三个数开始,每个数都是前两个数之和

void main ()  {       int n,sum=0;      scanf("%d",&n);      printf("%d\n",Fibonacci(n));      for(int i=1;i<=n;i++)      {      sum+=Fibonacci(i);      }      printf("%d",sum);  }  int Fibonacci(int n)  {      if(n==1||n==2)          return 1;      return Fibonacci(n-1)+Fibonacci(n-2);  }  



--------------------------------------------------------------------
4.输入某班级20个学生某课程的考试成绩,要求统计并输出班级总分及大于等于60分的人数。

#include<stdio.h>   #define n 20   void main ()  {       int sco[n],sum=0,j=0;      for(int i=0;i<n;i++)      {          scanf("%d",&sco[i]);      }      for(int i=0;i<n;i++)      {          sum+=sco[i];          if(sco[i]>=60)          {              j++;          }      }      printf("总分是:%d\n",sum);      printf("及格人数为:%d",j);  }  



--------------------------------------------------------------------
5.试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no。

#include<stdio.h>   void main ()  {       int n;      scanf("%d",&n);      if(!(n%7&&n%5))          printf("yes");      else      printf("no");  }  



--------------------------------------------------------------------
6.对15个数进行排序,按从小到大的顺序输出

#include<stdio.h>   void Bubble(int myarr[],int len);  int main()  {      int myarr[15];      for(int i=0;i<15;i++)          scanf_s("%d", &myarr[i] );      Bubble(myarr,15);      for(int i=0;i<15;i++)      {          printf("%d:%d\n",i,myarr[i]);      }      return 0;  }    void Bubble(int myarr[],int len)  {      int length=len;      int i=0;      int j=0;      for(i=0;i<len-1;i++)      {          for(j=0;j<length-i-1;j++)          {              if(myarr[j]>myarr[j+1])              {                  int temp=myarr[j];                  myarr[j]=myarr[j+1];                  myarr[j+1]=temp;              }          }      }  }  



--------------------------------------------------------------------
7.写一个程序,它能够计算并输出杨辉三角形(帕斯卡三角形)前面的 n 行

 

#include <stdio.h>   #define N 9    void main()  {      int i,j,a[N][N]={0};      for(i=1;i<N;i++)      {          a[i][1]=1;           a[i][i]=1;         }      for(i=3;i<N;i++)           for(j=2;j<i;j++)                  a[i][j]=a[i-1][j-1]+a[i-1][j];      for(i=1;i<N;i++)       {          for(j=1;j<=i;j++)               printf("%6d",a[i][j]);            printf("\n");      }  }