C++作业(字符数组及函bb数)
- 格式:doc
- 大小:81.50 KB
- 文档页数:9
C语言/C++学习联盟数组int float doublechar 字符数组一、字符数组1、字符数组的一般形式char 数组名[常量表达式]char cArray[5];2、字符数组的引用跟其他类型是一样,用下标。
char cArray[5];cArray[0]='H';cArray[1]='e';cArray[2]='l';cArray[3]='l';cArray[4]='o';3、字符数组的初始化(1)逐个元素进行初始化,初始化时可以省略下标。
char cArray[5] = { 'H', 'e','l','l','o' };char cArray[] = { 'H', 'e', 'l', 'l', 'o' };(2)用字符串对数组赋值,初始化时可以省略下标char cArray[5] = {"hello"};char cArray[]={"hello"};char cArray[]="hello"; (最常用)注意:1、使用字符串进行初始化,系统会自动在数组里面加上一个'\0',作为字符串结束的标志char cArray[]="hello"; 等效于char cArray[] = { 'H', 'e', 'l', 'l', 'o','\0' };printf("%d\n", sizeof(cArray));printf("%d\n", sizeof(cArray1));注意:2、用中文的字符串一个中文的字节数为2.printf("%d", sizeof("九夏"));// \03、在使用字符串初始化,数组大小要比我们需要的元素数量大。
c 语言字符数组字符数组是C语言中常用的数据类型之一,它可以用来存储一系列字符。
在C语言中,字符数组以null字符('\0')结尾,因此它的长度可以根据实际存储的字符个数动态变化。
使用字符数组时,我们可以对其进行初始化、赋值、拷贝、连接等各种操作。
在本文中,我们将介绍字符数组的基本用法以及一些常见的应用场景。
一、字符数组的定义和初始化在C语言中,我们可以通过以下方式来定义和初始化一个字符数组:```cchar str1[10]; // 定义一个长度为10的字符数组char str2[10] = "Hello"; // 定义并初始化一个长度为10的字符数组char str3[] = "Hello"; // 定义并初始化一个长度为6的字符数组```二、字符数组的赋值和拷贝我们可以使用赋值运算符‘=’将一个字符数组赋值给另一个字符数组,或者使用strcpy函数进行拷贝操作。
例如:```cchar str1[10];char str2[10] = "Hello";strcpy(str1, str2); // 将str2拷贝到str1中```三、字符数组的连接我们可以使用strcat函数将两个字符数组连接起来。
例如:```cchar str1[10] = "Hello";char str2[10] = "World";strcat(str1, str2); // 将str2连接到str1的末尾```四、字符数组的输入和输出在C语言中,我们可以使用scanf函数来输入一个字符数组,使用printf函数来输出一个字符数组。
例如:```cchar str[10];scanf("%s", str); // 输入一个字符数组printf("%s", str); // 输出一个字符数组```五、字符数组的比较我们可以使用strcmp函数来比较两个字符数组是否相等。
字符数组1、编写程序,从键盘输入一任意字符串(不包含空格),然后输入所要查找字符。
如果存在则输出它在字符串中第一次出现的位置,否则输出NO。
样例输入:Hello a样例输出:NO样例输入:Hello l样例输出:2#include<iostream.h>int main( ){ char str[100],ch; int i,flag=0;cin>>str>>ch;for(i=0;str[i]!=0;i++)if(str[i]==ch){flag=1;break;}if(flag) cout<<i;else cout<<"NO";return 0;}2、编写程序,将一个字符串逆序存放,并与原字符串连接后输出。
输入字符串(不包含空格),输出处理后的结果。
样例输入:china样例输出:chinaanihc#include<iostream.h>#include<string.h>int main( ){ char a[100],b[100]; int i,len=0;cin>>a;len=strlen(a);for(i=0;i<len;i++)b[i]=a[len-i-1];b[i]=0; strcat(a,b);cout<<a;return 0;}3、编写程序,输入两个字符串(不包含空格),输出两个字符串中第一个不相同字符的ASCII 值之差的绝对值,如果两个字符串完全相同则输出0。
样例输入:abcd abed样例输出:2样例输入:abcd abcd样例输出:0#include<iostream.h>#include<math.h>int main( ){ char a[100],b[100]; int i,len=0;cin>>a>>b;for(i=0;a[i]!=0||b[i]!=0;i++)if(a[i]!=b[i])break;cout<<abs(a[i]-b[i]);return 0;}4、编写程序,输入字符串(不包含空格),统计英文字母、数字字符及其他字符的个数。
实验七c字符数组和字符串函数7.1#include<stdio.h>#include<string.h>int main(){char a[40];int i;gets(a); //输⼊字符串进⼊数组for(i=0;i<strlen(a);i++){if(a[i]>='a'&&a[i]<='z')a[i]-=32;}puts(a);printf("\n");return 0;}7.2#include<stdio.h>#include<string.h>int main(){char a[40],b[40];int i,j;gets(a); //输⼊字符串gets(b);j=strlen(b); //求取字符串长度if(j>=5){for(i=strlen(a)-1;i>=0;i--)a[i+5]=a[i];for(i=0;i<5;i++)a[i]=b[i];}else{for(i=strlen(a)-1;i>=0;i--)a[i+j]=a[i];for(i=0;i<j;i++)a[i]=b[i];}puts(a);printf("\n");return 0;}7.3#include<stdio.h>#include<string.h>int main(){char a[81],b;int i,count=0;gets(a);b=getchar(); //读取字符bfor(i=0;i<strlen(a);i++){if(a[i]==b)count++;}printf("%d\n",count);puts(a);return 0;}7.4#include<stdio.h>#include<string.h>int main(){char a[80];int i;gets(a);for(i=0;i<strlen(a);i++){if(a[i]>='A'&&a[i]<'Z')a[i]+=33;else if(a[i]=='Z')a[i]+=7; //Z为90,a为97elsecontinue;}puts(a);printf("\n");return 0;}7.5#include<stdio.h>#include<string.h>int main(){char a[80],b[80];int i,j;gets(a);for(i=strlen(a)-1,j=0;i>=0;i--,j++) b[j]=a[i];strcpy(a,b);printf("\n");return 0;}7.6#include<stdio.h>#include<string.h>int main(){char a[80];int i;gets(a);for(i=0;i<strlen(a);i++){if(i%2==0){if((a[i]>='A'&&a[i]<'Z')||(a[i]>='a'&&a[i]<'z')) a[i]+=1;else if(a[i]=='z'||a[i]=='Z')a[i]-=25;elsecontinue;}else{if((a[i]>'A'&&a[i]<='Z')||(a[i]>'a'&&a[i]<='z')) a[i]-=1;else if(a[i]=='a'||a[i]=='A')a[i]+=25;elsecontinue;}}puts(a);printf("\n");return 0;}7.7#include<stdio.h>#include<string.h>int main(){char a[80];int i=0,sum=1;gets(a);for(i=0;i<strlen(a);i++){if(a[i]==' ')sum++;}printf("%d\n",sum);}。
C语⾔字符数组超细讲解看到标题,有不少朋友会想:字符数组不也是数组吗?为什么要单独拿出来讲哩?莫⾮它是朵奇葩?哈哈,确实,⼀起来认识⼀下这朵数组界的奇葩吧!⼀、字符数组的定义、引⽤、初始化⼤家好!我是字符数组,看我的名字就知道啦,我是由字符型元素构成哒!我的定义⽅式和元素引⽤⽅式和⼀般数组相同哦,我们可是⼀家⼈哦!char line [80];这是定义了⼀个长度为 80 的⼀维字符数组。
char m [2] [3];这是定义了⼀个 2 ⾏ 3 列的⼆维字符数组。
printf ("%c", line [2]);这是在应⽤数组元素。
so easy!字符的初始化⽅法可以分为两种:(1)将字符逐个赋给数组中的每个元素;char c [5] = {'c', 'h', 'i', 'n', 'a'}; 这是把5个字符分别赋给 c [0] ~ c [4] 这 5 个元素中。
(2)直接⽤字符串常量给数组赋初值。
char c [6] = "china"; 看到这个例⼦,⼜有好奇的⼩伙伴发问了:china 这不只有5个字符吗?为啥前⾯写着 6 ? 实验检验真知,让我们把 5 和 6 都运⾏⼀下: 当括号⾥⾯写成 5 时,程序就会被报错! 当括号⾥⾯写成 6 时,程序就会正常!有些⼩伙伴的头上是不是出现了许多问号呢?先别着急,下⾯⼩编就会把谜底揭开。
敲⿊板!我们要知道:⽆论⽤以上哪种⽅法进⾏初始化,如果提供的字符个数⼤于数组长度,系统就会进⾏语法错误处理,⽐如上⾯的情况;如果提供的字符个数⼩于数组长度,则只会给前⾯⼏个元素赋值,剩下的⾃动设置为0,即 ’\0‘。
给你吃个栗⼦:char a [10] = {'c', 'h', 'i', 'n', 'a'}这⾥我们定义了10个长度,但只给 5 个元素赋值,那么这个数组的状态就会是:c h i n a\0\0\0\0\0⼆、字符串和字符串结束的标志现在就是揭⽰谜底的时候啦!⾸先我们区分⼀下“字符常量”和“字符串常量”:字符常量(⼀颗⼭楂)字符串常量(简称:字符串)(⼀串糖葫芦)⽤单引号括起来⽤双引号括起来⼀个字符⼀串字符不必有结束字符 '\0'要有结束字符 '\0'回到前⾯:char c [6] = "china"这⾥的"china"就是⼀个字符串,C语⾔约定⽤'\0'作为字符串的结束标志,它占内存空间。
C 字符数组字符数组是C 语言中最常用的数组类型。
下面我们通过编写一个程序,来说明字符数组以及操作字符数组的函数的用法。
该程序读入一组文本行,并把最长的文本行打印出来。
该算法的基本框架非常简单:while (还有未处理的行)if (该行比已处理的最长行还要长)保存该行为最长行保存该行的长度打印最长的行从上面的框架中很容易看出,程序很自然地分成了若干片断,分别用于读入新行、测试读入的行、保存该行,其余部分则控制这一过程。
因为这种划分方式比较合理,所以可以按照这种方式编写程序。
首先,我们编写一个独立的函数getline,它读取输入的下一行。
我们尽量保持该函数在其它场台也有用。
至少getline 函数应该在读到文件末尾时返回一个信号;更为有用的设计是它能够在读入文本行时返回该行的长度,而在遇到文件结束符时返回0。
由于0 不是有效的行长度,因此可以作为标志文件结束的返回值。
每一行至少包括一个字符,只包含换行符的行,其长度为1。
当发现某个新读入的行比以前读入的最长行还要长时,就需要把该行保存起来。
也就是说,我们需要用另一个函数copy把新行复制到一个安全的位置。
最后,我们需要在主函数main中控制getline和copy这两个函数。
以下便是我们编写的程序:#include <stdio.h>#define MAXLINE 1000 /* maximum input line length */int getline(char line[], int maxline);void copy(char to[], char from[]);/* print the longest input line */main(){int len; /* current line length */int max; /* maximum length seen so far */char line[MAXLINE]; /* current input line */char longest[MAXLINE]; /* longest line saved here */max = 0;while ((len = getline(line, MAXLINE)) > 0)if (len > max) {max = len;copy(longest, line);}if (max > 0) /* there was a line */printf("%s", longest);return 0;}/* getline: read a line into s, return length */int getline(char s[],int lim){int c, i;for (i=0; i < lim-1 && (c=getchar())!=EOF && c!='\n'; ++i)s[i] = c;if (c == '\n') {s[i] = c;++i;}s[i] = '\0';return i;}/* copy: copy 'from' into 'to'; assume to is big enough */void copy(char to[], char from[]){int i;i = 0;while ((to[i] = from[i]) != '\0')++i;}程序的开始对getline和copy这两个函数进行了声明,这里假定它们都存放在同一个文件中。
c语言字符串数组写法在C语言中,字符串数组是一种特殊的数据类型,用于存储和处理一系列字符的序列。
字符串数组可以被看作是由多个字符组成的一维数组,每个元素都是一个字符。
字符串数组在C语言中非常常见,用于存储文本数据、命令参数、文件路径等等。
在C语言中,字符串数组的声明和初始化有多种方式。
下面是常见的几种写法:1.使用字符数组声明:可以使用字符数组来声明字符串,例如:```char str[] = "Hello, World!";```在这种声明方式中,字符数组的大小由初始化时的字符串长度决定。
2.使用指针声明:可以使用指针来声明字符串,例如:char *str = "Hello, World!";```在这种声明方式中,指针指向一个字符串常量,在程序中无法修改字符串的内容。
3.使用字符数组初始化:可以使用字符数组来初始化字符串,例如:```char str[14] = {'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};```在这种初始化方式中,使用花括号来初始化每个字符,并且需要在结尾添加一个空字符`\0`表示字符串的结束。
4.使用字符串常量初始化:可以使用字符串常量来初始化字符串数组,例如:char str[] = {'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};```这种初始化方式与上述方式类似,只是省略了数组的大小,并且自动在结尾添加了一个空字符`\0`。
计算机C语言(判断题专项练习)及答案一、基础知识(每小题1 分,共 10分)()1、程序调试就是找出并改正c源程序中的语法错误。
()2、一个变量的数据类型被强制转换后,它将保持被强制转换后的数据类型。
()3、在标准c语言中,共用体变量中的各成员是共同占用一块存储空间()4、赋值运算符的结合方向为自右向左。
()5、c语言的标识符由字母、数字和下划线组成,其中第一个字符必须是字母或下划线。
()6、在c程序中, aph和Aph 是两个相同的变量()7、计算机语言(computer language)是人与计算机之间通讯的语言。
()8、在c语言中,当一个逻辑表达式的值为"假"时,该表达式的值一定是 0()9、在c程序中,abc与ABC是两个相同的变量。
()10、c语言中sizeof 是函数,而不是运算符。
二、控制结构(每小题1 分,共 10分)()1、if 语句后面的表达式只能是关系表达式()2、在switch语句中,可以根据需要使用或不使用break语句。
()3、在标准c中,逻辑表达式中只允许出现逻辑型数据。
()4、逻辑表达式的值只能为1或0。
()5、c程序中if语句可以单独存在。
()6、省略else的if语句的一般形式如下,若表达式的值为"真",则执行语句1;否则,就什么也不做。
if (表达式) 语句1()7、在if语句中,必须出现else。
()8、内层break语句可以终止嵌套的switch,使最外层的switch结束。
()9、switch语句中的default必须出现在所有case之后。
()10、switch语句中,每一个case的冒号后面都必须至少跟有一条语句。
三、循环结构(每小题1 分,共 10分)()1、for循环的三个表达式可以任意省略,while,do-while也是如此。
()2、选择结构( if 语句)和循环结构都可以使用嵌套形式()3、在循环过程中,使用break语句和continue语句的作用是一样的()4、无论哪种循环语句,都必须给出循环结束条件。
字符数组1、编写程序,从键盘输入一任意字符串(不包含空格),然后输入所要查找字符。
如果存在则输出它在字符串中第一次出现的位置,否则输出NO。
样例输入:Hello a样例输出:NO样例输入:Hello l样例输出:2#include<iostream.h>int main( ){ char str[100],ch; int i,flag=0;cin>>str>>ch;for(i=0;str[i]!=0;i++)if(str[i]==ch){flag=1;break;}if(flag) cout<<i;else cout<<"NO";return 0;}2、编写程序,将一个字符串逆序存放,并与原字符串连接后输出。
输入字符串(不包含空格),输出处理后的结果。
样例输入:china样例输出:chinaanihc#include<iostream.h>#include<string.h>int main( ){ char a[100],b[100]; int i,len=0;cin>>a;len=strlen(a);for(i=0;i<len;i++)b[i]=a[len-i-1];b[i]=0; strcat(a,b);cout<<a;return 0;}3、编写程序,输入两个字符串(不包含空格),输出两个字符串中第一个不相同字符的ASCII 值之差的绝对值,如果两个字符串完全相同则输出0。
样例输入:abcd abed样例输出:2样例输入:abcd abcd样例输出:0#include<iostream.h>#include<math.h>int main( ){ char a[100],b[100]; int i,len=0;cin>>a>>b;for(i=0;a[i]!=0||b[i]!=0;i++)if(a[i]!=b[i])break;cout<<abs(a[i]-b[i]);return 0;}4、编写程序,输入字符串(不包含空格),统计英文字母、数字字符及其他字符的个数。
样例输入:abc129++*ABC样例输出:6 3 3#include<iostream.h>int main( ){ char str[100]; int i,a=0,b=0,c=0;cin>>str;for(i=0;str[i]!=0;i++)if(str[i]>='a'&&str[i]<='z'|| str[i]>='A'&&str[i]<='Z') a++;else if(str[i]>='0'&&str[i]<='9') b++;else c++;cout<<a<<" "<<b<<" "<<c;return 0;}5、在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易地识别。
一种简单的加密方法:对给定的一个字符串,把其中的每个英文字母都用其后面第4个字母代替,如果后面不足4个字母,则从a或A重新开始。
编写程序,从键盘输入一任意字符串(不包含空格),输出加密后的结果。
样例输入:Hello样例输出:Lipps#include<iostream.h>int main( ){ char str[100]; int i;cin>>str;for(i=0;str[i]!=0;i++)if(str[i]>='a'&&str[i]<='z') str[i]=(str[i]-'a'+4)%26+'a';else if(str[i]>='A'&&str[i]<='Z') str[i]=(str[i]-'A'+4)%26+'A';cout<<str;return 0;}函数1、编写两个函数,函数功能分别是:求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。
样例输入:15 25样例输出:5 75#include<iostream.h>int fun1(int a,int b){ int i,gys;for(i=1;i<=a;i++)if(a%i==0&&b%i==0) gys=i;return gys; }int fun2(int a,int b){ int i;for(i=a;i<=a*b;i++)if(i%a==0&&i%b==0) return i; }int main( ){ int m,n;cin>>m>>n;cout<<fun1(m,n)<<" "<<fun2(m,n);return 0;}2、编写函数digit(num, k),函数功能是:求整数num从右边开始的第k位数字的值,如果num位数不足k位则返回0。
要求输入输出均在主函数中完成。
样例输入:4647 3样例输出:6样例输入:23523 7样例输出:0#include<iostream.h>int digit(int num,int k){ int i,x;for(i=1;i<=k;i++){ x=num%10; num=num/10;}return x; }int main( ){ int num, k;cin>>num>>k;cout<<digit(num,k);return 0;}3、哥德巴赫猜想指出:任何一个不小于6的偶数都可以表示为两个素数之和。
例如:6=3+38=3+5 … 50=3+47。
从键盘输入n(n>=6且为偶数),输出对应的表达式,要求编写函数判断一个数是否为素数。
样例输入:8样例输出:8=3+5#include<iostream.h>int fun(int n){ int i;if(n<2) return 0;for(i=2;i<n;i++)if(n%i==0) return 0;return 1; }int main( ){ int num,i;cin>>num;for(i=2;i<num;i++)if(fun(i)&&fun(num-i)){ cout<<num<<"="<<i<<"+"<<num-i; break;}return 0;}4、有一分段函数如下,编写函数进行计算,在主函数中输入x值,输出y值。
样例输入:-1.5样例输出:0.00250501样例输入:5.6样例输出:31.8957样例输入:12.5样例输出:4.06202#include<iostream.h>#include <math.h>int main(){ float x,y;float fun(float); //声明函数cin>>x;cout<<fun(x);}float fun(float x){ if(x<=0) return sin(x)+1;else if(x<10) return x*x+3/x;else return sqrt(x+4); }5、编写函数,函数功能是:统计整数n的各位上出现数字1、2、3的次数。
要求输入输出均在主函数中完成。
样例输入:123114350样例输出:3 1 2#include<iostream.h>void fun(int num ,int x[] ){ while(num!=0){ switch(num %10){ case 1:x[0]++;break;case 2:x[1]++;break;case 3:x[2]++;break; }num = num /10; }}int main(){ int a[3]={0},n, i;cin>>n;fun(n,a);for(i=0;i<3;i++)cout<<a[i]<<" ";return 0 ; }6、编写函数fun(num),其中num是一个n位数,函数功能是:求整数num的后n-1位,如果num是一位数则返回0,要求输入输出均在主函数中完成。
样例输入:9样例输出:0样例输入:6734样例输出:734样例输入:1000样例输出:0样例输入:10101样例输出:101#include <iostream.h>int fun(int n){ int i=1,sum=0,x;while(n>=10){ x=n%10;n=n/10;sum=sum+x*i;i=i*10;}return sum;}int main(){ int num;cin>>num;cout<<fun(num);return 0; }7、编写函数,函数功能是:将两个两位数的正整数a、b合并成一个整数c,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的百位和十位。
a、b由键盘输入,输入输出均在主函数中完成。
样例输入:45 12样例输出:4125#include <iostream.h>int fun(int a, int b){return a%10+a/10*1000+b%10*10+b/10*100;}int main(){ int m,n;cin>>m>>n;cout<<fun(m,n);return 0; }8、求数列的前n项和要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。
累加过程和输入输出均在主函数中完成。
样例输入:10样例输出:0.382179#include <iostream.h>float fun(int i){float x; int fh;fh=i%2?1:-1;x=1.0/(i*(i+1))*fh;return x;}int main(){ int n,i;float s=0;cin>>n;for(i=1;i<=n;i++)s+=fun(i);cout<<s;return 0;}9、求数列其中分母为n以内(包括n)的素数。