栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

学习通c语言习题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习通c语言习题

第一章

    (单选题)

在一个被调用函数中,关于 return 语句使用的描述,错误的是( )。
• A. 被调用函数中可以不用 return 语句

• B.
被调用函数中可以使用多个 return 语句

• C.
被调用函数中,如果有返回值,就一定要有 return 语句

• D.
被调用函数中,一个 return 语句可以返回多个值给调用函数

我的答案: D正确答案: D
10分

    (单选题)一个C程序的执行是从()。
    • A. 本程序的main函数开始,到main函数结束
    • B. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
    • C. 本程序的main函数开始,到本程序文件的最后一个函数结束
    • D. 本程序文件的第一个函数开始,到本程序main函数结束
    我的答案: A正确答案: A
    10分

    (单选题)C语言执行程序的开始执行点是()。
    • A. 程序中第一条可以执行语言
    • B. 程序中第一个函数
    • C. 程序中的main函数
    • D. 包含文件中的第一个函数
    我的答案: C正确答案: C
    10分

    (单选题)C语言源程序文件经过C编译程序编译连接之后生成一个后缀为()的可执行文件
    • A. .c
    • B. .obj
    • C. .exe
    • D. .bas
    我的答案: C正确答案: C
    10分

    (单选题)C语言的注释定界符是()。
    • A. { }
    • B. [ ]
    • C. *
    • D. /
    */
    我的答案: D正确答案: D
    10分

    (单选题)C语言源程序名的后缀是
    • A. exe
    • B. c
    • C. obj
    • D. cp
    我的答案: B正确答案: B
    10分

    (单选题)一个C语言程序是由()。
    • A. 一个主程序和若干子程序组成
    • B. 函数组成
    • C. 若干过程组成
    • D. 若干子程序组成
    我的答案: B正确答案: B
    10分

    (单选题)C语言源程序的基本单位是()。
    • A. 过程
    • B. 函数
    • C. 子程序
    • D. 标识符
    我的答案: B正确答案: B
    10分

    (单选题)C程序的基本结构单位是
    • A. 文件
    • B. 语句
    • C. 函数
    • D. 表达式
    我的答案: C正确答案: C
    10分

二. 其它(共1题,10分)
10. (其它)编程题 
1.写一个完整的C程序,能实现从键盘输入两个整数并求积,并实现输出两个数的积到屏幕上,求积过程通过定义并调用自定义add函数来实现。
我的答案:
10分

正确答案:
#include
int add(int x,int y);
main()
{
int a, b, c;
printf (“please input value of a and b:n”);
scanf("%d%d", &a, &b);
c=add(a,b);
printf (“sum=%dn”,c);
}
int add(int x,int y)
{return x+y;}

第二章
一. 单选题(共2题,50分)

    (单选题)
    假定定义了三个整型变量int a=5,b=0,c=9; 求表达式a+bc-b/a && b-a!(c-a)的值
    • A. true
    • B. false
    • C. 1
    • D. 0
    我的答案: D正确答案: D
    25分

答案解析:
a+ bc- b/a && b-a * !(c-a); ⑥ ③⑦④ ⑨ ⑧ ⑤②① 即5+09-0/5&&0-5*!(9-5) 即5+09-0/5&&0-5!4 即5+09-0/5&&0-50 即5+0-0&&0-0 即5+0&&0 即0

    (单选题)
    假定定义了三个整型变量 int a=5,b=0,c=9, 求表达式a+6>b || b-c>c 的值
    • A. true
    • B. false
    • C. 1
    • D. 0
    我的答案: C正确答案: C
    25分

答案解析:
a+6>b ||b-c>c; ① ③ ⑤ ②④ 即5+6>0 ||0-9>9; 即11>0||-9>9 即1||0 即1

二. 填空题(共1题,25分)
3. (填空题)条件“20 或x<-100”的
C语言表达式是
我的答案:
25分
(1) x>20&&x<30||x<-100
正确答案:
(1) x>20&&x<30||x<-100

答案解析:
通过关系运算符>、逻辑或||运算符和运算对象构建符合C语言规则的逻辑表达式

三. 其它(共1题,25分)
4. (其它)1、输入半径r(3.4),求圆的周长和面积(保留两位小数)
我的答案:
25分

正确答案:
#include
#define PI 3.1415926
main()
{ float r;
double s;
scanf("%f",&r);
s=PIrr;
printf(“圆的面积是%fn”,s); }

