八分青年 发表于 2019-2-27 20:04:43

关于c语言数组问题

假设10个整数存储在数组a中,要求把其中能被12整数的数标记为t,其他标记为f,标记存储在字符数组b中下标相同的对应位置。试 编写程序,实现以上功能,
并输出两个数组。下面是本人写的,错的不清不楚,希望有大佬教
#include"stdio.h"
main()
{
        int a;
        char str;
        int n,m;
        printf("请输入十个整数:");
        for(n=0;n<10;n++)
        {
                scanf("%d",&a);//赋值
        }
        for(n=0;n<10;n++)
        {
                if(a%12==0)
                {
                        a=116;
                        scanf("%c",&str);
                }
                else
                {
                        a=102;
                        scanf("%c",&str);//筛选
                }
        }
        for(m=0;m<10;m++)
        {
                printf("a[%d]=%d\n",m,a);
        }
        for(m=0;str!='\0';m++)
        {
                printf("%c",str);//输出
        }
        return 0;
}

Croper 发表于 2019-2-27 20:22:50

          if(a%12==0)
                {
                        a=116;
                        scanf("%c",&str);
                }
                else
                {
                        a=102;
                        scanf("%c",&str);//筛选
                }
没懂你为什么要这么写,这样你是把a赋值成‘t’和'f',然后又从输入流里读c..
if (a % 12 == 0){
    str='t';
}
else
{
    str='f';
}
不就行了

暗pluto 发表于 2019-2-27 20:35:57

#include<stdio.h>

void main(){
      int a;
      char str;
      int n,m,i;
      printf("请输入十个整数:\n");
      for(n=0;n<10;n++)
      {
                scanf("%d",&a);//赋值
      };

      for( i=0;i<10;i++)
      {
            if(a%12==0){
                str='t';
            }else{
                str='f';
            }
      }
      for( m = 0;m<10;m++){
            printf("a[%d]=%d\n",m,a);
            printf("b[%d]=%c\n",m,str);
      }
}

暗pluto 发表于 2019-2-27 20:38:02

你的要求不是把能被整除的数组下标的内容变成t吗,那为什么要自己再输入一次呢?

暗pluto 发表于 2019-2-27 20:40:08

我也不太明白a=102和a=116的做法
你看我的代码实现对不对

八分青年 发表于 2019-2-27 20:57:14

Croper 发表于 2019-2-27 20:22
没懂你为什么要这么写,这样你是把a赋值成‘t’和'f',然后又从输入流里读c..

不就行了

#include"stdio.h"
main()
{
        int a;
        char str;
        int n,m;
        printf("请输入十个整数:");
        for(n=0;n<10;n++)
        {
                scanf("%d",&a);//赋值
        }
        for(m=0;m<10;m++)
        {       
                printf("a[%d]=%d\n",m,a);//输出a
        }
        for(n=0;n<10;n++)
        {
                if(a%12==0)
                {
                        str='t';
                }
                else
                {
                        str='f';
                }
        }
        for(m=0;str!='\0';m++)
        {
                printf("%c",str);//输出str
        }
}

还是不行

Croper 发表于 2019-2-27 21:59:28

      for(m=0;str!='\0';m++)
      {
                printf("%c",str);//输出str
      }
str 改str,
话说一个n就够了,为什么还要一个m一个n。。

八分青年 发表于 2019-2-28 19:33:01

暗pluto 发表于 2019-2-27 20:35


解决了,非常感谢
#include"stdio.h"
main()
{
        int a;
        char str;
        int n,m;
        printf("请输入十个整数:");
        for(m=0;m<10;m++)
        {
                scanf("%d",&a);
        }
        for(m=0;m<10;m++)
        {
                if(a%12==0)
                {
                        str='t';
                }
                else
                {
                        str='f';
                }
        }
        for(m=0;m<10;m++)
        {
                printf("a[%d]=%d\n",m,a);//输出a
        }
        for(m=0;m<10;m++)
        {
                printf("str[%d]=%c\n",m,str);//输出str
        }
}
页: [1]
查看完整版本: 关于c语言数组问题