C数据结构讲解辅导、辅导C语言程序数据结构
- 首页 >> C/C++编程一、选择题(共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()
{
1 ;
scanf("%d",&n);
if( 2 )
printf("TRUE");
else
printf("FALSE");
return 0;
}
17.第一空(横线1中应填写的内容)
18. 第二空(横线2所应填写的内容)
19. 输出8以内某个数的阶乘(课件第 03-07 节,教材第四至六章)
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int s=1;
if( 3 ){
for(int i=1;i<=n;i++)
{s= 4 ;}
}//if结束
else printf("the ans is too long");
printf("%d\n",s);
return 0;
}
19.第一空(横线3中应填写的内容)
20. 第二空(横线4中应填写的内容):
六、程序编写(共4题,每题6分,共24分)
21. 教务系统要录入某学期n位同学的“计算机编程语言”课程的成绩,请编写一段程序。请注意使用要求的变量名称。题目中只允许使用#include <stdio.h>和#include <string.h>库中的函数。(课件第 17-18 节,教材第十一章)
21.声明一个结构体student用来结构体存储每位同学的姓名(name)以及课程成绩(grade)。(姓名长度不超过20个字符, 成绩的最大值为100)
22. 使用student结构体定义一个该结构体(上一题中所定义的结构体)的实例变量sheet,并向其中输入数据。(数据条数不大于10条)
【输入格式】
第 1 行:一个整数n(n<=10),表示学生人数。
接下来n行:每行一个字符串(字符串中无空格和数字,长度最大为20),表示学生姓名,然后一个空格,空格后为学生成绩(学生成绩为实数)
【输入样例】
3
Alice 99
Bob 88
Carol 77
23. 在所定义结构体的基础上,假设结构体中已经存好数据,请计算该学期“计算机编程语言”课程的平均成绩并输出(变量名称:ave)。(保留一位小数,注意使用格式化输出方式)
24. 在所定义结构体的基础上,假设结构体中已经存好数据,求最低分学生的姓名并输出。
(注:本题中最低分只有一个,不需要考虑多人同时得最低分的情况)