c语言练习题目_第1页
c语言练习题目_第2页
c语言练习题目_第3页
c语言练习题目_第4页
c语言练习题目_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、(1) ASCLL码字符ASCLL码094857AZ6590az97122(2) 数值类型和字符类型之间的相互转换当一个浮点数转换为一个字符类型的时候,浮点数先转换为int类型,然后再转换为char类型。char c=65.25;cout<<c;当一个char类型转换为1个数值类型时候,字符的ASCLL码被转换到指定的数值变量中。int i=A;cout<<i;(3) 字符的比较(>,<,!=,=)a>b为假;1<8为真;a<A为假;说明:字符之间的比较是比较其ASCLL码的大小。字符的输入与输出与普通的变量的输入输出方法一样。二、字符串的

2、简单操作(1) 赋值字符串常量可以用字符串常量或者变量来赋值。例如:S1=”sssz”S2=S1;(2) 输入输出string s;cin>>s;cout<<s;(3) 访问字符串中某个字符。for(i=0;i<n;i+)cout<<ai;(3) 加法运算它的作用是将两个字符串连接到一起。例如:s1=”aaa”+”bbb”;cout<<s1;此时在屏幕上会输出aaabbb。(4) 关系运算(>,<,<=,>=,!=,=)ab<abc为真;abc<abs为真;12<2为真;说明:比较方法:逐位比较,第

3、一个和第一个比较,相同继续比较下一个,不同,返回结果!知识点3:一维数组的基本操作下面的实例使用了上面的函数:#include <iostream>#include <cstring> using namespace std; int main () char str111 = "Hello" char str211 = "World" char str311; int len ; / 复制 str1 到 str3 strcpy( str3, str1); cout << "strcpy( str3, str

4、1) : " << str3 << endl; / 连接 str1 和 str2 strcat( str1, str2); cout << "strcat( str1, str2): " << str1 << endl; / 连接后,str1 的总长度 len = strlen(str1); cout << "strlen(str1) : " << len << endl; return 0;运行结果:strcpy( str3, str1) : He

5、llostrcat( str1, str2): HelloWorldstrlen(str1) : 10做题的常见操作:国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍只是,因为是镜子嘛,增加的那部分是反的。 比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。 给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。样例输入:AABBBBAAAABBBBAA样例输出:4#include<stdio.h> #in

6、clude<string.h>int main()char s105;scanf("%s",s);int l=strlen(s);while(l!=1)int ok=1;for(int i=0;i<l/2;i+)if(si!=sl-1-i) ok=0;break;if(ok) l=l/2;if(!ok) break;printf("%d",l);字符串1. 概念用双引号引起来的就是字符串"a string"/ C语言编译器会将两个并列的字符串自动拼接成一个字符串"a string""an

7、other a string"/ 折行符''是代码换行连接的标记(一行不够写)"a looooooooooong  string" 常见ASCII编码:'A' = 65    'a' = 97    '0' = 48    '0' = 0int a10; /表示在栈中分配了40Bytes的内存空间,空间的首地址是achar a10; /表

8、示在栈中分配了10Bytes的内存空间,空间的首地址是a 如何表示和保存字符串:    C语言中没有字符串类型,用一片内存空间保存一串字符,约定用整数0(或字符'0')来表示一个字符串的结束。    使用字符串时只需要记录字符串的开始位置。C语言中的字符串用字符数组表示:char a6 = 'h','e','l','l','o','0'/特殊的字符数组(字符串)char a6 

9、;= "hello" /简化版写法(这种写法 0省略)char *a = "hello" /定义一个字符串的另一种写法2. 初始化char str = "hello" /常用char str = 'h', 'e', 'l', 'l', 'o', '0'/ 部分初始化, 部分

10、初始化中, 没有被初始化的元素默认是0 (0对应的ASCII 0)char str8 =  'h', 'e', 'l', 'l', 'o' / hello000char str5 = 'h', 'e', 'l', 'l', 'o' /该方式不是字符串, 而是字符数组, 因为没有0

11、char str = 'h', 'e', 'l', 'l', 'o' /同上,是字符数组 " " /包含一个空格"" /空字符串,什么东西都没有 字符串的赋值:· 给 char* 类型的字符串赋值,可以直接使用 "=" 号· 给 char 类型的字符串赋值,需要使用 strcpy 函数字符串的特点:· 需要明白的一点就是字符串以

