字符串元素统计
问题描述:
编写一个函数,由实参传来一个字符串,统计字符串中字母,数字的个数,在主函数中输入字符及输出上述结果。
输入说明:
随机输入一个字符串。
输出说明:
依次输出该字符串中字母,数字的个数。
输入样例
abc123
输出样例:
3,3
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int record(char* x,int y)
{
int i=0,c=0;
for(i=0;i<y;i++)
{
if(isupper(x[i]) || islower(x[i]))
c++;
}
return c;
}
int Record(char* x,int y)
{
int i=0,c=0;
for(i=0;i<y;i++)
{
if(isdigit(x[i]))
c++;
}
return c;
}
int main()
{
char input[100];
gets(input);
int n=strlen(input);
int a=record(input,n);
int b=Record(input,n);
printf("%d,%d",a,b);
return 0;
}
十六进制转十进制
编写一个函数,输入一个十六进制正整数,输出相应的十进制正整数
输入格式:输入一个十六进制正整数(不区分大小写)
输出格式:输出一个十进制正整数
输入样例:F
输出样例:15
#include <stdio.h>
#include <string.h>
#include <math.h>
int digit16(char* x,int y)
{
int i=0,sum=0;
char X[y];
for(i=0;i<y;i++)
{
X[i]=*(x+y-i-1);
}
for(i=0;i<y;i++)
{
if(X[i]>='0' && X[i]<='9')
sum=sum+pow(16,i)*(X[i]-'0');
if(X[i]>='a' && X[i]<='f')
sum=sum+pow(16,i)*(X[i]-'a'+10);
if(X[i]>='A' && X[i]<='F')
sum=sum+pow(16,i)*(X[i]-'A'+10);
}
return sum;
}
int main()
{
char input[50];
gets(input);
int m=strlen(input);
int n=digit16(input,m);
printf("%d",n);
return 0;
}
查找编号
问题描述:
随着互联网的普及和大数据时代的到来,数据隐私和信息安全问题日益突
出。这天警察小明确定了一栋居民楼中收集用户信息实施电信诈骗的两个不法分
子,他们的住房编号均为素数,且住房编号相差为 2。现在,给定该栋居民楼的
住房总数 n,请从 1 到 n 的住房编号范围中帮助小明筛查出所有可疑的住房编号。
输入格式:
一个正整数 n。
输出格式:
按照从小到大的顺序输出所有可疑编号组,每行输出一组。每组可疑编号为
两个相差为 2 的素数,中间用单个空格隔开,先输出较小的素数,后输出较大的
素数。若没有找到任何可疑的编号组,输出 empty。
样例输入:
10
样例输出:
3 5
5 7
样例说明:
小于等于 10 的素数包括 2,3,5,7。3 和 5 相差 2 故而为一组可疑编号,5
和 7 相差 2 故而也为一个可疑编号。
评测用例规模与约定:
1≤n≤10000
#include <stdio.h>
int is_prime(int x)
{
int i=0;
if(x==0||x==1)
return 0;
if(x==2)
return 1;
for(i=2;i<x;i++)
{
if(x%i==0)
return 0;
}
return 1;
}
void find_prime(int x)
{
int i=0,arr[x]={0},j=0,sign=0;
for(i=0;i<x;i++)
{
if(is_prime(i)==1)
{
arr[j]=i;
j++;
}
}
for(i=0;i<j-1;i++)
{
if(arr[i+1]-arr[i]==2)
{
printf("%d %d",arr[i],arr[i+1]);
printf("\n");
}
sign++;
}
if(sign==0)
{
printf("empty");
}
}
int main()
{
int n=0;
scanf("%d",&n);
find_prime(n);
return 0;
}