C语言是面向过程的,而C++是面向对象的
C和C++的区别:
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。
C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
一、字符串操作(一)删除*号
1、编程题中涉及“删除*号”的相关题目:6、9、22、33、36、40、45
2、编程题第33题的操作过程
(1)题目:假设输入的字符串中只包含字母和“*”号。请编写函数fun,它功能是:除了字符串前导的*号之外,将串中其他*号全部伤处。例如,字符串中的内容:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG。
(2)分析:题目的含义可以解析为将中间和尾部的*号全部删除,剩余前导*号和字母。
①前导*号:指第一个字母以前的字母,例如****A*BC*DEF*G*******中的前导*有4个;
②尾部*号:指最后一个字母以后的字母,例如****A*BC*DEF*G*******中的尾部*有7个;
③中间*号:除了前导和尾部*号以外的*号。
(3)【步骤1】打开“编程题”题目,分析NONO函数
NONO( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out ;
int i ; char s[81] ;
in = fopen("D:\k01\24010001\in.dat","r") ;
out = fopen("D:\k01\24010001\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(in, "%s", s) ;
fun(s) ;
fprintf(out, "%s ", s) ;
}
fclose(in) ;
fclose(out) ;
}
①FILE *in, *out ; /*定义了两个文件类型的指针变量in和out*/ 文件指针的定义:FILE *指针变量名;
②int i ; char s[81] ;/*定义了一个整型的变量i,用来表示循环的递增;定义了一个字符类型的一维数组s,用来存放后面题目中数据。*/
③in = fopen("D:\k01\24010001\in.dat","r") ; /*in是文件指针,用来指向文件“in.dat”。fopen("D:\k01\24010001\in.dat","r") ; 以“r”读的方式打开“in.dat”文件*/ 知识点参照课本P115页相关理论知识,打开文件的定义:fopen(文件名,文件使用方式);
D:\k01\24010001\in.dat 打开的文件为in.dat,其中D:\k01\24010001\是文件存储的路径,“r”为文件打开的方式“读”,即只能读取里面的数据,不能往里面写入数据。
④out = fopen("D:\k01\24010001\out.dat","w") ; /*out是文件指针,用来指向文件“out.dat”。fopen("D:\k01\24010001\out.dat","w")以”w”写的方式打开“out.dat”文件*/
⑤for(i = 0 ; i < 10 ; i++) /*循环语句,该循环将执行10次*/
⑥fscanf(in, "%s", s) ; /*从in文件所指向的数据源文件in.dat中读取一行字符串数据给一维数组s,(顺便说下为什么知道是读取一行字符串数据,是因为%s格式是用来控制字符串的,因此不难判断),通过循环语句,将读取10行数据进行处理,该题目总共40分,因此每行就是4分。*/
⑦fun(s) ; /*调用函数fun,传入实参s,从题目得知fun函数要完成的事情是: 将中间和尾部的*号全部删除,剩余前导*号和字母。*/
⑧fprintf(out, "%s ", s) ; /*printf在第二章学习的时候知道是输出的意思,fprintf的意思是将数据输出到out指针指向的文件中,以“%s ”格式方式输出,输出的数据是s,同学们一定要注意,此时的s是修改过的s,即是删除*号后的字符串。*/
⑨fclose(in) ; /*关闭文件指针in。*/
⑩fclose(out) ; /*关闭文件指针out,文件打开后要将其关闭。*/
(4)【步骤2】根据考生文件夹【考试文件夹D:K01 10001】打开“in.dat”文件。
①在桌面上双击“我的电脑”图标,然后依次双击“D盘”,双击“K01”文件夹,双击“2401001”文件夹。
②显示文件夹的扩展名,如果打开文件“24010001”文件夹后显示“in.dat”文件为“in”文件,则说明系统隐藏了“文件的扩展名”,考试必须将之显示出来方能继续做题。首先单击菜单栏中的“工具”,然后选择“文件夹选项”,单击“查看”,在“高级设置”中将“隐藏已知文件扩展名”前面的勾去掉,最后单击“确定”,此时“in.dat”中的后缀已经显示出来。
③用“文本文件”的方式打开“in.dat”文件。首先选中“in.dat”文件,然后右击选择“打开方式”,在“打开方式”中选择“记事本”打开“in.dat”。
(5)【步骤3】在考生文件夹下建立“out.dat”文件
(6)【步骤4】根据题目要求将正确答案填入“out.dat”文件中。本题目的要求将中间和尾部的*号全部删除,剩余前导*号和字母。将新字符串存放到“out.dat”文件中,做题的时候细心些,共10行,写错一行扣4分。
(7)【步骤5】保存“out.dat”文件,进行评分(注意:考试的时候没有评分环节!)单击菜单栏中的“文件”,选择“保存”即可保存“out.dat”文件。关闭“in.dat”、“out.dat”等文件后进行评分。在“答题界面”单击“评分”按钮即可显示所得分数!
3、同类型题目列举:
第6题题目:将字符串中的前导*号全部删除,中间和尾部的*号不删除。
第9题题目:除了字符串前导和尾部*号之外,将串中其他*号全部删除。
第13题题目:只删除字符串前导和尾部的*号,串中字母之间的*号不能删除。
第22题题目:除了字符串前导和尾部*号之外,将串中其他*号全部删除。
第36题题目:将字符串尾部的*号全部删除,前面和中间的*号不删除。
第40题题目:将字符串中的前导*号全部移动到字符串的尾部。
第45题题目:删除字符串中的所有的*号。
4、编程题中涉及“删除*号”的相关题目:5、31
5、编程题第5题的操作过程
(1)题目:将字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。例如,字符串中的内容:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****。若n的值为8,则字符串任为:*******A*BC*DEF*G****。
(2)分析:将前导*号按照n的值进行舍去或不变,改变后将新的字符串存放在“out.dat”文件中即可。
(3)【步骤1】打开“编程题”题目,分析NONO函数
NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out ;
int i, n ; char s[81] ;
in = fopen("D:\k01\24010001\in.dat","r") ;
out = fopen("D:\k01\24010001\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(in, "%s", s) ;
fscanf(in, "%d", &n) ;
fun(s,n) ;
fprintf(out, "%s ", s) ;
}
fclose(in) ;
fclose(out) ;
}
①FILE *in, *out ; /*定义了两个文件类型的指针变量in和out*/
②int i ; char s[81] ;/*定义了一个整型的变量i,用来表示循环的递增;定义了一个字符类型的一维数组s,用来存放后面题目中数据。*/
③in = fopen("D:\k01\24010001\in.dat","r") ; /*in是文件指针,用来指向文件“in.dat”。fopen("D:\k01\24010001\in.dat","r") ; 以“r”读的方式打开“in.dat”文件*/
④out = fopen("D:\k01\24010001\out.dat","w") ; /*out是文件指针,用来指向文件“out.dat”。fopen("D:\k01\24010001\out.dat","w")以”w”写的方式打开“out.dat”文件*/
⑤for(i = 0 ; i < 10 ; i++) /*循环语句,该循环将执行10次*/
⑥fscanf(in, "%s", s) ; /*从in文件所指向的数据源文件in.dat中读取一行字符串数据给一维数组s*/
⑦fscanf(in, "%d", &n) ; /*从in文件所指向的数据源文件in.dat中读取一个整型“%d”数据给一维数组s*/
⑧fun(s,n) ; /*调用函数fun,从题目得知fun函数要完成的事情是: 将字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。*/
⑨fprintf(out, "%s ", s) ; /* fprintf的意思是将数据输出到out指针指向的文件中,以“%s ”格式方式输出,输出的数据是s,同学们一定要注意,此时的s是修改过的s。*/
⑩fclose(in) ; /*关闭文件指针in。*/
⑪fclose(out) ; /*关闭文件指针out,文件打开后要将其关闭。*/
(4)【步骤2】根据考生文件夹【考试文件夹D:K01 10001】打开“in.dat”文件。
①在桌面上双击“我的电脑”图标,然后依次双击“D盘”,双击“K01”文件夹,双击“2401001”文件夹。
②显示文件夹的扩展名,如果打开文件“24010001”文件夹后显示“in.dat”文件为“in”文件,则说明系统隐藏了“文件的扩展名”,考试必须将之显示出来方能继续做题。首先单击菜单栏中的“工具”,然后选择“文件夹选项”,单击“查看”,在“高级设置”中将“隐藏已知文件扩展名”前面的勾去掉,最后单击“确定”,此时“in.dat”中的后缀已经显示出来。
③用“文本文件”的方式打开“in.dat”文件。首先选中“in.dat”文件,然后右击选择“打开方式”,在“打开方式”中选择“记事本”打开“in.dat”。
(5)【步骤3】在考生文件夹下建立“out.dat”文件
(6)【步骤4】根据题目要求将正确答案填入“out.dat”文件中。按照题目要求将每一行字符串和n作比较,如果大于n则删除多于的*号,否则什么也不变,将改动过后的新字符串存放在“out.dat”文件中,注意n就不输出到“out.dat”文件中了!
(7)【步骤5】保存“out.dat”文件,进行评分(注意:考试的时候没有评分环节!)单击菜单栏中的“文件”,选择“保存”即可保存“out.dat”文件。关闭“in.dat”、“out.dat”等文件后进行评分。在“答题界面”单击“评分”按钮即可显示所得分数!
二、字符串操作(二)简单的字符操作
1、编程题中涉及“简单的字符操作”的相关题目:32
2、编程题第59题的操作过程
(1)题目: 将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,如输入字符串“-1234”,则函数把它转换为整数值-1234
(2)分析:将“in.dat”文件中的数字字符串中的数字赋值后,放到“out.dat”文件中即可。
(3)【步骤1】打开“编程题”题目,分析NONO函数
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i ;
char s[20] ;
long n ;
fp = fopen("D:\k01\24010001\in.dat","r") ;
wf = fopen("D:\k01\24010001\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%s", s) ;
n = fun(s);
fprintf(wf, "%ld ", n) ;
}
fclose(fp) ;
fclose(wf) ;
}
①FILE *fp, *wf ; /*定义了两个文件类型的指针变量fp和wf*/
②char s[20];/*定义了一个一维字符数组 */
③fp = fopen("D:\k01\24010001\in.dat","r") ; /*fp是文件指针,用来指向文件“in.dat”。fopen("D:\k01\24010001\in.dat","r") ; 以“r”读的方式打开“in.dat”文件*/
④wf= fopen("D:\k01\24010001\out.dat","w") ; /*wf是文件指针,用来指向文件“out.dat”。fopen("D:\k01\24010001\out.dat","w")以”w”写的方式打开“out.dat”文件*/
⑤for(i = 0 ; i < 10 ; i++) /*控制循环,共循环10次,那么就意味着每个正确答案4分 */
⑥fscanf(fp, "%s", s) ; /*从fp所指向的文件“in.dat”文件中读入一个“%s”,即一个字符串给数组s */
⑦n = fun(s);/*调用函数fun,从题目得知fun函数要完成的事情是: 将一个数字字符串转换为一个整数。并将函数返回的值赋值给变量n*/
⑧fprintf(wf, "%ld ", n) ;/*fprintf的意思是将数据输出到out指针指向的文件中,以“%ld ”格式方式输出,输出的数据是n,同学们一定要注意,此时的n是整数不是字符串。*/
⑨fclose(in) ; /*关闭文件指针in。*/
⑩fclose(out) ; /*关闭文件指针out,文件打开后要将其关闭。*/
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
(4)【步骤2】根据考生文件夹【考试文件夹D:K01 10001】打开“in.dat”文件。
①在桌面上双击“我的电脑”图标,然后依次双击“D盘”,双击“K01”文件夹,双击“2401001”文件夹。
②显示文件夹的扩展名,如果打开文件“24010001”文件夹后显示“in.dat”文件为“in”文件,则说明系统隐藏了“文件的扩展名”,考试必须将之显示出来方能继续做题。首先单击菜单栏中的“工具”,然后选择“文件夹选项”,单击“查看”,在“高级设置”中将“隐藏已知文件扩展名”前面的勾去掉,最后单击“确定”,此时“in.dat”中的后缀已经显示出来。
③用“文本文件”的方式打开“in.dat”文件。首先选中“in.dat”文件,然后右击选择“打开方式”,在“打开方式”中选择“记事本”打开“in.dat”。
(5)【步骤3】在考生文件夹下建立“out.dat”文件。
(6)【步骤4】根据题目要求将正确答案填入“out.dat”文件中。将“in.dat”中全部数据复制后在“out.dat”中粘贴即可,非常简单,不要错了!!
(7)【步骤5】保存“out.dat”文件,进行评分(注意:考试的时候没有评分环节!)单击菜单栏中的“文件”,选择“保存”即可保存“out.dat”文件。关闭“in.dat”、“out.dat”等文件后进行评分。在“答题界面”单击“评分”按钮即可显示所得分数!
三、字符串操作(三)删除或转换指定的字符操作
1、编程题中涉及“删除或转换指定的字符操作”的相关题目:7
2、编程题第7题的操作过程
(1)题目:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入“abc4EFg”,则应输出“aBc4EFg”。
(2)分析:细心的将下标为奇数位置上的字母转换为大写,放到“out.dat”文件中即可。
(3)【步骤1】打开“编程题”题目,分析NONO函数
NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
char tt[51], ch;
FILE *rf, *wf ;
int len, i=0 ;
rf = fopen("D:\k01\24010001\in.dat","r") ;
wf = fopen("D:\k01\24010001\out.dat","w") ;
while(i < 10) {
fgets( tt, 50, rf );
len = strlen(tt) - 1 ;
ch = tt[len] ;
if(ch == ' ' || ch == 0x1a) tt[len] = 0 ;
fun(tt);
fprintf( wf, "%s ", tt );
i++ ;
}
fclose(rf) ;
fclose(wf) ;
}
①FILE *rf, *wf ; /*定义了两个文件类型的指针变量rf和wf*/
②char tt[51],ch;/*定义了一个一维字符类型的数组,定义了一个字符类型的变量ch */
③rf = fopen("D:\k01\24010001\in.dat","r") ; /*rf是文件指针,用来指向文件“in.dat”。fopen("D:\k01\24010001\in.dat","r") ; 以“r”读的方式打开“in.dat”文件*/
④wf= fopen("D:\k01\24010001\out.dat","w") ; /*wf是文件指针,用来指向文件“out.dat”。fopen("D:\k01\24010001\out.dat","w")以”w”写的方式打开“out.dat”文件*/
⑤while(i < 10) /*控制循环,共循环10次,那么就意味着每个正确答案4分*/
⑥fgets( tt, 50, rf ); /* fgets(tt, 50, rf);的含义是从rf所指向的文件“in.dat”中读入50个字符到数组tt中,通过循环实现将所有的字符串读入到tt数组中*/
⑦fun(tt); /*调用函数fun,从题目得知fun函数要完成的事情是: 将下标为奇数位置上的字母转换为大写。*/
⑧fprintf( wf, "%s ", tt ); /*fprintf的意思是将数据输出到out指针指向的文件中,以“%s ”格式方式输出,输出的数据是tt,同学们一定要注意,此时的tt是转换后的新字符串。*/
⑨fclose(in) ; /*关闭文件指针in。*/
⑩fclose(out) ; /*关闭文件指针out,文件打开后要将其关闭。*/
(4)【步骤2】根据考生文件夹【考试文件夹D:K01 10001】打开“in.dat”文件。
①在桌面上双击“我的电脑”图标,然后依次双击“D盘”,双击“K01”文件夹,双击“2401001”文件夹。
②显示文件夹的扩展名,如果打开文件“24010001”文件夹后显示“in.dat”文件为“in”文件,则说明系统隐藏了“文件的扩展名”,考试必须将之显示出来方能继续做题。首先单击菜单栏中的“工具”,然后选择“文件夹选项”,单击“查看”,在“高级设置”中将“隐藏已知文件扩展名”前面的勾去掉,最后单击“确定”,此时“in.dat”中的后缀已经显示出来。
③用“文本文件”的方式打开“in.dat”文件。首先选中“in.dat”文件,然后右击选择“打开方式”,在“打开方式”中选择“记事本”打开“in.dat”。
(5)【步骤3】在考生文件夹下建立“out.dat”文件。
(6)【步骤4】根据题目要求将正确答案填入“out.dat”文件中。
(7)【步骤5】保存“out.dat”文件,进行评分(注意:考试的时候没有评分环节!)单击菜单栏中的“文件”,选择“保存”即可保存“out.dat”文件。关闭“in.dat”、“out.dat”等文件后进行评分。在“答题界面”单击“评分”按钮即可显示所得分数!
3、编程题中涉及“删除或转换指定的字符操作”的相关题目:11、35
4、编程题第11题的操作过程
(1)题目:将s所指字符串中下标为奇数同时ASCII值为奇数的字符之外,其余的所有字符都删除,串中剩余字符形成一个新串存放在t所指的数组中。
(2)分析:首先考生必须知道’a’的ASCII值为97,‘A’的ASCII值为65,‘0’的ASCII值为48,往后推出来其它字符的ASCII值,将s所指字符串中下标为偶数的字符删除,然后将下标为偶数的字符删除【提醒:多读几遍题目】,放到“out.dat”文件中即可。
(3)【步骤1】打开“编程题”题目,分析NONO函数
NONO( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
char s[100], t[100] ;
FILE *rf, *wf ;
int i ;
rf = fopen("D:\k01\24010001\in.dat","r") ;
wf = fopen("D:\k01\24010001\out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%s", s) ;
fun(s, t) ;
fprintf(wf, "%s ", t) ;
}
fclose(rf) ;
fclose(wf) ;
}
①FILE *rf, *wf ; /*定义了两个文件类型的指针变量rf和wf*/
②char s[100],t[100]; /*定义了2个一维字符类型的数组s和t */
③rf = fopen("D:\k01\24010001\in.dat","r") ; /*rf是文件指针,用来指向文件“in.dat”。fopen("D:\k01\24010001\in.dat","r") ; 以“r”读的方式打开“in.dat”文件*/
④wf= fopen("D:\k01\24010001\out.dat","w") ; /*wf是文件指针,用来指向文件“out.dat”。fopen("D:\k01\24010001\out.dat","w")以”w”写的方式打开“out.dat”文件*/
⑤for(i = 0 ; i < 10 ; i++)/*控制循环,共循环10次,那么就意味着每个正确答案4分*/
⑥fscanf(rf, "%s", s) ; /* 从rf所指向的“in.dat”文件中读入一个字符串给数组s*/
⑦fun(s, t) ; /*调用函数fun,从题目得知fun函数要完成的事情是: 将s所指字符串中下标为偶数同时ASCII值为奇数的字符串删除。*/
⑧fprintf(wf, "%s ", t) ;/*fprintf的意思是将数据输出到out指针指向的文件中,以“%s ”格式方式输出,输出的数据是t,同学们一定要注意,此时的t是转换后的新字符串。*/
⑨fclose(in) ; /*关闭文件指针in。*/
⑩fclose(out) ; /*关闭文件指针out,文件打开后要将其关闭。*/
(4)【步骤2】根据考生文件夹【考试文件夹D:K01 10001】打开“in.dat”文件。
①在桌面上双击“我的电脑”图标,然后依次双击“D盘”,双击“K01”文件夹,双击“2401001”文件夹。
②显示文件夹的扩展名,如果打开文件“24010001”文件夹后显示“in.dat”文件为“in”文件,则说明系统隐藏了“文件的扩展名”,考试必须将之显示出来方能继续做题。首先单击菜单栏中的“工具”,然后选择“文件夹选项”,单击“查看”,在“高级设置”中将“隐藏已知文件扩展名”前面的勾去掉,最后单击“确定”,此时“in.dat”中的后缀已经显示出来。
③用“文本文件”的方式打开“in.dat”文件。首先选中“in.dat”文件,然后右击选择“打开方式”,在“打开方式”中选择“记事本”打开“in.dat”。
(5)【步骤3】在考生文件夹下建立“out.dat”文件。
(6)【步骤4】根据题目要求将正确答案填入“out.dat”文件中。将“in.dat”中最长的字符串复制后在“out.dat”中粘贴即可,非常简单,不要错了!!
int.dat内容如下:【注意,冒号:的ASCII为58,分号;的ASCII为59】
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
【操作1】将第一行的内容:ksjdhfksdjfhsdkjlfhsdlkjfhsdfhsdkjfhsdfhsdsdfksdjhfk复制到out.dat文件中;
【操作2】将out.dat中下标为偶数的字符先删除,记住数组下标从0开始,因此先将k字符删除,然后每隔一个位置删除一个字符。
【操作3】将ASCII码为偶数的字符删除,首先你必须知道d的ASCII为100,因此将d字符删除,结果如下:
【操作4】将ASCII码为偶数的字符删除,s的ASCII为115,不能删除;f的ASCII码为102,因此要删除;j的ASCII码为106,因此要删除;h的ASCII码为104,因此要删除;k的ASCII码为107,因此不要删除;l的ASCII码为108,因此要删除;,结果如下:
【操作5】依照1-4操作步骤将下面的行完成将得到40分。【注意,冒号:的ASCII为58,分号;的ASCII为59】
(7)【步骤5】保存“out.dat”文件,进行评分(注意:考试的时候没有评分环节!)单击菜单栏中的“文件”,选择“保存”即可保存“out.dat”文件。关闭“in.dat”、“out.dat”等文件后进行评分。在“答题界面”单击“评分”按钮即可显示所得分数!
这些是C/C++能做的
服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等