第三章
一. 单选题(共4题,66.4分)

    (单选题)下列四组选项中,均不是C语言关键字的选项是()。
    • A. define IF type
    • B. getc char printf
    • C. include scanf case
    • D. while go pow
    我的答案: A正确答案: A
    16.6分

    (单选题)下列选项中,合法的C语言关键字是()。
    • A. VAR
    • B. cher
    • C. integer
    • D. default
    我的答案: D正确答案: D
    16.6分

    (单选题)

在一个被调用函数中,关于 return 语句使用的描述,错误的是( )。
• A. 被调用函数中可以不用 return 语句

• B.
被调用函数中可以使用多个 return 语句

• C.
被调用函数中,如果有返回值,就一定要有 return 语句

• D.
被调用函数中,一个 return 语句可以返回多个值给调用函数

我的答案: D正确答案: D
16.6分

    (单选题)以下选项中合法的用户标识符是()。
    • A. long
    • B. _2Test
    • C. 3Dmax
    • D. A.dat
    我的答案: B正确答案: B
    16.6分

二. 其它(共2题,33.6分)
5. (其它)
1、编写程序,计算3个数的平均值
我的答案:
16.6分

正确答案:
/求3个数的平均值问题/
#include
void main()
{float no1,no2,no3,average;/定义四个单精度变量/
printf(“please enter three number:n”);/友好界面提示信息/
scanf("%f%f%f",&no1,&no2,&no3);/键盘输入3个单精度实数/
average=(no1+no2+no3)/3;/求平均值/
printf(“The average value is:%-7.2fn”,average); /输出结果/
}
运行:输入80 85 90 结果为The average value is 85.00

    (其它)2、求1+2+…+n;n从键盘随机输入
    如scanf(“%d”,&n);
    编写出C语言代码。
    我的答案:
    17分

正确答案:
#include
int total(int n);
int total(int n)
{int i=1,sum=0;
while(i<=n)
{sum=sum+i;
i=i+1;}
return sum;}
main()
{int n;
int s;
scanf("%d",&n);
s=total(n);
printf(“1+2+…+%d=%dn”,n,s);}

第四章
一. 单选题(共7题,77.7分)

    (单选题)#include
    void main()
    {
    int a=1,b=3,c=5;
    //C值为4即非0值,输出YES
    if(c=a+b) printf(“YES!n”);
    else printf(“NOn”);
    }
    以上程序运行结果为
    • A.

1
• B. 0
• C. NO
• D. YES
我的答案: D正确答案: D
11.1分

答案解析:
C=1+3=4 YES

    (单选题)C 语言中,逻辑“真”等价于()
    • A. 大于零的数
    • B. 大于零的整数
    • C. 非零的数
    • D. 非零的整数
    我的答案: C正确答案: C
    11.1分

    (单选题)为了避免嵌套的if—else 语句的二义性,C 语言规定else 总是与()组成配对关系。
    • A. 缩排位置相同的if
    • B. 在其之前未配对的if
    • C. 在其之前未配对的最近的if
    • D. 同一行上的if
    我的答案: C正确答案: C
    11.1分

    (单选题)设有定义:int a=2,b=3,c=4;,则以下选项中值为0 的表达式是( )。
    • A. (!a1)&&(!b0)
    • B. a
    • C. a && b
    • D. a||(b+b)&&(c-a)
    我的答案: A正确答案: A
    11.1分

    (单选题)能正确表示“当x 的取值在[1,10]和[200,210]范围内为真,否则为
    假”的表达式是( )

