您的位置:程序门 -> c/c++ -> 新手乐园



c语言习题!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


c语言习题![已结贴,结贴人:rozuac]
发表于:2007-07-20 21:07:45 楼主
在下只学到了if,   if/else,   while语句。  
    运算符   +=,   -=,   *=,/=,%=,++,--, <=,   > =,   ==,   !=,   ?:   。
    等比较浅的知识,各位用后面的知识写我看不懂的。


a)编写一个程序,输入一个五位数,把这个数字分成单个数字,并显示出这个数字,
每个数字之间通过3个空格分隔开来。   (提示:使用整除和模数的组合。)例如,
如果用户输入42139,那么这个程序显示:

4 2 1 3 9


b)编写一个程序,对于任何输入,如果所入的数值不是1或2,那么就保持循环,直到
用户输入了正确的数值才结束程序。


c)编写一个程序,这个程序能够读入正方形边长,然后使用星号输出这个中空正方形。
程序应该能够适合于在1~20之间所有边长的正方形。例如,如果读入的边长为5,那么应该显示:

*****
*       *
*       *
*       *
*****


d)编写一个程序显示出100个星号,每次显示一个星号。每显示完10个星号之后,程序应该显示一个换行符。
(提示:从1到100进行计数。使用求模运算符来识别出计数器是否达到10倍数。)
发表于:2007-07-20 21:28:301楼 得分:0
加到100分,可能会有人给你做。
发表于:2007-07-20 21:57:382楼 得分:0
很简单的问题啊,多看看书,看看例子吧。自己不做是不会用进步的。
发表于:2007-07-20 21:59:083楼 得分:0
我刚刚开始的时候也是想大家能帮我做一些东西     ,但是别人做完的东西是敢不上自己做的收获大的,想学就要多努力,要不看看转行吧。
发表于:2007-07-20 22:09:024楼 得分:0
呵呵我都会!马上给你发出来
发表于:2007-07-20 22:15:095楼 得分:0
a)编写一个程序,输入一个五位数,把这个数字分成单个数字,并显示出这个数字,
每个数字之间通过3个空格分隔开来。   (提示:使用整除和模数的组合。)例如,
如果用户输入42139,那么这个程序显示:
#include   <stdio.h>
void   main()
{
        int   a,b;
        printf( "请输入一个5位数:\n ");
        scanf( "%d ",&a);
        for   (b=1;b <=5;b++)
        {
          printf( "%d       ",a%10);
          a/=10;
        }
}
b)编写一个程序,对于任何输入,如果所入的数值不是1或2,那么就保持循环,直到
用户输入了正确的数值才结束程序。
#include   <stdio.h>
void   main()
{
int   a,b,c,d,e;
for   (;;)
        {
          printf( "请输入一个数字: ");
          scanf( "%d ",&a);
          if   (a==1 ¦ ¦a==2)
                    break;
        }
}
先发表了
发表于:2007-07-20 22:17:236楼 得分:10
题1
----------------------------
#include   <stdio.h>

int   main(void)
{
int   num;

puts   ( "请输入一个5位的整数: ");
scanf   ( "%d ",   &num);
puts   ( "按要求打印输出为: ");
printf   ( "%-4d%-4d%-4d%-4d%-4d\n ",   num/10000,   num/1000%10,   num/100%10,   num/10%10,   num%10);   /*   分别输出万位,   千位...个位上的数字,并且每个数之间有三个空格*/

return   0;
}


题2
-----------
#include   <stdio.h>

int   main(void)
{
int   input;

puts   ( "输入任意一个整数,如果该数不为1或2则继续输入: ");
scanf   ( "%d ",   &input);

/*   如果输入的数字不是1或2则要求再次输入   */
while   (input   !=   1   &&   input   !=   2)
{
puts   ( "继续输入: ");
getchar   (); /*   吃掉上一次输入的回车符   */
scanf   ( "%d ",   &input);
}

puts   ( "\n退出程序 ");
return   0;
}


