主题:[原创]没事一起写程序吧(入门)
roye [专家分:20] 发布于 2008-07-22 22:41:00
没事一起写程序吧(入门)
题目::“入门必做的题”http://www.programfan.com/club/post-157289.html
编程环境:DEV_CPP
[size=4][color=FF0000][b]提建议者或参与者必加分[/b][/color][/size]
[size=3][b][color=FF0000]已完成题目:1、2、3、4[/color][/b][/size]
最后更新于:2008-07-23 22:48:00
回复列表 (共31个回复)
沙发
roye [专家分:20] 发布于 2008-07-22 23:12:00
3. 打印一个 N*N 的方阵,N为每边 N=15 打印出下面图形
字符的个数(3<N<20), 要求最 TTTTTTTTTTTTTTT
外一层为"T", 第二层为"J", 从第三层 TJJJJJJJJJJJJJT
起每层依次打印数字 1,2,3,... TJ11111111111JT
(右图以N为15为例) TJ12222222221JT
TJ12333333321JT
TJ12344444321JT
TJ12345554321JT
TJ12345654321JT
TJ12345554321JT
TJ12344444321JT
TJ12333333321JT
TJ12222222221JT
TJ11111111111JT
TJJJJJJJJJJJJJT
TTTTTTTTTTTTTTT
[code=c]
#include<stdio.h>
#include<conio.h>
int main(void)
{
char *p="TJ123456789";
int i,j,k;
printf("please input number:");
scanf("%d",&k);
char b[k][k];
for(i=0;i<k/2+1;i++,p++)
for(j=i;j<k-i;j++)
{
b[i][j]=*p;
b[j][i]=*p;
b[k-i-1][j]=*p;
b[j][k-i-1]=*p;
}
for(i=0;i<k;i++)
{
for(j=0;j<k;j++)
printf(" %c",b[i][j]);
printf("\n");
}
getch();
}
[/code]
板凳
shuhai01 [专家分:140] 发布于 2008-07-22 23:27:00
老兄你这个有问题吧!~报错啊!~~~
3 楼
wangluowudi [专家分:1570] 发布于 2008-07-23 07:33:00
楼上的兄弟,楼主这代码没报错,完全正确。。。
是你的编译器有问题吧。。。。
4 楼
roye [专家分:20] 发布于 2008-07-23 14:42:00
1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不
D F G 同字母。编程求出这些数字并且打出这个数字的
+ D F G 算术计算竖式。
───────
X Y Z D E
[code=c]
#include<stdio.h>
#include<conio.h>
int main(void)
{
int q[10]={0,0,0,0,0,0,0,0,0,0};
int *p=q;
int a,b,c,d,e,f,g,x,y,z,i,u=0;
long int h,k;
for(a=0;a<10;a++)
{q[a]=1;
for(b=0;b<10;b++)
{q[b]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=2) continue;
for(c=0;c<10;c++)
{q[c]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=3) continue;
for(d=0;d<10;d++)
{q[d]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=4) continue;
for(e=0;e<10;e++)
{q[e]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=5)continue;
for(f=0;f<10;f++)
{q[f]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=6)continue;
for(g=0;g<10;g++)
{q[g]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=7)continue;
for(x=0;x<10;x++)
{q[x]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=8)continue;
for(y=0;y<10;y++)
{q[y]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=9)continue;
for(z=0;z<10;z++)
{q[z]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=10)continue;
{
h=a*10000+b*1000+(c+2*d)*100+(d+2*f)*10+e+2*g;
k=x*10000+y*1000+z*100+d*10+e;
if(h==k)
{
printf("\n %d%d%d%d%d\n %d%d%d\n+ %d%d%d\n_______\n %d%d%d%d%d"
,a,b,c,d,e,d,f,g,d,f,g,x,y,z,d,e);
getch();
}
}
q[z]=0;}q[y]=0;}q[x]=0;}q[g]=0;}q[f]=0;}q[e]=0;}q[d]=0;}q[c]=0;}q[b]=0;}q[a]=0;}
}
[/code]
5 楼
roye [专家分:20] 发布于 2008-07-23 16:25:00
2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
[code=c]
#include<stdio.h>
#include<conio.h>
int main(void)
{
int a,b,c,d,e;
for(a=0;a<2;a++)//1:present,0:absent
for(b=0;b<2;b++)
for(c=0;c<2;c++)
for(d=0;d<2;d++)
for(e=0;e<2;e++)
{
if((a+b==2||a==0)&&b+c==1&&(c+d==2||c+d==0)&&d+e>0&&(e+a+d==3||e==0))
{
printf("a=%d;b=%d;c=%d;d=%d;e=%d\n",a,b,c,d,e);
getch();
}
}
}
[/code]
输出结果:a=0;b=0;c=1;d=1;e=1
6 楼
wangluowudi [专家分:1570] 发布于 2008-07-23 16:26:00
楼主,你的这个算法貌似太。。。。for循环太多啦,对程序来讲,这个是不太好的吧。。
有没有更好一点的算法?。。。想一想。。。
7 楼
liudan319 [专家分:3780] 发布于 2008-07-23 18:29:00
难道没有更好的方法了吗
8 楼
zhgzgx [专家分:1000] 发布于 2008-07-23 18:35:00
我也在开始做 一起写程序吧 哈哈
以前一直想做但没做 这回回过头来再做下 一起+U+U吧~~
我的第三题 好像跟你的差不多 哦
不过LZ的第一个for循环不要循环到K-1就可以了吧 只要他的一半就可以了吧 ~~
[code=c]
#include <stdio.h>
#include <stdlib.h>
//#include <time.h>
#define N 15
int main()
{
int i = 0, j = 0;
char a[N][N];
char string[] = {"TJ123456789"};
// time_t start = clock();
for (i = 0; i < N / 2 + 1; i++)
{
for (j = i; j < N - i; j++)
{
a[i][j] = string[i];
a[j][i] = string[i];
a[N - 1 - i][j] = string[i];
a[j][N - 1 -i] = string[i];
}
}
for (i = 0; i < N; i++)
{
printf("\t");
for (j = 0; j < N ; j++)
{
printf("%c",a[i][j]);
}
printf("\n");
}
// printf("\n%2.1f",(double)(clock() - start));
return 0;
}
[/code]
9 楼
zhgzgx [专家分:1000] 发布于 2008-07-23 18:50:00
第四题还没搞出来 有点难度啊 菜鸟一个啊我~~~
10 楼
zhgzgx [专家分:1000] 发布于 2008-07-23 19:26:00
第五题: 5. 输入一个十进数,将其转换成 N 进制数(0<N<=16)。
第四题还没搞定啊~~~继续中~~~
[code=c]
#include <stdio.h>
void convert(int deci, int n)
{
if (deci != 0)
{
convert(deci / n, n);
printf("%d",deci % n);
}
}
int main()
{
int deci_num, n ;
printf("请输入一个十进制数和你想将其转换成的进制:\n");
if (2 == scanf("%d%d",&deci_num, &n))
{
convert(deci_num, n);
}
return 0;
}
[/code]
我来回复