C语言编程

来源:互联网 发布:linux下安装lnmp 编辑:程序博客网 时间:2024/06/06 19:30

输入一个字符串其中包含一钟特殊的字符(?)其余都是数字比如(12?32)设这个数字为w;

再输入一个同一长度的整形数字x;

要求计算w大于X的个数:

代码:

#include<stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include<math.h>
void main()
{
char s[10];

    char ch='0';
int counter=0,b;
int convertstring(char *s, int i);
scanf("%s",s);
scanf("%d",&b);
 
 counter=convertstring(s,b);
printf("%d",counter);


}


int detect(char *s)
{
int counter=0;
int i;
for(i=0;i<10;i++)
{ if(s[i]=='?')
counter++;
}
return counter;
}
int convertstring(char *s,int b)
{
int *counter_number;
int *counter;
int k=0;
int i=0;
int stod;
char ch='0';
int m;
int sum=0;
int n=detect(s);
counter_number=(int *)malloc(sizeof(int)*n);
counter=(int *)malloc(sizeof(int)*n);
printf("%s\n",s);
for(i=0;i<10;i++)
{
if(s[i]=='?')
{counter_number[k++]=i;
s[i]='9';
}
}
printf("%s\n",s);
counter_number[k]='\0';
stod=atoi(s);


printf("%d\n",stod);
if(stod<b)
return 0;
else 
{  
m=n-1;
for(k=0;k<n;k++)
for(i=9;i>=0;i--)
{
s[counter_number[k]]=(char)(ch+i);

if(atoi(s)>b)
{

               sum=sum+pow(10,m);


}
else
{
s[counter_number[k]]=(char)(ch+i+1);
m--;
break;
}
}


return sum;
}


}

0 0