wise101 发表于 2008-6-10 21:48

跪求C语言高手解答!

1.从键盘任意输入三个串,求其中最大的串和最长的串。
2.求100以内所有素数的和。

himpo 发表于 2008-6-10 21:57

第一题 用两个函数strcmp和strlen
第二题 找到100以内的素数(这个程序很多),然后相加。

C王之王 发表于 2008-6-10 22:29

第2题

#include<stdio.h>
#include<math.h>
int main()
{
int i,j,k,n=0,sum=0;
for(j=2;j<=100;j++)
{
    k=sqrt(j);
        for(i=2;i<=k;i++)
    if(j%i==0)
    break;
    if(i>=k+1)
    {
                printf(" %d",j);
                n++;
                sum+=j;
        }
        if(n%10==0)
        printf("\n");
}
printf(" 和为%d",sum);
}

himpo 发表于 2008-6-10 22:42

C王之王果然好人啊!orz
for(i=2;i<=100;i++)
建议改成for(i=3;i<=100;i+=2)
节约是一种美德.
:)

C王之王 发表于 2008-6-10 22:51

回复 4# himpo 的帖子

你说的那个我想过 可是那样的话就少了个最小的质数2
那就这样改吧

#include<stdio.h>
#include<math.h>
int main()
{
int i,j,k,n=0,sum=0;
printf("2");
for(j=3;j<=100;j+=2)
{
    k=sqrt(j);
    for(i=2;i<=k;i++)
    if(j%i==0)
    break;
    if(i>=k+1)
    {
        printf(" %d",j);
        n++;
        sum+=j;
    }
    if(n%10==0)
    printf("\n");
}
printf(" 和为%d",sum);
}

C王之王 发表于 2008-6-10 23:06

第1题

我写的这个程序只能在3个串都不相同时候起作用 其他功能都可以
不知道你要不要
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,k,n=0,sum=0;
printf("2");
for(j=3;j<=100;j+=2)
{
    k=sqrt(j);
    for(i=2;i<=k;i++)
    if(j%i==0)
    break;
    if(i>=k+1)
    {
        printf(" %d",j);
        n++;
        sum+=j;
    }
    if(n%10==0)
    printf("\n");
}
printf(" 和为%d",sum);
}

C王之王 发表于 2008-6-10 23:08

第2题

。。。不好意思 上面那个发错了 ,这个才是

#include<stdio.h>
#include <string.h>
int main()
{
        char s1[300],s2[300],s3[300];
        int a,b,c,d,e,f;
        printf("请输入第一个字符串\n");
        gets(s1);
    printf("请输入第二个字符串\n");
    gets(s2);
    printf("请输入三个字符串\n");
    gets(s3);
        a=strcmp(s1,s2);b=strcmp(s1,s3);c=strcmp(s2,s3);
        if(a==1&&b==1)
    printf("%s为最大字符串\n",s1);
        if(a==-1&&c==1)
    printf("%s为最大字符串\n",s2);
        if(b==-1&&c==-1)
    printf("%s为最大字符串\n",s3);
        d=strlen(s1);e=strlen(s2);f=strlen(s3);
        if(d>e&&d>f)
        printf("%s为最长字符串\n",s1);
        if(e>d&&e>f)
        printf("%s为最长字符串\n",s2);
        if(f>d&&f>e)
        printf("%s为最长字符串\n",s3);
}

learnerboy 发表于 2008-6-10 23:36

太伟大了!

页: [1]

编程论坛