题3
--------------
#include   <stdio.h>

int   main(void)
{
int   x;
int   i,   j;

puts   ( "请输入正方形的边长(边长:1-20): ");
scanf   ( "%d ",   &x);

puts   ( "打印正方形: ");
for   (i=0;   i <x;   i++)
{
putchar   ( '* ');
}

for   (i=0;   i <x-2;   i++)
{
putchar   ( '\n ');
for   (j=0;   j <x;   j++)
{
if((j   ==   0)   ¦ ¦   (j   ==   x-1))
{
putchar   ( '* ');
}

else  
{
putchar   ( '   ');
}
}
}

putchar   ( '\n ');
for   (i=0;   i <x;   i++)
{
putchar   ( '* ');
}

putchar   ( '\n ');
return   0;
}

题4
--------------------
#include   <stdio.h>

int   main(void)
{
int   n;

for   (n=1;   n <=100;   n++)
{
putchar   ( '* ');
if   (n%10   ==   0)
{
putchar   ( '\n ');
}
}

return   0;
}
发表于:2007-07-20 22:17:367楼 得分:0
我就是想了很久都没做出来才问的,那个单元有20多题我就这几题不会。。
特别是a)和c)
发表于:2007-07-20 22:19:168楼 得分:0
c)编写一个程序,这个程序能够读入正方形边长,然后使用星号输出这个中空正方形。
程序应该能够适合于在1~20之间所有边长的正方形。例如,如果读入的边长为5,那么应该显示:

*****
*       *
*       *
*       *
*****

#include   <conio.h>
#include   <stdio.h>
void   main()
{
            int   a,c,d,e;
            printf( "请输入一个正方形的边长: ");
            scanf( "%d ",&a);
            printf( "\t ");
            for   (c=1;c <=a;c++)
                printf( "* ");
          printf( "\n\t ");
       
          for   (d=1;d <=a;d++)
          {
            printf( "* ");
    for   (e=1;e <a-1;e++)            
                    printf( "   ");
            printf( "* ");
            printf( "\n\t ");
          }
          for   (c=1;c <=a;c++)
                printf( "* ");
          getch();
}
呵呵   不知道做得好不好

d)编写一个程序显示出100个星号,每次显示一个星号。每显示完10个星号之后,程序应该显示一个换行符。
(提示:从1到100进行计数。使用求模运算符来识别出计数器是否达到10倍数。)

#include   <stdio.h>
void   main()
{
  int   a,b,c,d;
  for   (a=1;a <=100;a++)
  {
  printf( "* ");
  if   (a%10==0)
          printf( "\n ");
  }
}
发表于:2007-07-20 22:22:109楼 得分:0
很谢谢各位,
但你们写的我有很多没学到的,例如void, ¦ ¦,   我都没学过的。。
你们都是用的很后面的知识。。
发表于:2007-07-20 22:33:3510楼 得分:0
还有谁能帮帮忙呀。。
我加多点分,用我学过的知识。
发表于:2007-07-20 22:37:2411楼 得分:0
void   这个影响不大,你现在不能理解也没什么,国内的教材根本也不在乎这些。

¦ ¦   是   条件或   运算符   &&   是   条件与   你以后会经常用的。很快。
发表于:2007-07-20 22:45:5812楼 得分:0
我学用的书是《c   how   to   program》第4版
发表于:2007-07-20 23:16:4713楼 得分:0
你用的是英文版的外国教材?
书上要求你必须只能用你所学的知识来完成吗?应该不是这样的吧,c语言本身就是一门很活的语言。只要能解决问题的方法就好方法。

就拿第二题来说,如果要硬来就这样做。
#include   <stdio.h>

