调试:https://zhidao.baidu.com/question/647832282939643725.html
====================
image.png
练习一:
image.png
这个联系,耗时18分钟。。
//整数转换成字符串
void Int2Str(int x, char *s)
{
int length = 0; //s的位数
int r; //余数,中间变量
int i = 0; //记录在数组s中的标号
int low = 0;
//处理x为负数的情况
if (x < 0)
{
s[0] = '-';
x = -x;
low = 1;
length = 1;
i = 1;
}
while (x > 0)
{
r = x % 10; //余数,中间变量
s[i] = r + '0' - 0;
x = x / 10;
length++;
i++;
}
s[i] = '\0'; //最后加上结束符
//以下对数组s进行逆序
int high = length - 1;
while (low < high)
{
char temp = s[low];
s[low] = s[high];
s[high] = temp;
low++;
high--;
}
}
void main()
{
int x = -123; //待处理的整数
char s[30]; //转换为字符串输出
Int2Str(x, s);
puts(s);
}
=================================================
image.png
void main()
{
char *str[] = { "Follow me", "BASIC", "Great wall", "Fortran", "Computer" };
char *p;
int i, j, k;
//str为字符指针数组,p为字符指针
for (i = 0; i < 4;i++) //5个字符串选择排序
{
k = i;
for (j = i + 1; j < 5;j++)
{
if (strcmp(str[k],str[j] )>0 ) //str[k]是前一个字符串,str[j]是后一个字符串
{
k = j; //如果k=0,j=1,执行此语句,让k=1,不再等于i
}
}
if (k!=i) //当k与i不相等的时候
{ //例如i=0,此时k=1
p = str[k];
str[k] = str[i];
str[i] = p;
}
}
for (i = 0; i < 5;i++)
{
printf("%s \n", str[i]);
}
}
==================================================
image.png
image.png
image.png
image.png
======================
image.png
#include<stdio.h>
#include<string.h>
#include<stdlib.h> //清屏命令在这里。
#include <windows.h> //延时10毫秒-sleep,gotoxy函数
#include <iostream>
#include <conio.h> //getch()----不用按回车,就可以输入字符。
#include <graphics.h> //EasyX库,所使用的!
#include <math.h> //三角函数
#include <algorithm> //sort函数排序方法,https://blog.csdn.net/BIGKALA/article/details/81624691,这是方法适用的地址
using namespace std;
//判断字符是否为英文字母
int isEnglishCharacter(char c)
{
if ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z'))
{
//这个是英文字母
return 1;
}
else
{
return 0;
}
}
//判断字符是不是分隔符
int isSeperator(char c)
{
if (c == ',' || c == '.' || c == '!' || c == '?'||c==' ')
{
return 1;
}
else
{
return 0;
}
}
void main()
{
char s[] = "you are a student,are you? ";
int i = 0; //s的下标
char word[20]; //一个英文单词
int j = 0; //word的下标
int wordNum = 0; //句子中的单词个数
int length = strlen(s);
while (i < length)
{
//当遇到分隔符之后,就跳过这些分隔符
while (isSeperator(s[i]))
{
i++;
}
//跳过一个英文单词
while (isEnglishCharacter(s[i]))
{
word[j] = s[i];
i++;
j++;
}
word[j] = '\0';
wordNum++;
puts(word);
j = 0; //很关键,每次循环,将j=0,可以使word成为一个单词,没有连在一起的单次
}
cout << "单次个数是:" << wordNum << endl;
}
=========================
统计一份文档中,关键词的词频率
例如,我想统计are这个单词的出现数量
//判断字符是否为英文字母
int isEnglishCharacter(char c)
{
if ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z'))
{
//这个是英文字母
return 1;
}
else
{
return 0;
}
}
//判断字符是不是分隔符
int isSeperator(char c)
{
if (c == ',' || c == '.' || c == '!' || c == '?'||c==' ')
{
return 1;
}
else
{
return 0;
}
}
void main()
{
char s[] = "you are a student,are you? ";
int i = 0; //s的下标
char word[20]; //一个英文单词
int j = 0; //word的下标
int wordNum = 0; //句子中的单词个数
int Number1 = 0; //要统计的单词个数
char s2[] = "are"; //目标单词
int length = strlen(s);
while (i < length)
{
//当遇到分隔符之后,就跳过这些分隔符
while (isSeperator(s[i]))
{
i++; //让i自增,直接跳过这些。
}
//遍历的时候,若是英文单词,则跳过一个英文单词,然后进行一些记录
while (isEnglishCharacter(s[i]))
{
word[j] = s[i];
i++;
j++;
}
word[j] = '\0'; //在每个词后面,加上结束符
if (strcmp(word,s2)==0)
{
Number1++;
}
wordNum++; //单词总数量自己增加。
puts(word);
j = 0; //很关键,每次循环,将j=0,可以使word成为一个单词,没有连在一起的单次
}
cout << "单次个数是:" << wordNum << endl;
cout << "目标单词" << s2 << "的个数是:" << Number1 << endl;
}
网友评论