C语言编程题~~选几个做出了给我吧~~看着我混乱了啊~用C程序哦~c++。。。

11、编写程序,输出“字母塔”。以此类推共26层。 (★★)
A
ABA
ABCBA
……………
12、 旅馆里有一百个房间,从1到100编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”,……,以后每个服务员都是如此。问第100个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。) (★★)
(提示:对于任何一个编号,例如8,它的因子只有1、2、4、8,并且成对出现,当此数的因子数为偶数个时将被关上,当此数的因子数为奇数个时才会被打开。考虑到因子成对出现的情况,因此只有平方数的因子是奇数个的,所以门被打开的只能是平方数的房间,如1,4等)
13、 编写程序把任意十进制整数转换成二进制整数。 (★★)
14、 所谓“幻方”,是一个行、列为奇数的方阵,把1~n2这n2个不同的数放入方阵中,使方阵的每行、每列和每个对角线上的元素的和全部相等。下面给出幻方的一种排列方法:
(1) 先把1放在第一行的中间位置;
(2) 下一个数放在上一个数的右上方;
(3) 若右上方已超出方阵的第一行,则下一个数放在下一列的最后一行上;
(4) 若右上方已超出方阵的最后一列,则下一个数放在上一行的第一列上;
(5) 若右上方已经有数,或右上方已超出方阵的第一行最后一列,则下一个数放在上一个数的正下方。
编写程序,对输入小于15的n,打印出相应的幻方。
15、 在一个字符数组LET中形成由A开始的连续26个大写字母构成的字串,并将其倒置后仍放在LET中。
16、 随机输入一个长度不超过255的字符串,将其倒置后输出。
17、 随机输入一些国家的英文名字,以end作为输入结束标志,按字母顺序排序后输出。
18、 求n个字符串的最长公共子串,n<20,字符长度不超过255。
例如n=3,由键盘依次输入三个字符串为:
what is local bus?
Name some local bus.
Local bus is high speed I/O bus close to the processor.
则最长公共子串为“local bus”。
19、文本的整版。编写一个程序,从键盘以任意的方法输入句子,然后打印出来。打印时每行宽度必须为n个字符。如果一行的最后一个单词超出了本行n个字符的范围,则应把它移到下一行去。输入一个句子测试你的程序。

#include <stdio.h>
#include <stdlib.h>

/*第一题*/
#define N 26

void PrintChrArr()
{
int i,j,k,x;
for( i=0; i < N; i++ ){
for( j=0; j < N-i; j++ )
printf(" ");
for( k=0; k < i+1; k++ )
printf("%c",('A'+k));
for( x=k-1; x > 0; x-- )
printf("%c",('A'+x-1)); 
printf("\n");
}


int main(int argc, char *argv[]) {
PrintChrArr();
system("pause");
return 0;
}

 

#include <stdio.h>
#include <stdlib.h>

#define N 256

/* 第16题 */
void reverse(char *arr,int num)
{
    char tem;
    int j=0;
    while( j < num/2 )
    {
        tem=arr[j];
        arr[j]=arr[num-j-1];
        arr[num-j-1]=tem;
        j++;
    }
}

int main(int argc, char *argv[]) {
char str[N];
int i;
scanf("%s",str);
printf("原序:%s\n",str);
reverse(str,strlen(str));
printf("逆序:%s\n",str);
system("pause");
return 0;
}

 

第13题:

#include <stdio.h>
#include <stdlib.h>

#define N 33 
/* 如果你的计算机是32位就将N定位 33,如果你的计算机是64位的就将N定为 65 */

//针对32位的整数
void IntToBinary(int num,char* str)
{
int i;  
for( i=0; i < N-1 ; i++ )
str[i]=(num&(1<<(31-i)))?'1':'0';
str[i]='\0'; 
}

int main(int argc, char *argv[]) {
char str[N];
int num,i;
scanf("%d",&num);
IntToBinary(num,str);
printf("%d的二进制为:%s",num,str);
system("pause"); 
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-27
利用:for循环、循环判断、数组的知识
第2个回答  2013-07-26

第11题(已测试通过)

#include<stdio.h>

void main()

{

      int i,j;

     char word[26];

     for(i=0;i<26;i++)

          word[i]=65+i;

     for(i=0;i<26;i++)

    {

         for(j=0;j<=i;j++)

             printf("%c",word[j]);

        for(j=i-1;j>=0;j--)

            printf("%c",word[j]);

       printf("\n");

    }

}


第12题(已经测试通过):

#include<stdio.h>

void main()

{

          int i,j,room[100];

          for(i=0;i<100;i++)

               room[i]=0;

         for(i=0;i<100;i++)

            {

                  for(j=1;j<=100;j++)

                      if ((i+1)%j==0)

                          room[i]=!room[i];

             }

          for(i=0;i<100;i++)

             if (room[i]==1)

                 printf("第%d扇门是打开的;\n",i+1);

}

   


第3个回答  2013-07-27
void fun13(unsigned int t,char ch[]){//ch长度 4*sizeof(unsigned int)
unsinged int size=4*sizeof(unsigned int);
for(int i=0;i<size;++i){
if(t&&(1<<i))ch[i]='1';
else ch[i]='0';
}
}

void fun17(char ch[]){
char t;
unsigned size=strlen(ch);
unsigned a=size-1,b=size/2;
for(int i=0;i<b;++i){
t=ch[i];
ch[i]=ch[a-i];
ch[a-i]=t
}
}本回答被网友采纳
相似回答