C语言上机实验试题.docx

上传人:b****8 文档编号:10977361 上传时间:2023-02-24 格式:DOCX 页数:29 大小:25.23KB
下载 相关 举报
C语言上机实验试题.docx_第1页
第1页 / 共29页
C语言上机实验试题.docx_第2页
第2页 / 共29页
C语言上机实验试题.docx_第3页
第3页 / 共29页
C语言上机实验试题.docx_第4页
第4页 / 共29页
C语言上机实验试题.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C语言上机实验试题.docx

《C语言上机实验试题.docx》由会员分享,可在线阅读,更多相关《C语言上机实验试题.docx(29页珍藏版)》请在冰豆网上搜索。

C语言上机实验试题.docx

C语言上机实验试题

实验一 初识VisualC++6.0环境及运行C实例

 

作业:

一.选择题

1.若int a,b; scanf("%d%d",&a,&b);不可以用(A)作为输入的分隔符。

A),   B)空格   C)回车   D)TAB键

2.阅读以下程序,当输入数据的形式是:

25,13,10,正确的输出结果是(  D   )。

  main(){

    intx,y,z;

    scanf("%d%d%d",&x,&y,&z);

    printf("x+y+z=%d",x+y+z);}

  A)x+y+z=48      B)x+y+z=35       C)x+z=35    D)不确定值

3.已知ch是字符型变量,下边正确的赋值语句是( B   )

  A)ch='123';    B)ch='\xff';     C)ch='\08';    D)ch="\";

二.填空题

1.以下程序的输出结果是(a=+1124,a=1124 ,x=30.141500,x=30.142)

 main(){

  inta=1124;

  doublex=30.1415;

 printf("a=%+6d,a=%-6d,x=%f,x=%7.3f",a,a,x,x);}

2.以下程序的输出结果是(     36.750000             )

 main(){

  intx=10;floaty=26.75;

  printf("%f",x+y);}

 

 

实验二 C程序的调试及运算符

作业:

1.指出下面的是标识符、关键字还是常量。

 abc,2,new,struct,″opiu″,′k′,″k″,false,bnm,true,0xad,045,if,goto

解:

abc是标识符,2是整型常量,new、struct是关键字,″opiu″是字符串常量,′k′是字符常量,″k″是字符串常量,false是布尔常量,bnm是标识符,true是布尔常量,0xad是十六进制的整型常量,045是八进制的整型常量,if、goto都是关键字。

 

2.指出下面的标识符是否是合法的。

2op,Fm,void,short,Dfe,fr-r,s*u

解:

2op不是合法的标识符因为它是以数字开头的;

Fm是合法的标识符;

void,short不是合法的标识符,因为它们是系统保留的关键字;

Dfe是合法的标识符;

fr-r和s*u不是合法的标识符,因为它们分别包含不允许的字符-和*。

 

3.判断对错:

①如果a为flase,b为true,则a&&b为true;

②如果a为flase,b为true,则a||b为true。

解:

由表2.3可知,①错。

②对。

 

4.请指出下面的表达式是否合法,如合法,则指出是哪一种表达式。

%hb*/c3+4o+p3>=(k+p)z&&(k*3)!

mp5%ka==b(d=3)>k

解:

%h和b*/c不是合法的表达式,其余的都是合法的表达式。

3+4,o+p是算术表达式;

3>=(k+p)是关系表达式;

z&&(k*3),!

mp是逻辑表达式;

5%k是算术表达式;

a==b是关系表达式;

(d=3)>k是关系表达式。

5.若x为int型变量,则执行以下语句后x的值是(-14       )

 x=7;

 x+=x-=x+x;

 

 

实验三 顺序结构程序设计

作业:

1.编程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符。

并思考以下问题:

(1)变量c1,c2应定义为字符型或整型?

还是二者皆可?

(2)要求输出c1和c2的ASCII码,应如何处理?

用putchar函数还是printf函数?

