永发信息网

c语言编程问题!

答案:4  悬赏:50  手机版
解决时间 2021-03-25 20:29
  • 提问者网友:最美的风景
  • 2021-03-25 09:16
c语言编程问题!
最佳答案
  • 五星知识达人网友:零点过十分
  • 2021-03-25 09:36
1.编程在一个已知字符串中查找最长单词,假定字符串中只含有字母和空格,空格用来分割不同单词!

方法一:

//VC++ 6.0 编译通过

#include
void main()
{
char str[]="hello world my name is xun yi cao !!";
char*p=str,*p1;
int max=0,count=0,i;
while(*p)
{
count=0;
while(*p==' ')p++;
while(*p!=' '&&*p)
{//一定要注意这里的判断 *p!=0 也要判断,不然到了最后一个单词时,它一直向后面加,直到碰见空格,所以会超界。
p++;
count++;
}
if(max{
max=count;
p1=p-count;
}
}
printf("the largest number is :%d \n",max);
printf("the largest word is : ");
while(*p1!=' '&&*p1) //这里也要判断*p1!='\0',因为如果最长的单词在字符串的末尾的话,如果不判断*p1!='\0',也会过界。
{
putchar(*p1);
p1++;
}
putchar('\n');
}



方法二:

//VC++ 6.0 编译通过。

#include
#include
void main()
{
char str[]=" I am a student";
char*p=str,Array[10][20]={0};
int i=0,j=0,max=0;
while(*p)
{
while(*p==' ')*p++;
while(*p&&*p!=' ')
{
Array[i][j++]=*p;
p++;
}
i++;j=0;
}
i=0;
max=strlen(Array[i]);
p=Array[i];
while(strlen(Array[i]))
{
if(max{
max=strlen(Array[i]);
p=Array[i];
}
i++;
}
printf("%d\n%s\n",max,p);
}



2.编写实现任意十进制数,转换成r进制数(r在2到16之间)

转换为二进制:

//VC++ 6.0编译通过

#include
#include
void main()
{
int a,b[30],i;
scanf("%d",&a);
for(i=0;a!=0;i++)
{
b[i]=a%2;
a=a/2;
}
for(--i;i>=0;i--)
{
printf("%d",b[i]);
}
putchar('\n');
}

//关于二进制的转换,还可以用位移运算符。通过和某一个数如1相按位与,就得到它的二进
制最低位,在位移,再得到二进制最低位,依此类推。

转换为8进制:

/VC++ 6.0编译通过。

#include
#include
void main()
{
int a,b[20],i;
scanf("%d",&a);
for(i=0;a!=0;i++)
{
b[i]=a%8;
a=a/8;
}
for(--i;i>=0;i--)
{
printf("%d",b[i]);
}
putchar('\n');
}



转换为16进制:

//VC++ 6.0 下编译通过

#include
#include
void main()
{
int a,b[20],i,base=16;
char X[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
scanf("%d",&a);
for(i=0;a!=0;i++)
{
b[i]=a%base;
a=a/base;
}
for(--i;i>=0;i--) //开始有一个 --i
{
int j=b[i];
printf("%c",X[j]);
}
printf("\n");
}



通用解决方案:

#include
#include
void main()
{
int a[10]={0,1,2,9,10,5,12,7,8,15};
for(int i=9;i>=0;i--)
{
if(a[i]>=10)
switch(a[i])
{
case 10: printf("%c",'A');break;
case 11: printf("%c",'B');break;
case 12: printf("%c",'C');break;
case 13: printf("%c",'D');break;
case 14: printf("%c",'E');break;
case 15: printf("%c",'F');break;
}
else
printf("%d",a[i]);
}
}



这些都是我在考计算机等级考试碰到过的题目哦,算法都是相当典型的,有的是书上看到的,有的是自己扩展的。还是要自己认真哦。。。

由于文字太多第三题提交不上来了哦。。不好意思。。。
全部回答
  • 1楼网友:洎扰庸人
  • 2021-03-25 12:41
哈 只能说你。够懒。我也懒
  • 2楼网友:不甚了了
  • 2021-03-25 11:04
1.
void LARW(char str[])
{
int i=0,k,sign=0,len=0,word=0;
while(str[i])
{
if(('A'<=str[i]&&str[i]<='Z')||('a'<=str[i]&&str[i]<='z'))
{
if(!word)
{
word++;
k=i;
}
else word++;
}
else
{
if(word>len)
{
len=word;
word=0;
sign=k;
}
else k=0;
}
}
if(word>len)
{
len=word;
sign=k;
}
printf("the largest word is:\n");
for(i=0;i{
printf("%c",str[sign+i]);
}
}
void main()
{
char a[200]={"I am a boy,i like to play football"};
LARW(a);
}
2:
void main()
{
int nNum,Rad,i=0,Residue;
int Store[50];
printf("请输入一个任意整数:");
scanf("%d",&nNum);
printf("\n请输入一个合法的表示进制的基数[2,16]:");
scanf("%d",&Rad);
if(Rad<=1)
exit(-1);
printf("\n转换后的结果是:");
while(nNum>=Rad)
{
Residue=nNum%Rad;//0
nNum/=Rad;//1
Store[i]=Residue;//0
++i;
}
Store[i]=nNum;
for(;i>=0;--i)
switch(Store[i])
{
case 0:
printf("0");
break;
case 1:
printf("1");
break;
case 2:
printf("2");
break;
case 3:
printf("3");
break;
case 4:
printf("4");
break;
case 5:
printf("5");
break;
case 6:
printf("6");
break;
case 7:
printf("7");
break;
case 8:
printf("8");
break;
case 9:
printf("9");
break;
case 10:
printf("A");
break;
case 11:
printf("B");
break;
case 12:
printf("C");
break;
case 13:
printf("D");
break;
case 14:
printf("E");
break;
case 15:
printf("F");
break;
}
printf("\n");
}
  • 3楼网友:夜风逐马
  • 2021-03-25 10:42
2.任意r进制数么?
char temp[16];
long num;
_ltoa(num,temp,r);
3.
double total = 345.78;
total*100
m100 = total / 10000;
total %= 10000;
m50 = total / 5000;
total %= 5000;
m10 = total / 1000;
total %= 1000;
m5 = total / 500;
total %= 500;
m2 = total / 200;
total %= 200;
m1 = total / 100;
total %= 100;
m01 = total / 10;
total %= 10;
m05 = total / 5;
total %= 5;
m01 = total;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