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. 在所定义结构体的基础上,假设结构体中已经存好数据,求最低分学生的姓名并输出。

(注:本题中最低分只有一个,不需要考虑多人同时得最低分的情况)



站长地图