(3)整型变量和字符型变量是否在任何情况下都可以互相代替?

(谭浩强书:

3.10)

2.设圆半径r=2,圆柱高h=3,求圆周长,圆柱底面积,圆柱体积。

用scanf输入数据,用printf输出计算结果,输出时要求有文字说明,取小数点后两位数字。

(谭浩强书:

3.8)

 

实验四各种分支结构

作业:

一.填空题

1.有intx=3,y=4,z=5;则

 A)表达式!

(x>y)+(y!

=z)||(x+y)&&(y-z)的值为【1  】。

 B)表达式x+y>z&&y==z的值为【 0 】

 C)表达式x||y+z&&y-z的值为【 1 】

 D)表达式!

(x>y)&&!

z||1的值为【 1 】

 E)表达式!

(x==y)&&!

(y==z)||0的值为【0  】

 F)表达式!

(x+y)+z-1&&y+z/2的值为【 1 】

 

2.如下程序要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和,请在【   】内填入正确内容。

main()    

{inta,b,【x  】,y;

scanf("%d%d",&a,&b);

x=a*a+b*b;

if(【x>100】)

 {y=【x/100 】; printf("\na2+b2>100,%d",y);}

elseprintf("\na2+b2<=100%d",a+b);

}

 

3.如下程序完成判断输入的正整数是否既是5又是7的整数倍。

若是,则输出yes,否则输出no,请在【   】内填入正确内容。

main()

{intx;

 printf("\npleaseinputadata:

");

 scanf("%d",&x);

 if(【x%5==0 】&&【x%7==0 】)

   printf("yes");

 else【printf("no"   】;

}

 

4.下面程序的执行结果是(3 )

 main()

{

 intc,a;

 a=(float)(7/2)>3.5?

(c=2,c+2):

3;

 printf("%d\n",a);

}

 

5.下面程序的执行结果是(14,4 )

main()

{

inta=10,b=0;

if(a==12)

{

 a=a+1;

 b=b+1;

}

else

{

 a=a+4;

 b=b+4;

}

printf("%d,%d",a,b);

}

 

二.编程题

1.根据以下函数关系,对输入的每个x值,计算出相应的Y值。

X          Y  

X<0        0

0<=x<10    X

10<=x<20       10

20<=x<40       30

要求用两种方法实现

1)用if-else实现(自己编程)。

2)用switch语句实现(填空完成程序)

main() 

{

 intx,i;

 floaty;

 scanf("%d",&x);

 if(x<0)i=-1;

 elseif(x>=40)i=4;

 elsei=x/10;

 

 switch(i)

 {

 case-1:

  y=0;  break;

 case 0:

  【y=x   】; break;

 case 1:

  y=10; break;

 case 3:

 case 2:

  y=30; 【break   】;

 default:

 printf("errorinput\n");

}

printf("y=%f",y);

 

}

 

2.编程实现以下的功能:

输入两个运算数(data1和data2)及一个运算符(op),计算表达式data1opdata2的值,其中op可为+,-,*,/。

3.有三个整数a,b,c,由键盘输入,输出其中最大的数。

4.给一个不多于3位的正整数,要求:

 

(1)求出它是几位数;

 

(2)分别打印出每一位数字。

 

 

实验五循环结构程序设计

作业题:

选择题

1.以下程序输出结果是()。

#include“stdio.h”

main()

