C程序设计1-7章测试题

 

一、    选择题:(每题3分,共45分)
1、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(a)。
A)必须为字母或下划线。    B)必须为下划线。
C)必须为字母               D)可以是字母、数字和下划线中的任一种字符。
2、下列运符中优先级最高的是(  b  )
   A) ++   B) ()   C) ?:      D)||
3、C语言规定:在一个源程序中,main函数的位置( c )
A)    必须在最开始
B)    必须在系统调用的库函数的后面
C)    可以任意
D)    必须在最后
4、一个C语言程序是由( b )
A)    一个主程序和若干子程序组成
B)    函数组成
C)    若干过程组成
D)    若干子程序组成
5、 代表换行的转义字符是 (  a  ) 
A)'\n'     B)'\\'   C)'\0'       D)'\''
6、下面一段程序是小写字母转换成大写字母的程序。
void main()
{ char c1;
    c1='a';
    (      ) ;    
    printf("%c ",c1);}
那么 括号处应该填写( c ) A是65 a是 97 
a) c1=c1+32    b)c1=c1-64    c) c1=c1-32   d) c1=c1+64
7、设有程序段
int k=10;
while(k=0) k=k-1;
则下面描述中正确的是( c )
a) while 循环执行10次      b)循环是无限循环
c)循环体语句一次也不执行   d) 循环体语句执行一次
8、逻辑运算符两侧运算对象的数据类型(  a  )
a)只能是0或1    b)只能是0或非0正数
c)只能是整型或字符型数据  d) 可以是任何类型的数据
9、语句while(!E);中表达式!E等价于( a )
a) E==0    b) E!=1     c)E!=0    d)E==1
10、以下对一维a的正确说明是(d)
a) int a(10) ;  b)int n=10,a[n];   c) int n; scanf(“%d”,&n); int a[n];  
d)   int a[10];
11、在c语言中,引用数组元素时,引用数组元素时,其数组下标的数组类型允许是(c)
a)  整型常量 a[9]   b) 整型表达式  i=1 j=2 a[i+j]  c) 整型常量或整型表达式  d) 任何类型的表达式
12、以下能对一维数组a进行正确初始化的语句是( c ) 二维数组的一维数组可以不给出
a) int a[10]=(0,0,0,0,0);    b) int a[10]={}; 没有初始化  c) int a[]={0};   d)int a[10]={10*1};
13、以下对二维数组a的正确说明是(  c )
a) int a[3,4];  b) float a(3,4);  c) double a[3][4];    d) float a(3)(4);
14、若有说明:int a[10]; 则对a数组元素的正确应用是(d)
a) a[10]   b)a[3,5]     c)a(5)     d)a[0]
15、以下能对二维数组a进行正确初始化的语句是(  b )
a)  int a[2][]={{1,0,1},{5,2,3}} ;    b) int a[][3]={{1,0,1},{5,2,3}} ;
c)  int a[2][4]={{1,0,1},{5,3},{6}} ;    d) int a[][3]={{1,0,1},{},{5,3}} ;
二、    填空题:(共10个空,每空4分,共40分)
1、输出单个字符
#include <stdio.h>
void main()8
{    char a,b,c;
    a='B';b='O';c='Y';
    putchar(a);putchar(b);putchar(c);putchar('\n');}
运行结果是(  BOY  ) 。

2、有下面一段程序。
#include <stdio.h>
void main()
{int i=97;
    printf("%c,%d\n",i,i);}
运行结果为( a ,97 )。
3、用scanf函数输入数据
#include <stdio.h>
void main()
{int a,b,c;
    scanf("a=%d,b=%d,c=%d",&a,&b,&c);
    printf("%d,%d,%d\n",a,b,c);    } 
a,b,c分别为3,4,5, 请问在键盘上面怎么输入数据(a=3,b=4,c=5)
在scanf中要赋予值 
4、这个程序是:输入三角形的三边长,求三角形的面积
#include <stdio.h>
#include  <    >
void main()
{    float a,b,c,s,area;
    scanf("%f,%f,%f",&a,&b,&c);
    s=1.0/2*(a+b+c);  //这里用1.0的目的是保证s为float型
    area=sqrt(s*(s-a)*(s-b)*(s-c));
    printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
    printf("area=%7.2f\n",area);    }
