18春北大《计算机编程语言》在线作业
- 格式:doc
- 大小:47.50 KB
- 文档页数:4
一、选择题(共5题,每题2分,共10分)
1. 声明变量类型为双精度浮点数的关键字为(教材第三章、课件第02节)
A. float
B. double
C. Float
D. Double
2. 结构化程序的三种基本结构是()(教材第四至六章、课件第03-07节)
A. 顺序结构、选择结构、循环结构
B. 递归结构、循环结构、转移结构
C. 嵌套结构、递归结构、顺序结构
D. 循环结构、转移结构、顺序结构
3. 设有int x=11;则表达式(x++*1/3)的值是()(教材第三章,课件第2-4节)
A. 3
B. 4
C. 11
D. 12
4. 如果定义语句:int a[3][6];,按内存中存放顺序,数组a的第10个元素是()(教材第七章,课件第8-12节)
A. a[0][4]
B. a[1][4]
C. a[0][3]
D. a[1][3]
5. 若有定义int c[ 9 ], *p = c; 则p + 5表示( )(教材第十章、课件第20-23节)
A. 数组元素c[5]的地址
B. 数组元素c[5]的值
C. 数组元素c[6]的地址
D. 数组元素c[6]的值
二、填空题(共3题,每题4分,共12分)
写出程序输出的结果
6.
(知识点:教材3.2节、4.5节,课件02-07,课件第 19 节,教材第九章)
#include <stdio.h>
int main()
{
int PI=3;
double r,h;
scanf("%lf",&r);
scanf("%lf",&h);
double
d,c,s,v;
d=PI*r*r;//底面积
c=2*PI*r*h;//侧面积
s=2*d+c;
printf("%.4lf\n",s);
return 0;
}
输入
3
3
输出:___
7.
(课件第
13-16 节,教材第八章)
#include <stdio.h>
int F(int x){
if(x==0||x==1)return 1;
else return F(x-1)*x;
}
int main(){
printf("%d/n",F(4));
return 0;
}
输出:___
8.
(知识点:课件第2节,教材第三章)
#include <stdio.h>
int main(){
int k=2;
int j=++k;
j=k++;
j=--k;
j=k--;
printf("%d\n",j);
}
输出:___
三、简单改错题(共6题,每题3分,共18分)
写出如何修改指定行的代码
9.
(课件第2节,教材第三章)
(一)求a+b的和
#include <stdio.h>//1行
int main()
{
int a,b;
scanf("%d%d",&a,&b);//5行
printf("%d\n,a+b");
return 0;
}
请修改第6行:
10.
(知识点:课件第08-12节,教材第七章,课件第 20-23 节,教材第十章)(二)使用指针输出数组所有元素
#include<stdio.h>//1行
int main()
{int a[10];
int *p,i;
for(i=0;i<=10;i++)//5行
scanf("%d",&a[i]);
printf("\n");
for(p=a;p<(a+10);*p++)
printf("%d",*p);
return 0; //10行
}
请修改第5行:
11. 请修改第8行:
12.
(三)
倒置字符串(课件第 13-16 节,教材第八章,课件第
19 节,教材第九章)
#define LEN 11;//1行
#include<stdio.h>
void inv(char x[],int n)
int main()
{//5行
int i;
char
a[LEN]="abcDE12345";
inv(a,LEN-1);
for(i=0;i<LEN-1;i++)
printf("%c",a[i]);//10行
}
void inv(char x[],int n)
{
int j,m=(n-1)/2;
for(int
i=0;i<=m;i++) //15行
{
j=n-i;
char temp=x[i];
x[i]=x[j];
x[j]=temp; //20行
}
return;
}
12.请修改第1行
13. 请修改第3行
14. 请修改第17行
四、复杂改错题(共2题,每题10分,共20分)
写出错误出在哪一行,如何修改
15.
(课件第3-7节,教材第四至六章,课件第8-12节,教材第七章)
统计字符串中字母和数字个数(本题共3处错误,请说明需要修改第几行并改正)
#include <stdio.h>//1行
#include <string.h>
int main()
{
char
a[5000];//5行
gets(a);
int
alpha,number;
for(int
i=0;i<strlen(a);i++)
{
if(a[i]>='A'&&a[i]<='Z'&&a[i]>='a'&&a[i]<='z')//10行 alpha++;
else if(a[i]>=0&&a[i]<=9)
number++;
}
printf("%d\n",alpha);//15行
printf("%d\n",number);
return 0;
}
}
16.
交换a和b的值(课件第 13-16 节,教材第八章)(本题共3处错误,请说明需要修改第几行并改正)#include <stdio.h>//1行
void swap (int *a,int *b)
{
int *temp=*a;
*a=*b;//5行
*b=temp;
return 0;
}
int main()
{//10行
int a,b;
scanf("%d",&a);
scanf("%d",&b);
swap(a,b)
printf("new
a=%d\n",a);//15行
printf("new
b=%d\n",b);
return 0;
}
五、补全代码(共4题,每题4分,共16分)
17.
判断输入的数能否被13整除
#include <stdio.h>
int main()。