{  inta=2,b=-1,c=2;

    if(a

          if(b<0)c=0;

          elsec+=1;

   printf("%d\n",c);

}

(A)0          (B)1                   (C)2               (D)3

2.以下程序输出结果是()。

#include“stdio.h”

main()

{  intw=4,x=3,y=2,z=1;

   printf("%d\n",(w

w:

z

z:

x));

}

(A)1   (B)2             (C)3       (D)4

3.以下程序输出结果是()。

#inclued“stdio.h”

main()

{ intx=0,y=2,z=3;

   switch(x)

    { case0:

switch(y==2)

                   { case1:

printf("*");break;

                       case2:

printf("%");break;

                   }

      case1:

switch(z)

                 { case1:

printf("$");

                     case2:

printf("*");break;

                     default:

printf("#");

                 }

     }

}

(A)*%      (B)*%$        (C)*#     (D)*$*#

4.以下程序段输出结果是()。

intk,j,s;

  for(k=2;k<6;k++,k++)

       {s=1;

          for(j=k;j<6;j++)s+=j;

        }

 printf("%d\n",s);

(A)9               (B)1               (C)11               (D)10

5.以下程序段输出结果是()。

intx=3;

do

{ printf("%3d",x-=2);

}while(!

(--x));

(A)1              (B)3 0            (C)1 -2               (D)死循环

6.以下程序段输出结果是()。

main()

{ inty=10;

   for(;y>0;y--)

       if(y%3==0)

          {printf("%d",--y);continue;}

}

(A)741              (B)852              (C)963             (D)875421

填空题

1.下面程序的运行结果是                       。

      #include“stdio.h”

      main()

      { inti=1;

          while(i<=-1)

             {printf(“$$$$”);

             }

          printf(“\n%d”,i);

   }

2.下面程序的运行结果是                       。

  #include“stdio.h”

   main()

   { inti=5;

           do{

                     i――;

                    printf(“$$$$”);

                 }while(i);

            printf(“\n%d”,i)

         }

3.下面程序的运行结果是                       。

#include“stdio.h”

 main()

 { inti=3;

        while(i<10)

            { if(i<6)

                   { i+=2;

                       continue;

                    }

                else

                    printf(“%d”,++i)

             }

     }

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

#include“stdio.h”

 main()

 { inti,sum=0;

           for(i=0;i<3;++i)

                printf(“%d%d\n”,i,sum+=i);

         }

 

实验六 数组

作业与练习

一、选择题

1.若有说明:

int a[10];则对数组元素的正确引用是【A  】

A)a[10];      B)a[3.5]       C)a(5) D)a[10-10]

2.若有说明语句:

int[3][4];则对a数组元素的正确引用是【C  】

A)a[2][4] B)a[1,3]  C)a[1+1][0]       D)a

(2)

(1)

二、填空题

1.若有说明:

inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是【3】

2.下面程序的运行结果是【11235813213455】

   main()

{inti,f[10];

 f[0]=1;  f[1]=1;

 for(i=2;i<10;i++)

   f[i]=f[i-2]+f[i-1];

 for(i=0;i<10;i++)

   {if(i%4==0) printf("\n");

     printf("%3d",f[i]);

   }

 }

三、编程题

1.用选择法对10个整数按升序排序

#defineN10

main()

