第一章 C语言概述

更新时间:2023-11-08 23:22:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 C语言概述 1.1选择题

【题1.1】以下不是C语言的特点的是( B ) A.C语言简洁、紧凑

B.能够编制出功能复杂的程序 C. C语言可以直接对硬件进行操作 D.C语言移植性好

【题1.2】以下不正确的C语言标识符是( D )。 A.ABC B.abc C.a_bc D.ab.c

【题1.3】以下正确的c语言标识符是( C )。 A.%x B.a十b C.a123 D.test!

【题1.4】一个c程序的执行是从( A ).

A.main( )函数开始,直到main( )函数结束 B.第一个函数开始,直到最后一个函数结束 C.第一个语句开始,直到最后一个语句结束

D.main( )函数开始,直到最后一个函数结束

【题1.5】一个C语言程序是由(B)。 A)一个主程序和若干子程序组成 B)函数组成 C)若干过程组成 D)若干子程序组成

【题1.6】一个c程序是由( B )。 A.一个主程序和若干子程序组成 B.一个或多个函数组成 C. 若干过程组成 D.若干子程序组成

【题1.7】C语言派程序的基本单位是( B )。 A.过程 B.函数 c子程序 D.标识符

【题1.8】编辑程序的功能是( A )。

A.建立并修改程序 B.将c源程序编译成目标程序 C.调试程序 D.命令计算机执行指定的操作

1.2填空题

【题1.9】c语言符号集包括【英文字母、数字和一些有待定含义的标点符号】。

【题1.10】一个c程序有且仅有一个【main()】函数。

【题1.11】C程序的基本单位是【函数 】。

【题1.12】一个c派程序有【1】个main( )函数和【若干】二个其他函数 。

【题1.13】在一个C源程序中,注释部分两侧的分界符分别是【/*】和【*/】。

【题1.14】结构化设计中的三种基本结构是【顺序结构、分支结构和循环结构】。

【题1.15】在C语言中,输入操作是由库函数【scanf】完成的,输出函数是由库函数【printf】完成的

算法复习与习题(13级信管、通信)

一、写出下列各题的算法(分别用自然语言、流程图)

1设计一个从n个数中取最大数及最小数的程序

2设计一个判断输入年份是否闰年的算法

3 由键盘输入三个数,计算以这三个数为边长的三角形的面积

4 按下面的近似公式计算:

e = 1+1/1!+1/2!+1/3!+?+1/n!

顺序结构复习题(13级信管、通信专业)

1、选择题

【1】 若x,y定义为int型,z定义为double型,以下不合法的scanf函数调用语句是( ).

A) scanf(“%d%d,”,&x,&y,&z);

B) scanf(“=*%d”,&x,&y,&z);

C) scanf(“%x%*d%lf”,&x,&y, &z);

D) scanf(“%x%o%6.2f”, &x,&y,&z);

【2】阅读以下程序,当输入数据的形式为:25,13,10,正确的输出结果为( )。

main()

{ int x,y,z;

scanf(“%d%d%d”,&x,&y,&z);

printf(“x+y+z=%d\\n”,x+y+z);

}

结果:

A) x+y+z=48

B) x+y+z=35

C) x+z=35

D) 不确定值

【3】根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是( )。

main()

{ int x;float y;

pringf(“enter x,y;”)

输入语句

输出语句

}

输入形式 enter x,y: 2 3.4

输出形式 x+y=5.40

A) scanf(“%d,%f”,&x,&y);

printf(“\\nx+y=%4.2f”,x+y);

B) scanf(“%d%f”,&x,&y);

printf(“\\nx+y=%4.2f”,x+y);

C) scanf(“%d%f”,&x.&y);

printf(“\\nx+y=%6.1f”,x+y);

D) scanf(“%d%3.1f”,&x,&y);

printf(“\\nx+y=%4.2f”,x+y);

【4】以下说法正确的是( ).

A) 输入项可以为一个实型常量,如scanf(“%f”,3.5);

B) 只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);

C) 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);

D) 当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);

【5】 以下能正确的定义整形变量a,b,c并为其付初值5的语句是 ( ).

int a=b=c=5;

int a,b,c=5;

int a=5 ,b=5,c=5;

int a=b=c=5;

【6 】巳知字母A的ASCII码是65,以下程序的执行结果是( )。

#include

main()

{

char c1='A',C2='Y';

printf(\

A.A,Y B.65,65 C.65,90 D.65,89

2、 填空题

【1 】以下程序的执行结果是( )。

#include

main()

{

float f=3.1415927;

printf(\

}

【2】以下程序的输出结果为( ).

main()

{ int x=1,y=2;

printf((“x=%d y=%d*sum*=%d\\n”,x,y,x+y);

printf(“10Squared is : %d\\n”,10*10);

}

【3 】以下程序的输出结果是( )

#include

main()

{int a=325;double x= 3.1415926;

printf(“a=%+06d x=%+e\\n”,a,x);

}

【4】有一输入函数scanf(“%d”,k);则不能使用float变量k得到正确数值的原因是( )和( ),scanf语句的正确形式应该是:( )

【5 】以下程序的执行结果是( )。

#include

main()

{

char c='A'+10;

printf(\

}

【6 】以下程序输入123456<CR>后的执行结果是( ).

#include

main()

{

int a,b;

scanf(\

printf(\

}

3、编程题

【1 】编写摄氏温度、华氏温度转换程序。要求:从键盘输入一个摄氏温度,屏幕就显示对应的华氏温度,输出取两位小数。转换公式:F=(C+32)×9/5

【2 】编写程序,从键盘输入梯形的上下底边长度和高,计算梯形的面积。

【3 】编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。

选择结构复习与习题(13信管、通信专业)

选 择 结 构部分

1单选题

【1 】为了避免嵌套的if-else语句的二义性,c语言规定else总是与( C )组成配对关系。

A)缩排位置相同的if

B)在其之前末配对的if

SIZE 10

scanf(“%d”,&n); int a[SIZE];

int a[n];

【题 3】 若有说明:int a[10];则对a数组元素的正确引用是(D)。

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

【题4】 以下对一维整形数组a进行正确初始化的语句是(C)。

A) int a[10]=(0,0,0,0,0); B) int a[10]={}; C) int a[8]={0,2}; D) int a[10]=10;

【题5】以下对二维整形数组a的正确说明是(C)。

A) inta[3][]; B) float a(3,4); C) double a[4][4]; D) float a(3)(4);

【题6】 若有说明:int a[3][4];则对a数组元素的正确引用是(C)。

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

【题7】 以下对二维整形数组a进行正确初始化的语句是(B)。

A) int a[2][]={{1,01},{5,2,3}};

B) int a[][3]={{1,2,3},{4,5,6}};

C) int a[2][3]={{1,2,3},{4,5},{6}};

D) int a[3][ ]={{1,0,1},{1},{1,1}};

【题8】C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是:_D ____

A) 用户指定传递方式 B) 无传递 C )单向值传递 D)地址传递

【题9】对以下说明语句的正确理解是(B)。

int a[10]={6,7,8,9,10};

A)将5个初值依次赋给a[1]至a[5]

B)将5个初值依次赋给a[0]至a[4]

C)将5个初值依次赋给a[6]至a[10]

D)因为数组长度与初值的个数不同,所以此语句不正确

【题11】定义如下变量和数组:

int k;

int a[3][3]={1,2,3,4,5,6,7,8,9};

则下面语句的输出结果是(A)。

for (k=0;k<3;k++)printf(“%d”,a[k][2-k]);

A)3 5 7

B)3 6 9

C)1 5 9

D)1 4 7

【题12】下面是对S的初始化,其中不正确的是(D)。

A)char s[5]={“abc”};

B)char s[5]={‘a’,’b’,’c’};

C)char s[5]=” ”;

D)char s[5]=”abcdef ”;

2 填空题

【题1】在C语言中,二维数组的定义方式为:类型说明符 数组名【常量表达式 】 【常量表达式 】;

【题2】 在C语言中,二维数组元素的内存中的存放顺序是按行主顺序存放 。

【题3】 若有定义:double x[3][5];则x数组中行

下标的下限为 0 ,列下标的上限为 4 。

【题4】 若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是 0 ,a[2][1]得到的初值是 6

【题5】 下面程序以每行4个数据的形式输出a数组,请填空。

#define N 20

main()