程序中用了数学函数,所以你要在程序开头加一条#include命令,把头文件( math.h   )包含到程序中来。
5、 输入两个数,然后按照由大到小的次序输出。
void main()
{int x,y,z;
    scanf("%f,%f",&x,&y);
    if(x<y)
    {z=x;x=y;y=z________ } // 这一步是通过z将x,y的值进行交换
    printf("%d ,%d",x,y);}
(  z=x;x=y;y=z;  )
6、    有程序片段:
switch(grade)
{
case ‘A’:printf(“85-100\n”);break;
case ‘B’:printf(“70-84\n”);break;
case ‘C’:printf(“60-69\n”);break;
case ‘D’:printf(“60\n”);break;
default: printf(“error!\n”);break;
}
若grade的值为’C’,则输出的结果是( 60-69 )。
7、用do-while语句,求1到100的和。
#include <stdio.h>
void main()
{    int i,sum=0;
    i=1;
    do
    {    sum=sum+i;
        ( A i++ );    }
    while(  i<=100 );
    printf("%d\n",sum);}
A处应该填( i++或者i=i+1 ),B处应该填(i<=100 或i<101   )。
8、以下程序将一个2维数组行和列元素互换,存到另一个二维数组中去。
#include <stdio.h>
void main()
{    int a[2][3]={{1,2,3},{4,5,6}};
    int b[3][2],i,j;
    printf("array a :\n");
    for(i=0;i<=1;i++)
    {    for(j=0;j<=2;j++)
        {    printf("%5d",a[i][j]);
            (  A   ) ;        }    
        printf("\n");    }
    printf("array b:\n");
    for(i=0;i<=2;i++)
    {    for(j=0;j<=1;j++)
            printf("%5d",b[i][j]);
        printf("\n");     } }
A处应该填写(     b[j][i]=a[i][j]     )
9、输出一个字符串
#include <stdio.h>
void main()
{    char c[10]={'I',' ','a','m',' ','a',' ','b','o','y'};
    int i;
    for(i=0;i<10;i++)
        printf("%c",c[i]);
    printf("\n");}
运行结果为:(I am a boy)
三、    编程题(15分):
用起泡法或者选择法对10个数排序(由小到大)。要求从键盘输入这10个数。
起泡法:
#include <stdio.h>
void main()
{    int a[11];
    int i,j,t;
    printf("input 10 number:\n");
    for(i=1;i<11;i++)  //a[0]这里不使用
        scanf("%d",&a[i]);
    printf("\n");
    for(j=1;j<=9;j++)   //重复9次
        for(i=1;i<=10-j;i++)
            if(a[i]>a[i+1])
            {t=a[i];a[i]=a[i+1];a[i+1]=t;}
            printf("the sorted numbers :\n ");
            for(i=1;i<11;i++)
                printf("%d ",a[i]);
    printf("\n");}

选择法:
#include <stdio.h>
#include <math.h>
void main()
{    int i,j,min,temp,a[11];
    printf("Enter data:\n");
    for(i=1;i<=10;i++)
    {    printf("a[%d]=",i);
        scanf("%d",&a[i]);  //输入10个数
    }
    printf("\n");
    for(i=1;i<=10;i++)
        printf("%5d",a[i]);   //输出这10个数
    printf("\n");
    for(i=1;i<=9;i++)         //以下8行是对10个树排序
    {min=i;
    for(j=i+1;j<=10;j++)
        if (a[min]>a[j]) min=j;
    temp=a[i];
    a[i]=a[min];
    a[min]=temp;
    }
    printf("\nThe sorted numbers:\n");
    for(i=1;i<=10;i++)      //输出已经排好序的10个数
        printf("%5d",a[i]);
}
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金石不渝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值