{int i,j,min,temp;

 staticinta[N]={5,4,3,2,1,9,8,7,6,0};

    printf("\nThearrayis:

\n");  /*输出数组元素*/

 for(i=0;i

   printf("%5d",a[i]);

 for(i=0;i

  { min=【0       】;    

     for(j=i+1;j

           if (a[min]>a[j]) min=j;

     【{temp=a[min];a[min]=a[j];a[j]=temp}】;  /*数据交换*/

  }

 printf("\nThesortednumbers:

\n"); /*输出排序结果*/

 for(i=0;i

 printf("\n");

 }

2.有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。

如果该数不在数组中,则打印出“无此数”。

 读懂下面的程序,并填空。

   变量说明:

top,bott:

查找区间两端点的下标;loca:

查找成功与否的开关变量。

#include

#defineN15

main()

{inti,j,number,top,bott,min,loca,a[N],flag;

 charc;

 printf("Input15numbers(a[i]>a[i-1])\n"); /*由大到小*/

 scanf("%d",&a[0]);   /*输入第1个数据*/

 i=1;

 while(i

 { scanf("%d",&a[i]); /*输入下一个数据*/

    if(a[i]>=a[i-1])    /*是否大于前一个数*/

      i++;

    else

    { printf("Repeatinputnumbera[i]");

       printf("must>=%d\n",a[i-1]);

    }

  }

  printf("Inputthefindednumber:

"); /*输入需要查找的数*/

  scanf("%d",&number);

  loca=0;

  top=0;

  bott=N-1;

  if((numbera[N-1]))  

    loca=-1;                   /*不在范围内*/

  while((loca==0)&&(top<=bott))

  {min=【(top+bott)/2】;   

    if(number==a[min])

     {loca=min;

       printf("Theserialnumberis %d.\n",loca+1);

     }

     else if(number

             bott=min-1;

           elsetop=min+1;

  }

  if(loca==0||loca==-1)

    printf("%disn'tintabel\n",number);

}

四、自测题

(一)选择题

1.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为【A】。

(假设a[0][0]位于数组的第一个位置上。

   A)i*m+j       B)j*m+i  C)i*m+j-1     D)i*m+j+1

2.在C语言中,引用数组元素时,其数组下标的数据类型允许是【A   】

   A)整型常量                B)整型表达式

   C)整型常量或整型表达式    C)任何类型的表达式

(二)填空题

1.以下是个评分统计程序,共有8个评委打分,统计时,去掉一个最高分和一个最低分,其余6个分数的平均分即是最后得分,程序最后应显示这个得分,显示精度为1位整数,2位小数,程序如下,请将程序补充完整。

(99年北京水平试题)

main()

{floatx[8]={9.2,9.5,9.8,7.4,5.,9.1,9,0,}

 float【aver】,max,min;

 inti;

 for(【i=0】;i<8;i++)

  aver+=x[i];

 max=x[0];

 min=max;

 for(i=1;i<8;i++)

 {if(max

  if(【min>x[i]】)min=x[i];

 }

 aver=【(aver-min-max)/6】;

 printf("Average【%f】\n",aver);

}

 

2.程序读入20个整数,统计并输出非负数个数以及非负数的和。

#include"stdio.h"

main()

{inti,a[20],s,count;

 s=count=0;

 for(i=0;i<20;i++)

 {scanf("%d",&a[i]);

   if(a[i]<0)

    【continue 】;

   s+=a[i];

  count++;

 }

 printf("s=%dcount=%d\n",s,count);

}

 

实验七 字符数组

作业:

(一)选择题

1.有下面的程序段

    char a[3],b[]="china";

    a=b;

    printf("%s",a);

    则【D】

    A)运行后将输出china      B)运行后将输出ch  

    C)运行后将输出chi        D)编译出错

2.判断字符串s1是否大于字符串s2,应当使用【D  】

    A)if(s1>s2)                   B)if(strcmp(s1,s2))

    C)if(strcmp(s2,s1)>0)   D)if(strcmp(s1,s2)>0)

3. 下述对C语言字符数组的描述中错误的是【C】

A)字符数组可以存放字符串

B)字符数组的字符串可以整体输入、输出

C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D)不可以用关系运算符对字符数组中的字符串进行比

(二)填空题

1. 编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。

拷贝时,‘\0'也要拷贝过去。

‘\0'后面的字符不拷贝。

#include"stdio.h"

main()

{charfrom[80],to[80];

 inti,len;

 printf("\npleaseinputstring:

");

 scanf("%s",from);

   【len=strlen(from)】;     /*得到字符串长度*/

 for(i=0;i<=len;i++)

【to[i++]=from[i++]】; /*逐个字符复制*/

     printf("New string is:

%s\n",to);

}

 

实验八函数

作业题:

一.选择题

1.C语言中,若对函数类型无说明,则函数的默认类型是【A  】

A)整型   B)float  C)double   D)指针类型

2.C语言规定,在一个源程序中,main函数的位置(   C )

A)必须在最开始     B)必须在系统调用的库函数的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1