最近复习C语言,发现字符串操作这块都快忘光了。顺便做了几道题,复习一下。
复习函数:
1. #include <string.h>
void memset( void buffer, int ch, size_t count );
功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回
buffer指针。
memset() 可以应用在将一段内存初始化为某个值。
例如:
memset( the_array, ‘\0’, sizeof(the_array) );
这是将一个数组的所以分量设置成零的很便捷的方法。
题目:
输入个整数以空格隔开以0结束,并输出,且输出整数的个数和个数最多的整数值。
N<100,整数在1~100之间。
如:
输入:2 12 2 5 :
输出:2 12 2 5 4 2
此处为了统计最多的是哪一个采用数组标记的方法:
如有三个12输入,则data[12]=3;
//输入N个整数,输出,,输出次数最多的
int data[100];
int max = 0; //先用于统计个数,后面标记最多
memset(data, 0, 100);//数组初始化
int in=0; //用于接收输入
do {
cin >> in;
if (in == 0)
break;
cout << in<<" ";
data[in]++;
max++;
} while (0 != in);
cout << max << " "; //输出输入个数
max = 0;
//找出输入最多的数字
for (int i = 1,in=0; i < 100; i++)
{
if (data[i] > in) {
in = data[i];
max = i;
}
;
}
cout << max << endl;
**2. #include <ctype.h> **
int islower( int ch );
功能:如果参数是小写字母字符,函数返回非零值,否则返回零值。
isupper( int ch );
功能:如果参数是大写字母字符,函数返回非零值,否则返回零值。
int isxdigit( int ch );
功能:如果参数是十六进制数字字符(即:A-F, a-f, 0-9),
函数返回非零 值,否则返回零值。
int isdigit( int ch );
功能:如果参数是0到9之间的数字字符,函数返回非零值,否则返回零值.
char c;
scanf( “%c”, &c );
if( isdigit ( c ) )
printf( “You entered the digit %c\n”, c );
int toupper( int ch );
功能:函数字符ch的大写形式。
int tolower( int ch );
功能:函数字符ch的小写形式。
题目:
输入一个英语句子,输出该句子,统计其中单词个数,将所有单词首字母大学。
如:
输入:I am a boy.
输出:4 I Am A Boy.
此处:每个空格之后为每个单词的开头。单词个数为空格个数加一。
代码:
string str;
char ch[100];
gets_s(ch, 100);
str = ch;
cout << str << endl;;
int count = 0;
for (int i = 0; i < str.length(); i++)
{
if (str[i] == ' '){
i++;
str[i] = toupper(str[i]);
count++;
}
}
count++;
cout << str << endl;
cout << "个数:"<<count << endl;
题目:
十六进制字符串转化为十进制数字。
第一步:入参检测;
**
string str;
cin >> str;
int flag = 1;
for (int i = 0; i < str.length(); i++)
{//检查输入
if (isxdigit(str[i]));
else {
flag = 0;
}
if (flag == 0) {
cout << "输入错误" << endl;
return;
}
}**
第二步:求和计算。
**
int sum = 0;
int temp;
for (int i = 0; i < str.length(); i++)
{
if (isupper(str[i])) {//da写字母
temp = (int)(str[i] - 'A') + 10;
}
else if (islower(str[i])) {//小写
temp = (int)(str[i] - 'a') + 10;
}
else
{
temp = str[i] - '0';
}
sum += (temp*pow(16, (str.length() - i - 1)));
}
cout << sum;**