{ int a[N],i;

for (i=0;i

for (i=0;i

{ if(【i%4==0 】) printf(“\\n”)

printf(“3%d”,a[i]);

}

main()

{

int a,b,c,d,x;

a=c=0;

b=1;

d=20;

if(a) d=d-10;

if(!c)x=15;

else x=25;

printf(\

}

【题2】以下程序在输入5,2之后的执行结果是【s=2,t=3】.

#include

main()

{

int s,t,a,b;

scanf(\

s=1;

t=1;

if(a>0)s=s+1;

if(a>b)t=s+t;

else if(a==b) t=5;

else t=2*s;

printf(\

}

【题3】以下程序的执行结果是【first third】.

#include

main()

{

int x=1,y=0;

switch(x)

{

case 1:

switch(y)

{

case 0:printf(\

case 1:printf(\

}

case2:printf(\

}

}

【题4 】当a=3,b=2,c=1时,表达式f=a>b>c 的值是【0】.

当a=5,b=4,c=2时,表达式 a>b! =c的值是【1】.

【题5】在C语言中,表示逻辑“真”值用【非0的数字】.

【题6】设y为int 型变量,请写出描述“y是奇数”的表达式【(y%2)==l】.

【题7】 C语言提供的3种逻辑运算符是【&,||,!】.

【题8 】)设x,y,z均为int型变量,请写出描述“x或y中有一个小于z“的表达式【x<z||y<z】.

【题9 】若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是【1】.

【题10】条件“2

【题11】以下程序运行结果是【1,1】.

Main()

{ int x,y,z;

x=1,y=2,z=3;

x=y--

Printf(“%d,%d”,x,y);

}

}

}

(1) A) c+=2 B) c-=32 C) c=c+32+2 D) c-=30

(2) A) c=’B’ B) c=’a’ C) c-=26 D) c=c+26

【题7】下面程序的功能是将从键盘输入的一批正整数中求出最大者,输入 结束循环选择填空。

0

#include

main()

{int a,max=0;

scanf(“%d”,&a);

while( ) 选B

{ if(max

scanf(“%d”,&a);

}

printf(“%d”,max);

}

A) a==0 B) a C) !a==1 D) !a

【题8】 C语言中while和do-while循环的主要区别是 (A).

A) do-while的循环体至少无条件执行一次

B) while的循环控制条件比do-while的循环控制条件严格

C) do-while允许从外部转到循环体内

D) do-while的循环体不能是复合语句

【题9】下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入 时结束循环。请选择填空。

0

#include

main()

{long int num;

Scanf(“%ld”,&num);

do { if( 【1】 ) printf(“%ld”,num); 选B

scanf(“%ld”,&num);

}while( 【 2】 );} 选C

【1】A) num0/10==3 B) num/100==3 C) num/10==3 D) num/10==3

【2】A) !num B) num>0 C) !num==0 D) num<=0

【题10】下面程序运行结果是(B).

# include

main()

{ int a=1,b=10;

do

{b-=a ; a++ ; }

while ( b - - < 0) ;

printf ( “ a=%d , b=%d\\n”,a,b);

}

A) a=3 , b=11 B) a=2,b=8 C)a=1,b=-1 D)a=4,b=9

【题11】执行语句for(i=1;i++<4; );后变量i的值是(C).

A)3 B)4 C)5 D)不定

【题12】下面程序的功能是计算1至50中是7的倍数的数值之和,请选择填空。

#include

main()

{int I,sum=0;

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

if ( ) sum+=i; 选D

printf(”%d”,sum);

}

A) (int)(i/7)==i/7 B) (int) i/7==i/7 C) i%7=0 D) i%7==0

【题13】 下面程序的功能是求算式xyz+yzz=532中x, y, z的值(其中xyz和yzz分别表示一个三位数),请选择填空。

#include

main()

{int x,y,z,i,result=532;

for(x=1;x<10;x++)

for(y=1;y<10;y++)

for( 【1】 ;z<10;z++)

{i=100*x+10*y+z+100*y+10*z+z;

if( 【2】 )

printf(“x=%d,y=%d,z=%d\\n”,x,y,z);

}

}

【1】A)z=x B)z=1 C)z=0 D)z=y

【2】A)i/result= =1 B)i=result C)i!=result D) i= =result

【题14】 以下正确的描述是(B).

A) continue语句的作用是结束整个循环的执行

B)只能在循环体内和switch语句体内使用break语句

C) 在循环体内使用break语句或continue语句的作用相同

D) 从多层循环嵌套中退出时,只能使用goto语句

【题15】 与下面程序段等价的是(C).

for (n=100;n<=200;n++)

{ if(n%3==0) continue;

printf(“M”,n);

}

A)for(n=100;(n%3)&&n<=200;n++) printf(“M”,n);

【题3】下面的程序的运行结果是【s=254】.

#include

main( )

{int a,s,n,count;

a=2;s=0;n=1;count=1;

while(count<=7) {n=n*a; s=s+n; ++count}

printf(“s=%”,s);

}

0);

【题4】下面程序段的运行结果是【a=-5】.

i=1;a=0;s=1;

do{a=a+s*i; s= - s; i++;} while (i<=10);

printf(“a=%d”,a);

【题5】 下面程序的运行结果是【x=1,y=20】。

#include

main()

{ int i,x,y;

i=x=y=0;

do {++i;

if(i%2!=0) {x=x+i;i++;}

y=y+i++;

} while (i<=7);

printf(“x=%d,y=%d\\n”,x,y);

}

