C语言程序设计问题3

2025-03-21 23:19:02
推荐回答(5个)
回答1:

8.
#include “string.h”
void main()
{ int i,j, ,;
char str[]={“1234567”};
for(i=0,j=strlen(str);i { k=str[i]; str[i]=str[j]; str[j]=k;}
}

9.
void main()
{ int a[10][10],i,j;
for(i=0;i<10;i++)
{a[i][i]=1; a[i][9-i]=1;}
for(i=1;i<9;i++) a[0][i]=1;
for(i=1;i<9;i++) a[9][i]=1;
for(i=1;i<9;i++) a[i][0]=1;
for(i=1;i<9;i++) a[i][9]=1;
for(i=1;i<9;i++)
for(j=1;j<9;j++)
if(i!=j&&i+j!=9) a[i][j]=0;
for(i=0;i<10;i++)
{ for(j=0;j<10;j++) printf(“%2d”,a[i][j]);
printf("\n");
}
}

10.
#include
void main()
{ int c[26],i; char ca;
for(i=0;i<26;i++) c[i]=0;
scanf(“%c”,&ca);
while(ca!='#')
{ if((ca>=’A’)&&(ca<=’Z’)) c[ca-65]+=1;
scanf(“%c”,&ca);
}
for(i=0;i<26;i++)
if(c[i]) printf(“%c:%d个\n”,i+65,c[i]);
}

11.
void main()
{ char b[17]={“0123456789ABCDEF”};
int c[64],d,i=0,base=16;
long n;
printf(“Enter a number:\n”);
scanf(“%d”,&n);
do {c[i]=n%16;i++;n=n/base;}
while (n!=0);
printf(“Transmit new base:\n”);
for(i=i-1;i>=0;i--)
printf(“%c”,b[i]);
printf(“\n”);
}

回答2:

void
move(char
*str,int
n)
{
char
temp;
int
i
=
0;
temp=str[n-1];
/*temp保存数组中最后一个字符*/
/*将数组中的字符统一向后移动一位*/
for(i=n-1;i>0;i--)
str[i]=str[i-1];
/*将保存的最后一个字符移动到第一位*/
str[0]=temp;
}

回答3:

for(i=n-i;i>0;i--)这一句写的好象有问题
我改了一下
输出结果是cdeab,还是跟你说的不一样
你再看看书,看看是不是你打错了
#include"stdio.h"
#include
move(char
*str,int
n)
{
char
temp;int
i;
temp=str[n-1];
for(i=n-1;i>0;i--)
str[i]=str[i-1];
str[0]=temp;
}
main()
{
char
s[50];
int
n,i,z;
scanf("%d,%s",&n,s);
z=strlen(s);
for(i=1;i<=n;i++)
move(s,z);
printf("%s\n",s);
}

回答4:

move函数有问题,move函数for循环里面i=n-1才对,move函数的作用是把出入的字符串循环右移一位,不如abcd被mvoe一次后为bcda,两次后为cdab,以此类推

回答5:

你的书上估计是少写了
for(i=n-i;i>0;i--)
{
str[i]=str[i-1];
str[0]=temp;
}
他本来是要做前后位置调换的!
但是实际上他只循环了str[i]=str[i-1];这句