明明的随机数:
问题描述:明明想在学校找同学做调查问卷,他先用计算机生成N个1到1000之间的随机整数,对于其中重复的数字只保留一个,不同的数字对应着不同的学生的学号,把相同的去掉,然后把这些数从小到大排序,按照排好的顺序找同学做调查。
//数据去重、排序的操作,桶排序的思想
#include <stdio.h>
int main(void)
{
int N, a[1001] = {0}, t;
int count = 0;
scanf_s("%d", &N);
for(int i = 0; i<N; i++)
{
scanf("%d", &t);
if(a[t] == 0)
{
a[t] = t;
count++;
}
}
printf("%d\n", count);
for(int i = 0; i<1001; i++)
{
if(a[i]!=0)
printf("%d\n", a[i]);
}
return 0;
}
十六进制转十进制
#include<stdio.h>
int main(void)
{
char s[20];
char * p;
p = s;
int n = 0, t = 0;
gets(s);
while(*p != '\0');
{
if(*p <= '9')
t = *p - '0';
else
t = *p - 'A' + 10;
n = n * 16 + t;
p++;
}
printf("%d", n);
return 0;
}
//去掉重复字符并排序
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void sort1(string s)
{
char tmp[100];
int len = s.size();
int i, j, count = 0;
for(i = 0; i<len; i++)
{
for(j = i+1; j<len; j++)
{
if(s[i] == s[j])
s[j] = '0';
}
}
for(i = 0; i<len; i++)
{
if(s[i] >= 'a' && s[i] <= 'z')
tmp[count++] = s[i];
}
sort(tmp, tmp + count);
for(i = 0; i < count; i++)
cout << tmp[i];
}
void main()
{
string s;
cin >> s;
sort1(s);
}
字符串拆分:
连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组,不足8的在其后补0.
#include<stdio.h>
#include<string.h>
int main(void)
{
char ch[10000];
while(gets(ch))
{
strcat(ch, "0000000");
for(int i = 0; strlen(&ch[i]) >= 8; i += 8)
printf("%.8s\n", &ch[i]);
}
return 0;
}