| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7493 人关注过本帖
标题:[讨论]第八次编程题目,谢谢大家的支持.
只看楼主 加入收藏
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
回复:(无玩过界)#include#include&...
这个应该是到目前为止写的最好的了


2007-03-19 12:06
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
我改了一下,应该好点
#include<stdio.h>
#include<math.h>
void main()
{
long int n,m,l=0,i;
scanf("%ld %ld",&n,&m);
for(i=1;i<=(int)sqrt(n);i++)
{
if(n%i==0)
l=(l+i%m+(n/i)%m)%m;//n/i代表的是另一个因子
}
l=l%m;
printf("%d\n",l);
}
谢谢PcrazyC

2007-03-19 12:22
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
上面写的有问题,当n是m的平方的时候多加了一个,还是7楼写的好

2007-03-19 12:27
hujian100
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-9-14
收藏
得分:0 

第一题:我刚才修改后的程序,这次应该没问题了。

#include <stdio.h>
#define N 20
main()
{
char bracket[N];
int sequence[N]={'\0'};
int i,j,len,sum=0;
printf("Please input the bracket string:");
gets(bracket);
for(i=0;bracket[i]!='\0';i++)
{
switch(bracket[i])
{
case '{': sequence[i]=1;break;
case '}': sequence[i]=8;break;
case '[': sequence[i]=2;break;
case ']': sequence[i]=7;break;
case '(': sequence[i]=3;break;
case ')': sequence[i]=6;break;
case '<': sequence[i]=4;break;
case '>': sequence[i]=5;break;
default: sum=1;break;
}
if(sum==1)
break;
}
if(sum)
printf("Input error!\n");
else
{
len=i-1;
if(i%2!=0)
printf("false\n");
else
{
for(i=1;sequence[i]!='\0';i++)
if(sequence[i-1]>sequence[i])
{
sum=1;
break;
}
if(sum==1)
printf("false\n");
else
{
for(i=0,j=len;i<j;i++,j--)
if(sequence[i]+sequence[j]!=9)
{
sum=1;
break;
}
if(sum==1)
printf("false\n");
else
printf("true\n");
}
}
}
}


2007-03-19 13:26
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
以下是引用crackerwang在2007-3-19 12:27:57的发言:
上面写的有问题,当n是m的平方的时候多加了一个,还是7楼写的好

7楼的开僻了数组,这点并不好,而且他的SUM值肯定不小,像你那样其实再定义一个变量,判断一下就可以了,看23楼


雁无留踪之意,水无取影之心
2007-03-19 13:34
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
我和23楼想法一样

2007-03-19 13:52
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
收藏
得分:0 
我的第一个
#include <stdio.h>
main()
{
char *s;
int fh1,fh3,fh5,fh7; //对应{}[]()<>
int i,n;
while(EOF!=scanf("%s",s))
{
fh1=fh3=fh5=fh7=0;
n=strlen(s); //{} -> [] -> () -> <>。例如{[(<>)]}。
if(n%2==0)
{ //{[](<>)[<>(()<>)(<<><>>)]}<>()
for(i=1;i<=n;i++)
{
switch (*(s++))
{
case '{': ++fh1;
if(fh7>0 || fh5>0 || fh3>0) i=0;
break;
case '}': if(fh1>0)fh1-=1;
else i=0;
break;
case '[': ++fh3;
if(fh7>0 || fh5>0) i=0;
break;
case ']': if(fh3>0)fh3-=1;
else i=0;
break;
case '(': ++fh5;
if(fh7>0) i=0;
break;
case ')': if(fh5>0)fh5-=1;
else i=0;
break;
case '<': ++fh7; break;
case '>': if(fh7>0)fh7-=1;
else i=0;
break;
default : i=0;
}
if(i==0)
{
printf("flase\n");
break;
}
else if(i==n && fh1==0 && fh3==0 && fh5==0 && fh7==0) printf("true\n"); //刚才这里没考虑周到
else if(i==n) printf("flase\n"); //
}
}
else printf("flase\n");
}
}
天呀,又有漏洞了,等我改,好了。

[此贴子已经被作者于2007-3-19 14:23:05编辑过]


英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-19 13:55
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
收藏
得分:0 
每次遇到数学里的什么什么数的时候都要到百度里查看是什么意思

英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-19 14:35
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
收藏
得分:0 
第二个
#include <stdio.h>
#include <math.h>
main()
{
long n,s,a1,b1,sum,i;
printf("n=");
while(EOF!=scanf("%ld",&n))
{
printf("s=");
scanf("%ld",&s);
sum=0;
for(a1=1,b1=n;a1<b1;a1++)
{
if(n%a1==0)
{
b1=n/a1;
sum=sum+a1+b1;
printf("%ld %ld ",a1,b1);
}
}
printf("\n=%d\n",sum%s);
printf("n=");
}
}

[此贴子已经被作者于2007-3-19 15:15:51编辑过]


英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-19 15:01
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
我的第一题:
[CODE]

#include <stdio.h>
#include <stdlib.h>
#define NUMBER 7

int panduan(char achar[], int n);
int duiying(char achar[], int n);

int main()
{
char achar[NUMBER], ch;
int i;

while(EOF != scanf("%c", &ch))/*判断结束*/
{
i = 0;
achar[0] = ch;

for(i = 1;;i ++)
{
scanf("%c", &achar[i]);
if(achar[i] == '\n')
break;
}
if(panduan(achar, i - 1) && duiying(achar, i - 1))
printf("true\n");
else
printf("false\n");
}

return 0;
}

int panduan(char achar[], int n)/*判断顺序是否正确*/
{
int i = (n + 1) / 2, j;

for(j = 0;j < i - 1;j ++)
if(((achar[j] - achar[j + 1] < 0) && (achar[j] == '(' && achar[j + 1] == '<')) || (achar[j] == '<' && achar[j + 1] == '('))
return 0;
return 1;
}

int duiying(char achar[], int n)/*判断是否对应*/
{
int i = (n + 1) / 2, j;

for(j = 0;j < i;j ++)
if(achar[n - j] - achar[j] == 1 || achar[n - j] - achar[j] == 2)
return 1;
return 0;
}

[/CODE]

该学习了。。。
2007-03-19 15:36
快速回复:[讨论]第八次编程题目,谢谢大家的支持.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012997 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved