c++上机实验

#include<iostream>
using namespace std;
void myfunc(char str[],int& letterCount, int& digitCount, int& othersCount) 
{
	int index = 0;
	while (str[index])
	{
		cout << str[index] << endl;
		if (str[index] >='0'&& str[index] <= '9') digitCount++;
		else if (str[index]>='A' && str[index] <= 'z') letterCount++;
		else othersCount++;
		index++;
	}
}
int main()
{
	cout << "Input a string" << endl;
	char string[80];
	cin.getline(string,80);//从输入流中读取80个数字,存到字符数组中,这个是不是1就不会有“\0”了呢?
	int letterCount = 0;
	int digitCount = 0;
	int othersCount=0;
	myfunc(string, letterCount, digitCount, othersCount);
	cout << "letterCount=" << letterCount << endl;
	cout << "digitCount=" << digitCount << endl;
	cout << "othersCount=" << othersCount << endl;

}

 

#include <iostream>;
using namespace std;
void f(int arr[],int exist[],char s1[], char s2[])//s1出现了哪些字母?s1、s2同时出现的字母有哪些?(不区分大小写)
{
	for (int i = 0;i < 26;i++)
	{
		arr[i] = 0;
	}
	for (int i = 0;i < 26;i++)
	{
		exist[i] = 0;
	}
	for(int i=0;s1[i] != NULL;i++)//如何记录是否已经储存了呢?
	{
		if ('a' <= s1[i] && s1[i] <= 'z') arr[s1[i] - 'a']=1;
		else if ('A' <= s1[i] && s1[i] <= 'Z') arr[s1[i] - 'A']=1;
	}
	for(int i=0;s2[i]!=NULL;i++)
	{
		if ('a' <= s2[i] && s2[i] <= 'z' && arr[s2[i] - 'a'] == 1) exist[s2[i] - 'a'] = 1;
		else if('A' <= s2[i] && s2[i] <= 'Z' && arr[s2[i] - 'A'] == 1) exist[s2[i] - 'A'] = 1;
	}
}
int main()
{
	char s1[80];
	char s2[80];
	cout << "Input 2 strings" << endl;
	cin.getline(s1, 80);//getline允许有空格,空格会录进去,回车键是结束键
	cin.getline(s2, 80);
	int arr[26];
	int exist[26];
	for (int i = 0;i < 26;i++)
	{
		arr[i] = 0;
	}
	for (int i = 0;i < 26;i++)
	{
		exist[i] = 0;
	}
	f(arr, exist, s1, s2);
	cout << "The letters in s1:" << endl;
	for (int i = 0;i < 26;i++)
	{
		if (arr[i] == 1) cout <<char('a' + i) << " ";
	}
	cout << endl;
	cout << "The letters int s1 and s2:" << endl;
	for (int i = 0;i < 26;i++)
	{
		if (exist[i] == 1)cout <<char( 'a' + i) << " ";
	}
}

瞎猫碰上死耗子,加个char()就能输出数字对应的字符了.根据给定的unicode编码或者ascii码取得其对应的字符(一般来说,英文字符及其扩展字符都是ascii字符,中文、日文、韩文等亚洲字符都是unicode字符,ascii字符为8位,unicode字符为16位(其中有3位用于标志字符类型))

#include<iostream>
using namespace std;
unsigned long AscToLong(char a[])//将数字字符串转化为一个unsigned long类型的整数并返回,还要求检验数字字符串的合法性
{
	unsigned long num = 0;
	int weight = 1;
	int length = 0;
	for (int i = 0;a[i];i++)
	{
		length++;
		if (a[i] > '9' || a[i] < '0')
		{
			cout << "您输入的字符串不合法";
			return NULL;
		}
	}
	for (int i = length - 1;i >= 0;i--)
	{
		num += ((a[i]-'0') * weight);
		weight *=10;
	}
	return num;
}
int main()
{
	char string[80];
	cout << "Input a ASCerⅡ-positive-unsigned long-integer:" << endl;
	cin.getline(string, 80);
	cout << " \" " << string << "(ASCⅡ)=" << AscToLong(string) << "(unsigned long)" << endl;
}

字符数组转成整数,我当时一个是忘了减'0',一个是注意一下可以用weight来做。。(但是我之前一直都是从低位往高位一直×10做的)

#include<iostream>
using namespace std;
void Chg10Tox(int n, int x)//将十进制数n转化为x进制。方法:每次除以x取模,直到商为0,然后最下方的模是最高位
{
	int arr[100];
	int i = 0;
	int num = n;
	while (num / x != 0)
	{
		i++;
		arr[i - 1] = num % x;
		num = num / x;
	}
	i++;
	arr[i - 1] = num % x;
	cout << i << endl;
	cout << n << "(10)=";
	for (int j = i - 1;j >= 0;j--)
	{
		cout << arr[j];
	}
	cout << "(" << x << ")" << endl;
}
int main()
{
	int n;
	cin >> n;
	Chg10Tox(n, 2);
	Chg10Tox(n, 4);
	Chg10Tox(n, 5);

}
#include<iostream>
using namespace std;
void ChgxTo10(char a[], int x)//将x进制正整数转化为十进制数并输出
{
	int i=0;//c++对于存放字符串的数组提供了strlen函数,但是咱们这个也不是字符串数组
	while (a[i])i++;
	int weight = 1;
	int num = 0;
	for (int j = i - 1;j >= 0;j--)
	{
		num += ((a[j]-'0') * weight);//总是忘了减一下字符0!!
		weight *= x;
	}
	cout << num;
}
int main()
{
	char arr[100];
	cin.getline(arr, 80);
	ChgxTo10(arr, 2);
}

总结:以后遇到这种题目,就想两件事。

1.数组下标弄的对不对

2.字符型数据有没有减‘0’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值