计算机二级C语言知识点大全,弄懂这些题集所含知识点稳过(四)

综合题集知识点四

以下是备考计算机二级C语言冲刺阶段总结的题集中所含的知识点!踏踏实实弄懂每一个知识点,就稳了。

2020年11月6日星期五
补充:不出所料,一次性顺利通过,虽然还是有点不太满意。可能是自己当时考完太过自信。选择题有两三道涉及的知识点一无所知,另外的可能就是会的但因为粗心做错了,编程题大概率是满分,扣分也可能只是扣在修改题,因为当时做完回想了下好像还有其他答案。
在这里插入图片描述
在这里插入图片描述
请编写函数fun,其功能是:判断t所指字符串中的字母是否由连续递增字母序列组成(字符串长度大于等于2)。例如字符串:uvwxyz满足要求:而字符串:uvxwyz不能满足要求。

#include   <stdio.h>
#include  <string.h>
void NONO();
int  fun( char  *t )
{
	int i=0,m=0;
	int len=strlen(t);
	if(len<2)return 0;
	while(t[i]!='\0'&&t[i+1]!='\0')
	{
		if(t[i+1]==t[i]+1)
			m=1;
		else
			break;
		i++;
	}
	return m;
}

main()
{  char  s[26];
   printf("请输入一个字母组成的字符串 :  "); gets(s);
   if( fun(s) )  printf("%s 是由连续字母组成的字符串.\n", s );
   else   printf("%s 不是由连续字母组成的字符串!\n", s );
   NONO();
}

void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *fp, *wf ;
  int i;
  char s[26], *p;
  fp = fopen("c:\\test\\in.dat","r") ;
  wf = fopen("c:\\test\\out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fgets(s, 26, fp);
	p=strchr(s,'\n');
	if(p) *p=0;
    if (fun(s)) fprintf(wf, "%s\n", s+2);
	else  fprintf(wf, "%s\n", strrev(s));
  }
  fclose(fp) ;
  fclose(wf) ;
}

out.data文件不存在问题:
因为代码中指定的是C盘test文件夹下的in.dat文件(实际in.dat文件在该软件生成的考生文件夹里面)。C盘并不存在这个文件夹,所以无法生成out.dat文件。
解决方法:因为题目要求不能改动主函数和其它函数中的任何内容。在C盘建立一个test文件夹,将生成的考生文件夹里面的in.dat文件复制到test文件夹下,运行即可生成out.dat文件。
在这里插入图片描述
否则(C盘不存在test文件夹的in.dat文件)运行会出现如下错误:
在这里插入图片描述
2020年9月12日星期六

C语言中#include后尖括号<>,如<stdio.h>和双引号””,如”shunxubiao.h”的区别:
1.使用尖括号<>只在系统默认目录下找这个引用文件,如:C:\program files\microsoft visual stdio\vc6\include;
2.使用双引号””先在源代码目录下找这个引用文件,如果没找到则去系统默认目录下查找,通常用于包含作者编写的头文件;

2020年9月21日星期一

对长度为n的线性表排序,最坏情况下,比较次数不是n(n-1)/2的排序方法是(D)。
A)快速排序
B)冒泡排序
C)直接插入排序
D)堆排序
这题应当引起重视

设有定义:
double a,b,c;
若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(注:此处□代表一个空格)
□□1.0□□2.0□□3.0<回车>
则能进行正确输入的语句是:B)
A) scanf(“%lf%lf%lf”,a,b,c);
B) scanf(“%lf%lf%lf”,&a,&b,&c);
C) scanf(“%f%f%f”,&a,&b,&c);
D) scanf(“%5.1lf%5.1lf%5.1lf”,&a,&b,&c);
解释:scanf()函数不具备限定输入小数位数的功能,即不支持精度控制,只能限定输入宽度,如:scanf(“%5lf”,&a);
printf()函数既支持精度控制,又可限定输入宽度。

以下选项中不属于C语言标识符的是:A)
A)常量
B)用户标识符
C)关键字
D)预定义标识符
本题需引起重视
解释:常量就是其值在程序运行过程中不可以改变的量。
常量可分为三大类:
1.数值型常量。包括整型常量和实型常量。
2.字符型常量。
3.符号常量。

C语言中的标识符分为三类:
1.关键字;
2.预定义标识符;
3.用户标识符;

有以下程序:

#include 
main() 
{
int k,j,s;
for(k=2;k<6;k++,k++)
{
s=1;for(j=k;j<6;j++)s+=j;}
printf(%d\n”,s);
}

程序运行后的输出结果是:
A)6
B)10
C)24
D)40
解释:这题的坑在于第二次循环时s的值回到1,要注意不是迭代。

有以下程序:

#include main()
{
int y=1,x,a[]={2,4,6,8,10},*p;
p=&a[1];
for(x=0;x<3;x++)y=y+*(p+x);
printf(%d\n”,y);
}

程序运行后输出结果是:B)
A)17
B)19
C)18
D)20
解释:这题的坑在于y的起始值为1,这里需要注意不要少加了这个1。

