字符串操作复习(一)

5 篇文章 0 订阅
2 篇文章 0 订阅

最近复习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;**
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值