int   main(void)
{
int   input;
int   flag   =   1;

puts   ( "输入任意一个整数,如果该数不为1或2则继续输入: ");
scanf   ( "%d ",   &input);
if   (input   ==   1)
{
flag   =   0;
}

if   (input   ==   2)
{
flag   =   0;
}

/*   如果输入的数字不是1或2则要求再次输入   */
while   (flag=1)
{
puts   ( "继续输入: ");
getchar   ();   /*   吃掉上一次输入的回车符   */
scanf   ( "%d ",   &input);
if   (input   ==   1)
{
flag   =   0;
}

if   (input   ==   2)
{
flag   =   0;
}
}

puts   ( "\n退出程序 ");
return   0;
}
发表于:2007-07-20 23:24:0614楼 得分:0
楼上那个程序有点问题。

哦!我忘了楼主还不知道用void呢,
那就这样写

#include   <stdio.h>

main()
{
int   input;
int   flag   =   1;

printf     ( "输入任意一个整数,如果该数不为1或2则继续输入:\n ");
scanf   ( "%d ",   &input);
if   (input   ==   1)
{
flag   =   0;
}

if   (input   ==   2)
{
flag   =   0;
}

/*   如果输入的数字不是1或2则要求再次输入   */
while   (flag==1)
{
printf   ( "继续输入:\n ");
scanf   ( "%d ",   &input);
if   (input   ==   1)
{
flag   =   0;
}

if   (input   ==   2)
{
flag   =   0;
}
}

printf   ( "\n退出程序\n ");

}

楼主这下看就应该容易理解了吧
发表于:2007-07-20 23:39:1015楼 得分:0
第三题我也帮你改了,不知道是否满足你的需求。

#include   <stdio.h>

main()
{
int   x;
int   i,   j;

puts   ( "请输入正方形的边长(边长:1-20): ");
scanf   ( "%d ",   &x);

puts   ( "打印正方形: ");
for   (i=0;   i <x;   i++)
{
putchar   ( '* ');
}

for   (i=0;   i <x-2;   i++)
{
putchar   ( '\n ');
for   (j=0;   j <x;   j++)
{
if   (j   ==   0)
{
putchar   ( '* ');
}
if   (j   ==   x-2)
{
putchar   ( '* ');
}

else
{
putchar   ( '   ');
}
}
}

putchar   ( '\n ');
for   (i=0;   i <x;   i++)
{
putchar   ( '* ');
}

putchar   ( '\n ');

}
发表于:2007-07-21 07:31:3216楼 得分:0
你的错了     正方形应该每条边相等     你竖着的那个比横着的少2个星号
发表于:2007-07-21 17:25:2517楼 得分:0
你的错了   正方形应该每条边相等   你竖着的那个比横着的少2个星号
-------------------------------------------------------------
你运行了也是这样吗?请你先运行一下。
发表于:2007-07-22 15:56:1818楼 得分:0
这几题我看你们的例子有了启发我自己用我所学的写出来了。

a)
#include   <stdio.h>
int   main()
{
int   num;

printf   (   "enter     number:   "   );
scanf   (   "%d ",   &num   );

printf   (   %d\t%d\t%d\t%d\t%d\t\n ",   num/10000,   num/1000%10,   num/100%10,   num/10%10,     num%10   );

return   0;

}


发表于:2007-07-22 15:57:0119楼 得分:0
b)
#include   "stdio.h "
int   main()
{
int   a,   b,   c,   d,   e,   f;

printf   (   "enter   1-20   number:   "   );
scanf   (   "%d ",   &a   );

b   =   1;
while   ( b   <=   a   )
{
printf   (   "* "   );
b++;
}
printf   (   "\n "   );

c   =   a   -   2;
d   =   1;  
while   (   d   <=   c   )
{
printf   (   "* "   );

e   =   1;
while   (   e   <=   c   )
{
printf   (   "   "   );
e++;
}
printf   (   "*\n "   );
d++;
}

f   =   1;
while   ( f   <=   a   )
{
printf   (   "* "   );
f++;
}

return   0;
}


快速检索

最新资讯
热门点击