【题6】 鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有几只,请填空。

for(x=1;x<=29;x++)

{y=30-x;

if(【2*x+4*y==90】 ) printf(“%d,%d\\n”,x,y);

}

【题7】以下程序的功能是根据公式e=1+1/1!+1/2!+1/3!+?求e的近似值,精度要求为10-6请填空。

#include

main()

{ int i;

double e,new;

e=1.0 ; new=1.0;

for(i=1; new>=1e-6 ;i++)

{new/=(double)i; e+=new; }

printf(“e=%f\\n”,e)

}

【题 8】下面程序的功能是完成用一元人民币换成一分、两分、五分的所有兑换方案。请填空。

#include

main()

{int i,j,k,l=1;

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

for(j=0;j<=50;j++)

{k=100-i*5-j*2;

if(k>=0)

{printf(“ --- ”,i,j,k);

l=l+1;

if(l%5==0) printf(“\\n”);

}

}

}

【题 9】下面程序的功能是从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。请填空。

#include

void main()

{int i,j,k;

printf(“\\n hong bai hei \\n”);

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

for( j=1 ;j<=5 ; j++ )

{k=8-i-j;

if(k>=0&&k<=6)

printf(“ = = = \\n”,i,j,k);

}

}

数组与应用复习习题(13信管与通信专业)

6.1 选择题

【题1 】在C语言中,引用数组元素时,其数组下标的数据类型允许是(C)

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

【题 2】 以下对一维整形数组a的正确说明是(D)。

A) int a(10); B) int n=10,a[n];

C) int n; D) #define

【题12】以下程序实现输出x,y,z三个数中最大者,请在横线内填入正确的内容。

main()

{int x=4,y=6,z=7;

int

if u=x;

else u=y;

if v=u;

else v=z;

printf(“v=%d”,v);

}

【题13】 以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如‘a’变成‘f’,‘w’变成‘b’。请在[ ]内填入正确的内容。

#include “stdio.h”

main()

{char c;

c=getchar();

if(c>=’a’&&c<=’u’) c=c+5 ;

else if(c>=’v’&&c<=’z’) c=c-21

putchar(c);

}

3 程序题

【题1】编制程序要求输入整数a和b,若a*a+b*b大于100,则输出a*a+b*b百位以上的数字,否则输出两数的和。

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

【题3】编程实现:输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:

能同时被3,5,7整除;

能被其中两个数(要指出哪两个)整除;

能被其中一个数(要指出哪一个)整除;

不能被3,5,7任一个整除。

【题4】 编程实现以下功能:读入两个运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2的值,其中op可为+,—,*,/(用switch语句实现)。

循环结构复习与习题(13级信管与通信专业)

循环控制部分习题

一 选择题

【题1】语句while(!e);中的条件!e等价于 ( A )。

A) e==0 B) e!=1 C) e!=0 D) ~e

【题2】以下for循环是 ( C )。

for(x=0,y=0; (y!=123)&&(x<4) ; x++);

A)无限循环 B) 循环次数不定 C) 执行4次 D) 执行3次

【题3】 下面有关for循环的正确描述是 ( D )

A) for循环只能用于循环次数已经确定的情况

B) for循环是先执行循环体语句,后判定表达式

C) 在for循环中,不能用break语句跳出循环体

D) for循环体语句中,可以包含多条语句,但要用花括号括起来

【题4】下面程序段的运行结果是 ( D )

int x=0 , y=0;

while (x<15) y++, x+=++y ;

printf(“ %d,%d ” , y , x );

A) 20, 7 B) 6,12 C) 20,8 D) 8,20

【题5 】下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数 n,并输入m,n中的较大数,请选择填空。

#include

main()

{int m=0,n=o;

char c;

while( (1) !=’\\n’) 选A

{if(c>=’A’&&c<=’ Z ’) m++;

if(c>=’a’&&c<=’z’) n++;

}

printf(“%d\\n”,m

}

(1) A) c=getchar() B)getchar() C)c=getchar D) scanf(“ü”,c)

(2) A) n:m B) m:n C) m:m D) n:n

【题6】下面程序的功能是将小写字母变成对应的大写字母后的第二个字母。其中y变成A,z变成B。请选择填空。

#include

main()

{char c;

while((c=getchar())!=’\\n’)

{if(c>=’a’&&c<=’z’)

{ (1) ; 选D

fr(c>’Z”&&c<=”Z”+2)

(2) ; 选C

}

printf(“%c”,c);

本文来源:https://www.bwwdw.com/article/inyv.html

Top