• A. (x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
• B. (x>=1)||(x<=10)||(x>=200)||(x<=210)
• C. (x>=1)&&(x<=10)||(x>=200)&&(x<=210)
• D. (x>=1)||(x<=10)&&(x>=200)||(x<=210)
我的答案: C正确答案: C
11.1分

    (单选题)设有int a=2,b;则执行b=a&&1;语句后,b的结果是()
    • A. 0
    • B. 1
    • C. 2
    • D. 3
    我的答案: B正确答案: B
    11.1分

    (单选题)设有int m=1,n=2;则++m==n 的结果是()
    • A. 0
    • B. 1
    • C. 2
    • D. 3
    我的答案: B正确答案: B
    11.1分

二. 其它(共2题,22.3分)
8. (其它)
1、输入2个任意整数,找出其中的最大值。

我的答案:
11.1分

正确答案:
/求两个数的最大值问题/
#include/文件包含命令/
main()/main函数/
{int x,y;//定义两个整型变量x y
int max;//定义一个整型变量max
printf(“Please input two integern”);//输出提示信息
scanf("%d%d",&x,&y);//从键盘输入两个整数
if(x>=y) max=x;//双分支if…else语句if分支
else max=y;//双分支if…else语句else分支
printf(“max=%d”,max);//输出最大值
}

    (其它)2.根据百分制的分数给出对应的等级制成绩。

我的答案:
11.2分

正确答案:
方法1:
#include
main()
{int score;
char grade;
printf(“Input score”);
scanf("%d",&score);
if(score>=0&&score<=100)
{score=score/10;
switch(score)
{case 10:
case 9:grade=‘A’;break;
case 8:grade=‘B’;break;
case 7:grade=‘C’;break;
case 6:grade=‘D’;break;
default:grade=‘E’;break;
}}
else {printf(“Data error!”);grade=‘N’;}
printf(“grade=%c”,grade);}

方法2:
#include
main()
{int score;//定义分数整型变量
char grade;//定义字符等级变量
printf(“Input score :n”);//输出提示信息scanf("%d",&score);//输入分数整型值
//先双分支再else if嵌套
if(score>=0&&score<=100)//在0-100内else if分数设等级
{if(score>=90) grade=‘A’; //90-100 A
else if(score>=80) grade=‘B’; //80-90 B
else if(score>=70) grade=‘C’; //70-80 C
else if(score>=60) grade=‘D’; //60-70 D
else grade=‘E’; //0-59 E }
else {printf(" Data error! :n ");grade=‘N’;//<0 >100 n}
printf(“grade=%c : n”, grade);}

第五章
一. 单选题(共2题,25分)

    (单选题)C语言中 while 和 do-while 循环的主要区别是()。
    • A. do-while 的循环体至少无条件执行一次
    • B. while的循环控制条件比 do-while的循环控制条件更严格
    • C. do-while 允许从外部转到循环体内
    • D. do-while 的循环体不能是复合语句
    我的答案: A正确答案: A
    12.5分

    (单选题)从循环体内某一层跳出,继续执行循环外的语句是()。
    • A. break语句
    • B. return语句
    • C. continue语句
    • D. 空语句
    我的答案: A正确答案: A
    12.5分

二. 判断题(共1题,12.5分)
3. (判断题)循环结构中的continue语句是使整个循环终止执行
• A. 对
• B. 错
我的答案: 错正确答案: 错
12.5分

三. 名词解释(共1题,12.5分)
4. (名词解释)
1、分别用for循环、while循环、do…while循环编程实现求123*…*n,n从键盘输入。并分别画出N-S结构流程图。
我的答案:
12.5分

正确答案:
求n!程序:
#include
main( )
{ int i, n;//定义两个整型变量
long p;//定义一个长整型变量
p=1;//给p变量赋初值为p=1
printf(“Enter n:”);//输出提示
scanf("%d",&n);//输入n
for(i=1;i<=n;i++)
p=p*i;//累乘
printf(“p=%ldn”,p);//输出结果
}

#include
main( )
{ int i, n;//定义两个整型变量
long p;//定义一个长整型变量
p=1;//给p变量赋初值为p=1
printf(“Enter n:”);//输出提示
scanf("%d",&n);//输入n
i=1;
while(i<=n)
{ p=p*i;i++;}//累乘
printf(“p=%ldn”,p);//输出结果
}

#include
main( )
{ int i, n;//定义两个整型变量
long p;//定义一个长整型变量
p=1;//给p变量赋初值为p=1
printf(“Enter n:”);//输出提示
scanf("%d",&n);//输入n
i=1;
do
{p=p*i;
i++;}while(i<=n);
printf(“p=%ldn”,p);//输出结果
}

四. 论述题(共1题,12.5分)
5. (论述题)
求200以内的素数。要求每行输出8个。
我的答案:
12.5分

正确答案:
#include
#include
void main()
{ int i,n,k,count=0;
printf(“200以内的素数:n”);
n=2;
if(++count%10==0) printf("n");
}
n++;
}
}

五. 计算题(共2题,25分)
6. (计算题)
分析下面程序的运行结果。
#include
int main()
{ int n,s=0;
n=1;
while(n<10)
{ s=s+n;
if(s>5)
break;
if(n%2==1)
continue;
n++;
}
printf(“s=%d,n=%dn”,s,n);
return 0;
}

我的答案:
12.5分
s=6,n=1
正确答案:
s=6,n=1
7. (计算题)
分析下面程序的运行结果。

#include
void main()
{int i=5;
do
{ if(i%31)
if(i%5
2)
{printf("%d",i);
break;
}
i++;
}while(i!=0);
}

我的答案:
12.5分
7
正确答案:
7

六. 其它(共1题,12.5分)
8. (其它)
求两个自然数的最大公约数和最小公倍数。
我的答案:
12.5分

正确答案:
#include
main()
{
int m,n,r,t;
scanf("%d%d",&m,&n);
if(m t=m*n;
do
{r=m%n;
//printf(“m=%d n=%d r=%dn”,m,n,r);
m=n;
n=r;
printf(“r=%d m=%d n=%dn”,r,m,n);
}while(r!=0);
printf(“最大公约数是%d 最小公倍数是%d”,m,t/m);
}

第六章

    (单选题)1.设有数组定义:char array[]=“China”;
    则strlen(array)的值为

• A. 4
• B. 5
• C. 6
• D. 7
我的答案: B正确答案: B
33.3分
答案解析:
B.5

二. 其它(共2题,66.7分)
2. (其它)1、编写程序,用冒泡法对6个整数进行由小到大排序。
我的答案:
33.3分

正确答案:
#define N 6//定义符号常量
#include
void main()//main函数
{int i , j , t , a[N];//定义循环变量和一维数组a[N]
printf(“请输入%d个整数:n”,N);//输出提示
for(i = 0; i < N; i++)//一重for循环输入一维数组数据
scanf("%d", &a[i]);
printf("n");//输出回车换行
for(j=1;j<=N-1;j++)/控制比较的趟数/
for(i =0; i< N-j; i++) /第j轮比较中N-j次两两比较/
if(a[i]> a[i +1]) /相邻两数比较如果后面的数更小,则小数冒泡,前移/
{t = a[i];a[i] = a[i + 1]; a[i +1] = t;}//互换操作
printf(“排序之后:n”);//输出提示和回车换行
for(i = 0 ; i < N; i++)//一重for循环输出一维数组数据
printf("%3d",a[i]); }

    (其它)
    l2、编写程序,用选择排序法对6个整数进行由小到大排序。
    我的答案:
    33.4分

正确答案:
#include
void main()
{ int i, j, t, a[10], p;
printf(“请输入10个整数:”);
for(j = 0; j<10; j++) scanf("%d" , &a[j]);
printf("n");
for( i = 0; i < 9; i++)
{ p=i;//p初值为第一个数位置i,a[i].a[i+1].a[9]
for( j = i+1;j < 10; j++)
if (a[p] > a[j])
p=j; //用小数位置j刷新p值
if(i!=p) {t = a[p]; a[p] = a[i]; a[i] = t;}//位置不同再互换
}
printf(“排序之后:n”);
for( j = 0; j < 10; j++) printf("%4d", a[j]); }

第七章
一. 单选题(共4题,80分)

    (单选题)

对于以下递归函数f,调用f(4),其返回值为() 。
int f(int n) { if (n) return f(n - 1) + n;
else return n; }
• A. 10

• B.
4

• C.
0

• D. 以上均不是
我的答案: A正确答案: A
20分
2. (单选题)C语言中函数返回值的类型是由( )决定的。
• A. return语句中的表达式类型
• B. 调用该函数的主调函数的类型
• C. 调用函数时临时决定
• D. 定义函数时所指定的函数类型
我的答案: D正确答案: D
20分

    (单选题)
    调用函数f(27)的输出结果是( )。

void f(int n)
{ if(n<5)
printf("%d", n);
else{
printf("%d", n%5);
f(n/5);
}
}

• A. 102
• B. 201
• C. 21
• D. 20
我的答案: B正确答案: B
20分

    (单选题)一个递归算法必须包括()。
    • A. 递归部分
    • B. 终止条件和递归部分
    • C. 循环部分
    • D. 终止条件和循环部分
    我的答案: B正确答案: B
    20分

二. 其它(共1题,20分)
5. (其它)编写一个计算 n! 的递归函数并在main函数调用。
我的答案:
20分

正确答案:
#include
long fact (int n);//函数声明语句
long fact(int n) //自定义函数首部
{if (n 0||n1) return 1;//如果n为0或1则返回1
else return(n * fact(n -1));//否则返回n*fact(n-1)
}
void main()
{int n;//定义一个整型变量
scanf("%d",&n);//输入整型变量n 的值 
printf("n%2d!=%ld",n,fact(n)); //输出n和fact函数值
}

第八章

一. 单选题(共5题,100分)

    (单选题)若定义pf为指向float类型变量f的指针,下列语句中__是正确的。
    • A. float f, *pf = f;
    • B. float f, *pf = &f;
    • C. float *pf = &f, f;
    • D. float f, *pf =0.0;
    我的答案: B正确答案: B
    20分

    (单选题)若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x, ( )是正确的。
    • A. p2 = p1;
    • B. p2 = **p1;
    • C. p2 = &p1;
    • D. p2 = *p1;
    我的答案: A正确答案: A
    20分

    (单选题)若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于____。
    • A. p++
    • B. x++
    • C. *(p++)
    • D. &x++
    我的答案: B正确答案: B
    20分

    (单选题)
    下面程序的输出结果是( )。
    #include
    void fun (int *x, int *y)
    {
    printf("%d%d", *x,*y);
    *x=3; *y=4;
    }
    int main(void)
    {
    int x=1,y=2;
    fun(&x,&y);
    printf("%d%d", x, y);
    return 0;
    }

• A. 2 1 3 4
• B. 1 2 1 2
• C. 1 2 3 4
• D. 2 1 1 2
我的答案: C正确答案: C
20分

    (单选题)执行下面程序段后,a的值为( )。
    int *p,a=10,b=1;
    p=&a;
    a=*p+b;

• A. 12
• B. 11
• C. 10
• D. 编译错误
我的答案: B正确答案: B

第九第十章
一. 单选题(共44题,88分)

    (单选题)
    定义FILE *fp; 则文件指针fp 指向的是()。
    • A. 文件在磁盘上的读写位置
    • B. 文件在缓冲区上的读写位置
    • C. 整个磁盘文件
    • D. 文件类型结构体
    我的答案: B正确答案: B
    2分

    (单选题)
    下列关于C语言数据文件的叙述中正确的是____。
    • A. 文件由ASCII码字符序列组成,C语言只能读写文本文件
    • B. 文件由二进制数据序列组成,C语言只能读写二进制文件
    • C. 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
    • D. 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
    我的答案: D正确答案: D
    2分

    (单选题)
    定义下列结构体(联合)数组:

struct st { char name[15];
int age; }
a[10]={“ZHAO”,14, “WANG”,15, “LIU”,16, “ZHANG”,17 };

执行语句printf["%d,%c",a[2].age, *(a[3].name+2))的输出结果为()

• A. 15, A
• B. 16, H
• C. 16, A
• D. 17, H
我的答案: C正确答案: C
2分

    (单选题)下面程序的运行结果是()。

#include
int main(void)
{
int x[5] = { 2, 4, 6, 8, 10 }, *p, **pp;
p = x;
pp = &p;
printf(“%d ”, *(p++));
printf(”%dn”, **pp);

  return 0;

}

• A. 4 4
• B. 2 4
• C. 2 2
• D. 4 6
我的答案: B正确答案: B
2分

    (单选题) 假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串的程序段是__。
    • A. char s[5]={“ABCDE”}; puts(s);
    • B. char s[5]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’}; puts(s);
    • C. char *s; scanf("%s", s); puts(s);
    • D. char *s; s=“ABCDE”; puts(s);
    我的答案: D正确答案: D
    2分

    (单选题)若有定义:int p[3]; 则以下叙述中正确的是( )。
    • A. 定义了一个基类型为int的指针变量p,该变量具有三个指针
    • B. 定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
    • C. 定义了一个名为
    p的整型数组,该数组含有三个int类型元素
    • D. 定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
    我的答案: B正确答案: B
    2分

    (单选题)存在定义int a[10], x, pa; , 若pa=&a[0], 下列的哪个选项和其他3个选项不是等价的?
    • A. x=pa;
    • B. x=
    (a+1);
    • C. x=
    (pa+1);
    • D. x=a[1];
    我的答案: A正确答案: A
    2分

    (单选题)
    以下数组定义中错误的是( )。
    • A. int x[][3]={0};
    • B. int x[2][3]={{1,2},{3,4},{5,6)};
    • C. int x[][3]={{1,2,3},(4,5,6)};
    • D. int x[2][3]={1,2,3,4,5,6};
    我的答案: B正确答案: B
    2分

    (单选题)数组定义为 int a[3][2]={1, 2, 3, 4, 5, 6},数组元素____的值为6。
    • A. a[3][2]
    • B. a[2][1]
    • C. a[1][2]
    • D. a[2][3]
    我的答案: B正确答案: B
    2分

    (单选题)有说明语句int a[4][5];,则a[2]+3表示__。
    • A. a数组行下标为2、列下标为3的元素的地址
    • B. a数组行下标为2、列下标为3的元素的值
    • C. a数组第2行的首地址
    • D. a数组第3行的首地址
    我的答案: A正确答案: A
    2分

    (单选题)
    在int a[ ][3] = { {1,4}, {3,2}, {4,5,6}, {0} };中,a[2][1]的值是( )。
    • A. 5
    • B. 0
    • C. 6
    • D. 2
    我的答案: A正确答案: A
    2分

    (单选题)若用数组名作为函数调用时的实参,则实际上传递给形参的是( )。
    • A. 数组首地址
    • B. 数组的第一个元素值
    • C. 数组中全部元素的值
    • D. 数组元素的个数
    我的答案: A正确答案: A
    2分

    (单选题)
    下面程序的运行结果是( )
    #include
    int main()
    {
    int a[]= {2,3,5,4},i;
    for(i=0; i<4; i++)
    switch(i%2)
    {
    case 0:
    switch(a[i]%2)
    {
    case 0:
    a[i]++;
    break;
    case 1:
    a[i]–;
    }
    break;
    }
    for(i=0; i<4; i++)
    printf("%2d",a[i]);
    printf("n");
    return 0;
    }

• A. 3 3 4 4
• B. 2 0 5 0
• C. 3 0 4 0
• D. 0 3 0 4
我的答案: A正确答案: A
2分

    (单选题)
    下面的程序段将输出 ▁▁▁▁▁ 。
    double a[] = {1, 2, 3, 4, 5};
    printf("%dn", sizeof(a));

• A. 0
• B. 5
• C. 40
• D. 48
我的答案: C正确答案: C
2分

    (单选题)
    假定int类型变量占用两个字节,其有定义:int x[10]={0, 2, 4}; 则数组x在内存中所占字节数是()。
    • A. 3
    • B. 6
    • C. 10
    • D. 20
    我的答案: D正确答案: D
    2分

    (单选题)以下正确地定义了一维整型数组a的语句组是( )
    • A. int a(10) ;
    • B. int n=10,a[n];
    • C. int n; scanf(“%d”,&n); int a[n];
    • D. int a[SIZE];(在程序开始有#define SIZE 10)
    我的答案: D正确答案: D
    2分

    (单选题)
    下面程序的运行结果是( )
    #include
    int main()
    {
    int a[]= {2,3,5,4},i;
    for(i=0; i<4; i++)
    switch(i%2)
    {
    case 0:
    switch(a[i]%2)
    {
    case 0:
    a[i]++;
    break;
    case 1:
    a[i]–;
    }
    break;
    }
    for(i=0; i<4; i++)
    printf("%2d",a[i]);
    printf("n");
    return 0;
    }

• A. 3 3 4 4
• B. 2 0 5 0
• C. 3 0 4 0
• D. 0 3 0 4
我的答案: A正确答案: A
2分

    (单选题)
    下面的程序段将输出 ▁▁▁▁▁ 。
    double a[] = {1, 2, 3, 4, 5};
    printf("%dn", sizeof(a));

• A. 0
• B. 5
• C. 40
• D. 48
我的答案: C正确答案: C
2分

    (单选题)
    下列程序的输出结果是( )。

    include

    int f(int n)
    { static int k, s;

    n--;
    for(k=n; k>0; k--)
    s += k;  
    return s;
    

    }
    int main(void)
    { int k;

    k=f(3);
    printf("(%d,%d)", k, f(k));
    
    return 0;
    

    }

• A. (3,3)
• B. (6,6)
• C. (3,6)
• D. (6,12)
我的答案: C正确答案: C
2分

    (单选题)函数f定义如下,执行语句“sum=f(5)+f(3);”后,sum的值应为( )。

int f(int m)
{ static int i=0;
int s=0;

for(;i<=m;i++)
s+=i;

return s;
}

• A. 21
• B. 16
• C. 15
• D. 8
我的答案: C正确答案: C
2分

    (单选题)
    凡是函数中未指定存储类别的局部变量,其隐含的存储类别是____。
    • A. auto
    • B. register
    • C. extern
    • D. static
    我的答案: A正确答案: A
    2分

    (单选题)
    如果要一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,则这个变量的存储类型应该被说明为( )。
    • A. 自动变量
    • B. 静态变量
    • C. 外部变量
    • D. 寄存器变量
    我的答案: B正确答案: B
    2分

    (单选题)如果所有的变量按照下面的程序进行定义和声明,那么在main()函数中所有可用的变量为 ()。
    void fun(int x)
    {
    static int y;
    ……
    return;
    }
    int z;
    void main( )
    {
    int a,b;
    fun(a);
    ……
    }

• A. x,y
• B. x,y,z
• C. a,b,z
• D. a,b,x,y,z
我的答案: B正确答案: C
0分

    (单选题)在一个被调用函数中,关于 return 语句使用的描述,错误的是( )
    • A. 被调用函数中可以不用 return 语句
    • B. 被调用函数中可以使用多个 return 语句
    • C. 被调用函数中,如果有返回值,就一定要有 return 语句
    • D. 被调用函数中,一个 return 语句可以返回多个值给调用函数

我的答案: D正确答案: D
2分
25. (单选题)以下( )函数的定义是错误的?
• A. void f(int i) { return i+1; }
• B. void f( ) { }
• C. void f(int i) { }
• D. int f( ) { return 0; }
我的答案: A正确答案: A
2分

    (单选题)
    以下函数值的类型是()。

fun(float x)
{
float y;
y=3*x-4;
return y;
}

• A. int

• B. 不确定
• C. void
• D. float
我的答案: A正确答案: A
2分

    (单选题)
    有如下函数调用语句: func(rec1, rec2+rec3, (rec4, rec5)); 则该函数调用语句中,含有的实参个数是( )。
    • A. 3
    • B. 4
    • C. 5
    • D. 有语法错
    我的答案: A正确答案: A
    2分

    (单选题)
    在C语言中,下列错误的说法是。
    • A. 函数可以递归调用
    • B. 不允许在函数定义中再定义函数
    • C. 递归程序不可能用非递归算法实现
    • D. 对于continue语句,可以通过改变程序的结构而不使用它
    我的答案: C正确答案: C
    2分

    (单选题)对于以下递归函数 f ,调用 f(4),其返回值为( )。
    int f(int n)
    { return f(n-1)+n; }

• A. 10
• B. 11
• C. 0
• D. 以上均不是
我的答案: D正确答案: D
2分

    (单选题)若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是

for (i = 5; i; i–)
for (j = 0; j < 4; j++) {…}

• A. 20
• B. 25
• C. 24
• D. 30
我的答案: A正确答案: A
2分

    (单选题)
    以下程序段的输出结果是
    int i, j;
    for (i = 1; i < 4; i++) {
    for (j = i; j < 4; j++)
    printf("%d * %d = %d “, i, j, i * j);
    printf(”n");
    }

• A.
• 1 * 1 = 1 1 * 2 = 2 1 * 3 = 3
• 2 * 1 = 2 2 * 2 = 4
3 * 1 = 3

• B.
• 1 * 1 = 1 1 * 2 = 2 1 * 3 = 3
• 2 * 2 = 4 2 * 3 = 6
3 * 3 = 9

• C.
• 1 * 1 = 1
• 1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9

• D.
• 1 * 1 = 1
• 2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9

我的答案: B正确答案: B
2分

    (单选题)
    以下程序段的输出结果是()。
    int main()
    {
    int num = 0, s = 0;

    while(num <= 2)

    num ++;
    s += num;
    }
    printf("%dn",s);

    return 0;
    }

• A. 10
• B. 6
• C. 3
• D. 1
我的答案: B正确答案: B
2分

    (单选题)以下程序段若要使输出值为2,则应该从键盘给n输入的值是

int s = 0, a = 1, n;
scanf("%d", &n);
do
{
s += 1; a = a - 2;
} while (a != n);
printf("%dn", s);

• A. -1
• B. -3
• C. -5
• D. 0
我的答案: B正确答案: B
2分

    (单选题)下面的这个循环的循环次数是( )。
    int i,j;
    for( i=0,j=10; i=j=10; i++,j–)

• A. 语法错误,不能执行
• B. 无限次
• C. 10
• D. 1
我的答案: B正确答案: B
2分

    (单选题)语句for (表达式1; ; 表达式3)等价于?( )
    • A. for ( 表达式1; 0 ; 表达式3 )
    • B. for ( 表达式1; 1 ; 表达式3 )
    • C. for ( 表达式1; 表达式1; 表达式3 )
    • D. for ( 表达式1; 表达式3; 表达式3 )
    我的答案: B正确答案: B
    2分

    (单选题)以下程序运行时,输入的x值在( )范围时才会有输出结果。

• A. 不等于10的整数
• B. 大于3且不等于10的整数
• C. 大于3且等于10的整数
• D. 小于3的整数
我的答案: B正确答案: B
2分

    (单选题)判断 i 和 j 至少有一个值为非0的表达式是____。
    • A. i!=0 && j!=0
    • B. i+j!=0
    • C. i || j
    • D. i&&j
    我的答案: C正确答案: C
    2分

    (单选题)表达式8>6>3值是( )。
    • A. 0
    • B. 1
    • C. 3
    • D. 表达式语法错
    我的答案: A正确答案: A
    2分

    (单选题)表达式(x%3)等价于表达式( )。
    • A. x%3 == 2
    • B. x%3 != 0
    • C. x%3 == 1
    • D. x%3 == 0
    我的答案: B正确答案: B
    2分

    (单选题)设变量已正确定义,以下( )与其它switch语句不等价。
    • A. switch(op){
    case ‘+’: printf("%dn", value1 + value2); break;
    case ‘-’: printf("%dn", value1 - value2); break;
    case ‘*’: printf("%dn", value1 * value2); break;
    default: printf(“Errorn”); break;
    }

• B. switch(op){
default: printf(“Errorn”); break;
case ‘*’: printf("%dn", value1 * value2); break;
case ‘-’: printf("%dn", value1 - value2); break;
case ‘+’: printf("%dn", value1 + value2); break;
}

• C. if(op != ‘+’ && op != ‘-’ && op != ‘’){
printf(“Errorn”);
}else{
switch(op){
case ‘+’: printf("%dn", value1 + value2); break;
case ‘-’: printf("%dn", value1 - value2); break;
case '
’: printf("%dn", value1 * value2); break;
}
}

• D. switch(op){
case ‘+’: printf("%dn", value1 + value2); break;
case ‘-’: printf("%dn", value1 - value2); break;
case ‘*’: printf("%dn", value1 * value2); break;
}

我的答案: D正确答案: D
2分

    (单选题)
    下列程序段的输出结果是

#include
int main(void)
{
int m, k = 0, s = 0;
for (m = 1; m <= 4; m++) {
switch (m % 4) {
case 0:
case 1: s += m; break;
case 2:
case 3: s -= m; break;
}
k += s;
}
printf("%dn", k);
return 0;
}

• A. 10
• B. -2
• C. -4
• D. -12
我的答案: C正确答案: C
2分

    (单选题)程序员要想调用输入输出函数,需要在程序的开头写上语句( )。
    • A. #include
    • B. #include
    • C. #include
    • D. #include
    我的答案: B正确答案: B
    2分

    (单选题)

若" int n; float f=13.8; ",则执行"n=(int)f%3"后,n的值是( )。
• A. 1
• B. 4
• C. 4.33333
• D. 4.6
我的答案: A正确答案: A
2分

    (单选题)
    C语言中,最基本的数据类型是( )
    • A. 整型,实型,逻辑型

• B. 整型,实型,字符型
• C. 整型,字符型,逻辑型

• D. 整型,实型,字符型,逻辑型
我的答案: B正确答案: B
2分

二. 填空题(共4题,8分)
45. (填空题)
对程序填空,程序中a、b、c代表一元二次方程的三个系数,要求输出方程的两个根。
main()
{
int a=1, b=3, c=2;
printf(“x1=%f n”, 第1空 );
printf(“x2=%fn”, 第2空 );
}

我的答案:
2分
(1) -(b+sqrt(bb-4ac))/(2a)
(2) -(b-sqrt(bb-4ac))/(2a)
正确答案:
(1) (-b+sqrt(bb-4ac))/(2a)
(2) (-b-sqrt(bb-4ac))/(2a)

    (填空题)以下程序的输出结果为【1】, #include “stdio.h” main(){int a;for(a=0;a<10;a++);printf("%d",a);}
    我的答案:
    2分

(1) 10
正确答案:
(1) 10
47. (填空题)若所用变量均已正确定义,则执行下面程序段后的 值是【1】. for(i=0 ; i<2 ; i++ ) printf(“YES”); printf("n");
我的答案:
2分
(1) YESYES
正确答案:
(1) YESYES

    (填空题)设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【1】. for(i=0,j=10;i<=j;i++,j–) k=i+j;
    我的答案:
    2分
    (1) 10
    正确答案:
    (1) 10

三. 判断题(共2题,4分)
49. (判断题)循环结构中的continue语句是使整个循环终止执行
• A. 对
• B. 错
我的答案: 错正确答案: 错
2分

    (判断题)while和do…while循环不论什么条件下它们的结果都是相同的.
    • A. 对
    • B. 错
    我的答案: 错正确答案: 错
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783861.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号