1、/十进制转化为十二进制/
#include<stdio.h>
int main(){
//十进制转化为十二进制
while(1){
int num;
int i;
int cnt=0;
int w;
char p[100];
scanf("%d",&num);
do{
w=num%12;
if(w==10){
p[cnt]='A';
}
if(w==11){
p[cnt]='B';
}
if(w<10){
p[cnt]='0'+w;
}
cnt++;
num/=12;
}while(num>0);
cnt--;
for(i=cnt;i>=0;i--){
printf("%c",p[i]);
}
printf("\n");
}
return 0;
}
2、/十二进制转化为十进制/
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
//十二进制转化为十进制
while(1){
int i;
int w=1;
int x;
int sum=0;
char num[100]="";
int newnum;
scanf("%s",num);
/*for(i=0;i<strlen(num);i++){
if(num[i]=='A'){
newnum[i]='A'-55;
}else if(num[i]=='B'){
newnum[i]='B'-55;
}else{
newnum[i]=num[i]-48;
}
}
for(i=strlen(nustrlen(num)m)-1,w=0;i>-1;i--,w++){
sum+=newnum[i]*pow(12,w);
} */
for(i=0;i<strlen(num);i++){
if(num[i]=='A'){
newnum=num[i]-'A'+10;
}else if(num[i]=='B'){
newnum=num[i]-'B'+11;
}else{
newnum=num[i]-'0';
}
if(strlen(num)-i-1>0){
for(x=0;x<strlen(num)-i-1;x++){
w*=12;
}
}else{
w=1;
}
sum+=newnum*w;
}
printf("%d\n",sum);
}
return 0;
}
//double pow(double x, double y)
3、/过滤重复字符串/
#include<stdio.h>
#include<string.h>
int main(){
/*过滤重复字符串*/
int i,j;
char s1[100]="";
char s2[100]="";
int num=0;
scanf("%s",s1);
printf("你输入的数组为%s\n",s1);
for(i=0;i<strlen(s1);i++){
int bol=1;
for(j=0;j<strlen(s2);j++){
if(s1[i]==s2[j]){
bol=0;
break;
}
}
if(bol){
s2[num]=s1[i];
num++;
}
}
s2[num]='\0';
printf("输出的数组为");
printf("%s\n",s2);
return 0;
}
4、/求最大公共子串/
#include<stdio.h>
#include<string.h>
int main(){
/*求最大公共子串*/
int i,j,k,n;
int maxlen=0;
char s1[100]="";
char s2[100]="";
char s3[100]="";
scanf("%s",s1);
scanf("%s",s2);
for(i=0;i<strlen(s1);i++){
for(j=0;j<strlen(s2);j++){
if(s1[i]==s2[j]){
for(k=0;s1[i+k]==s2[j+k]&&s1[i+k]!='\0';k++){
}
if(k>maxlen){
maxlen=k;
for(n=0;n<maxlen;n++){
s3[n]=s1[i+n];
}
}
}
}
}
s3[i]='\0';
if(strlen(s3)>0){
printf("%s\n",s3);
}else{
printf("无公共字符串");
}
return 0;
}
5、/N以内的所有素数/
#include<stdio.h>
int main(){
/*N以内的所有素数*/
int n;
int i;
int x;
int flag;
scanf("%d",&n);
if(n>=2){
for(i=2;i<n;i++){
flag=1;
for(x=2;x<i;x++){
if(i%x==0){
flag=0;
break;
}
}
if(flag){
printf("%d ",i);
}
}
}
return 0;
}
6、/字符串转置/
字符串转置
输入 To be or not to be
输出 oT eb ro ton ot eb
#include<stdio.h>
#include<string.h>
int main(){
/*字符串转置*/
char s1[100]="";
char s2[100]="";
int i,j;
int num=0;
gets(s1);
for(i=0;i<=strlen(s1);i++){
if(s1[i]==' '||s1[i]=='\0'){
j=i;
s2[i]=' ';
for(num;num<i;num++,j--){
s2[num]=s1[j-1];
}
num++;
}
}
puts(s2);
return 0;
}
7、/*星号排版*/
#include<stdio.h>
int main(){
/*星号排版*/
int i,j,b,c;
int number;
do{
printf("请输入一个奇数");
scanf("%d",&number);
}while(number>=0&&number%2==0);
int newnumber=number/2+1;
for(i=0;i<number;i++){
if(i<newnumber){
for(b=1;b<newnumber-i;b++){
printf(" ");
}
for(j=0;j<=i;j++){
printf("* ");
}
}else{
for(c=0;c<i+1-newnumber;c++){
printf(" ");
}
for(j=0;j<=number-i-1;j++){
printf("* ");
}
}
printf("\n");
}
return 0;
}
8、/求三角形面积/
#include<stdio.h>
#include<math.h>
int main(){
/*求三角形面积*/
double a,b,c,m;
double are;
do{
printf("输入正确的三角形的三边");
scanf("%lf %lf %lf",&a,&b,&c);
}while(!((a+b)>c)&&((a+c)>b)&&((b+c)>a));
printf("%f %f %f\n",a,b,c);
m=(a+b+c)/2;
are=sqrt(m*(m-a)*(m-b)*(m-c));
printf("%f\n",are);
}
9、/完数/
/*
问题:输出1000以内的完数
完数:如果一个数恰好等于除它本身外的因子之和,这个数就是完数。
例如6=1+2+3.
*/