请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。
例如,若输入17,5,则应输出19、23、29、31、37。

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void fun(int m,int k,int xx[])
{
	int i,j,sum;
	for(i=m+1,sum=0;sum<k;i++)
	{
		for(j=2;j<i;j++)
		{
			if(i%j==0)break;
		}
		if(i==j)xx[sum++]=i;
	}
}
void main()
{
  FILE *wf;
  int m,n,zz[1000];
  system("CLS");
  printf("\nPlease enter two integers: ");
  scanf("%d%d",&m,&n);
  fun(m, n, zz);
  for(m=0;m<n;m++)
     printf("%d ",zz[m]);
  printf("\n ");
/******************************/
  wf=fopen("out.dat","w");
  fun(17,5,zz);
  for(m=0;m<5;m++)
     fprintf(wf,"%d ",zz[m]);
  fclose(wf);
/*****************************/
}

2020年9月22日星期二
程序调试的任务是诊断和改正程序中的错误。

数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。

数据库系统的三级模式是概念模式、外模式和内模式。

面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性。

算法的特征:
1.有穷性:一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成;
2.确定性:算法中的每一步都有确切的含义;
3.可行性:算法中的操作能够用已经实现的基本运算执行有限次来实现;
4.输入:一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件;
5.输出:一个算法有一个或多个输出,以反映出数据加工的结果。

若变量均已正确定义并赋值,以下合法的C语言赋值语句是:A)
A)x=y==5;
B)x=n%2.5;
C)x+n=i;
D)x=5=4+1;
解释:B)选项取模运算符”%”前后必须为整数;C)选项不能将变量赋给表达式x+n;D)选项不能将表达式4+1赋给常量5。

设有定义:
int a;float b;
执行
scanf(“%2d%f”,&a,&b);
语句时,若从键盘输入:
876 543.0<回车>
则a和b的值分别是:A)
A)87和6.0
B)876和543.0
C)87和543.0
D)76和543.0
解释:scanf()函数,在格式字符前加入一个整数可以指定输入数据所占的宽度,这一点需与printf()函数区别开来。所以赋值时将87赋给变量a,把6.0赋给float型变量b。

有以下程序:

#include 
main() 
{
int y=10;while(y--);
printf(“y=%d\n”,y);
}

程序执行后的输出结果是:A)
A)y=-1
B)y=0
C)y=1
D)while构成无限循环
解释:y–先使用后自减。所以最后一次y的值为0,条件不成立但仍要执行自减操作,y的值为-1,跳出循环。打印y的值-1。

有以下程序:

#include 
main()
{int i;
for(i=1;i<=40;i++)
{
if(i++%5==0)
if(++i%8==0)printf(%d”,i);
}
printf(“\n”);
}

执行后的输出结果是:C)
A)5
B)24
C)32
D)40
解释:本题含义是在1-40的整数范围中,当i的值能被5整除,且i+2的值能被8整除时,打印i的值,满足这个条件的只有32。

有以下程序(strcat函数用以连接两个字符串)

#include
#include
main()
{
char a[20]=”ABCD\0EFG\0,b[]=”IJK”;
strcat(a,b);
printf(%s\n”,a);
}

程序运行后的输出结果是:C)
A)IJK
B)ABCDE\0FG\0IJK
C)ABCDIJK
D)EFGIJK
解释:字符数组a中包含两个’\0’,遇到第一个’\0’时就表示字符串a结束。字符串处理函数strcat(字符数组a,字符数组b),功能是连接两个字符数组中的字符串,把字符串b连接到a的后面,结果放在字符数组a中。连接时将字符串a后的’\0’取消,只在新串最后保留一个’\0’。本题相当于”ABCD”和”IJK”连接。

有以下程序段:

char name[20];
int num;
scanf(“name=%s num=%d”,name,&num);

当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为:D)
A)name=Lili num=1001
B)name=Lili
C)Lili num=
D)Lili
解释:此题有scanf()函数的学问,在输入格式控制”name=%s num=%d”中,普通字符”name=num=”在输入时要原样输入,而格式控制符%s和%d对应各自的输入项,将输入的数据赋给相应的输入项。

有以下程序:

#include
int f(int m)
{
static int n=0;
n+=m;
return n;
}
main()
{
int n=0;
printf(%d,,f(++n));
printf(%d\n”,f(n++));
}

程序运行后的输出结果是:D)
A)3,3
B)1,1
C)2,3
D)1,2
解释:细心

有以下程序:

#include
main()
{FILE*fp;int a[10]={1,2,3,0,0},i;
fp=fopen(“d2.dat”,”wb”);
fwrite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);fp=fopen(“d2.dat”,”rb”);
fread(a,size(int),10,fp);fclose(fp);for(i=0;i<10;i++)printf(%d,,a[i]);
}

程序的运行结果是:D)
A)1,2,3,0,0,0,0,0,0,0,
B)1,2,3,1,2,3,0,0,0,0,
C)123,0,0,0,0,123,0,0,0,0,
D)1,2,3,0,0,1,2,3,0,0,
解释:本题考查文件操作函数,两次fwrite后,fp文件中已经写入1,2,3,0,0,1,2,3,0,0然后将文件fp中的内容重新写入数组a中,最后输出a为1,2,3,0,0,1,2,3,0,0,

后续还剩综合题集知识点五

整理不易,对你有帮助的话给个一键三连,谢谢

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当刮目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值