12、0结尾, 没有0就不是字符串· 只要是用双引号括起来的都是字符串· 字符串的本质就是数组(字符数组)char str = "hello"str1 = 'y'printf("%s", str);/hyllo 注意: 字符串变量 和 普通的字符数组 有一定的区别 C语言规定, 字符串必须以0结尾(作为字符串的结束符号), 所以字符串变量的元素个数比字符数组的元素个数多一个'0'(0)char

13、0;a5 = 'h', 'e', 'l', 'l', 'o' /普通的字符数组(不是字符串,因为没有0)char a8 = 'h', 'e', 'l', 'l', 'o' /部分初始化(未初始化的部分都为0),以0结尾(是字符串)char a6 = 'h', 'e', 

14、;'l', 'l', 'o', '0' /以0结尾(是字符串)char a6 = 'h', 'e', 'l', 'l', 'o', 0; /以0结尾(是字符串)注意:'0' = 48;/"abc0d" 双引号里是字符'0'不是数值0'0' = 0;

15、3. 输出%s的原理, 从传入的"地址"开始逐个取出, 直到遇到"0"位置 如何输出字符串:· 使用printf的%s占位符来输出· 使用puts函数来输出(自动换行,原样输出)char str = "how are you"printf("%sn", str); /how are youputs(str); /how are you 4. 输入· 利用scanf函数接收字符串 · 利用gets函数接收字符串

16、3; 利用fgets函数接收字符串(推荐常用!)/* 给字符数组赋值的三种方式 */#include <stdio.h>#include <string.h>void mystrcpy(char *str1, const char *str2)     /*str2对*str1逐个字符进行赋值    /*str2直到把'0'赋值给*str1时,*str1的结果就是0,循环就结束!    while (*str1+ =

17、 *str2+);int main()     char str10 = "abc"/1.使用循环给字符数组赋值    for (int i = 0; i < 10; i+)         stri = "ABC"i; /等价于 *("ABC"+i),"ABC"返回的是A的地址(即首地址)       

18、0;printf("str = %sn", str);/str = ABC/2.使用标准库函数给字符数组赋值    strcpy(str, "XYZ");    printf("str = %sn", str);/str = XYZ/3.使用自定义函数给字符数组赋值    mystrcpy(str, "OKOK");    printf("str = %sn"

19、;, str);/str = OKOK    return 0;5. 库函数· 计算字符串的长度(strlen):(计算字符串中有多少个字符,注意不包括0)strlen的原理:从传入的地址开始逐个取出字符串,每取出一个就让计数器+1.直到遇到0为止。· 字符串拼接(strcat)原理:首先遍历第一个字符串,直到遇到0为止,然后取出第二个字符串中的字符,从0的位置开始添加,添加完毕之后再在最后添加一个0 · 字符串拷贝(strcpy)strcpy函数会将源的数据拷贝到目标中,并且会覆盖掉目标中原有的数据,目标的容积必

20、须能够存放拷贝的数据, 如果容积不够会报错。· 字符串比较(strcmp)原理: 取出字符串中的每一个字符进行逐个比较, 如果发现不相等就不会继续往下比较#include <stdio.h>#include <string.h>#include <stdbool.h>/* strcpy 字符串赋值函数 */void test1()     char str6=0;/表示在栈中分配了6个字节的内存空间,空间的首地址是str(数组名)

21、    strcpy(str, "abc");/给字符数组赋值,str10 = "abc"    strncpy(str, "AABBCC", sizeof(str)-2);/只赋值前4个字符(AABB);str6 = "AABB"/* strcat 给一个字符串追加内容 */void test2()     char str8 = "abc"&#

22、160;   strcat(str, "def"); /str8 = "abcdef"    strncat(str, "kkkkkk", 3);/只追加前3个字符; str8 = "abckkk"/* strcmp 比较字符串内容的大小 */void test3()     char *str1 = "abcd.c"   &#

23、160;char *str2 = "abcf.m"    strcmp(str1, str2); /返回值为: -2 (表示 str1 < str2)    strncmp(str1, str2, 3); /比较前3个字符的大小; 返回值为: 0 (表示 str1 = str2)    bool r = str1 > str2;/比较地址大小(str1和str2都是地址)/* memset

24、60;内存清理函数(清空) */void test4()     char str8 = "abcd"    memset(str, 0, sizeof(str);/清理内存空间(开始位置, 清零, 空间大小/长度);    strcpy(str, "ABCD");/清空后重新赋值    printf("str = %sn", str);int main()     test4();    return 0; /strcmp函数实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论