C语言问题假设10个整数存储在数组a中,要求把其中能被12整除的数标记为T,其他标记为F。

假设10个整数存储在数组a中,要求把其中能被12整除的数标记为T,其他标记为F。标记存储在字符数组b中下标相同的对应位置,实现以上功能,并输出数组b。刚学,我这什么毛病,谢谢大佬

gets()一般用于字符和字符串的输入,而不是整数。

代码:

nclude <stdio.h>
int main()
{
    int a[10]={12,12,14,15,16,12,24,22,60,61};
    char b[10]={'F'};
    int i;
    // åŽŸæ•°ç»„输出 
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
printf("\n");
// å¤„理 
for(i=0;i<10;i++){
if(a[i]%12==0){
b[i]='T';
}else{
b[i]='F';
}
}
// ç»“果输出 
for(i=0;i<10;i++){
printf("%c ",b[i]);
}
return 0;
}

运行:

要使结果对齐,更直观,可以将空格换成/t(制表符):

代码:

#include <stdio.h>
int main()
{
    int a[10]={12,12,14,15,16,12,24,22,60,61}; // æ•°ç»„ 
    char b[10]={'F'}; // ä¿å­˜ç»“æžœ 
    int i;
    // åŽŸæ•°ç»„输出 
for(i=0;i<10;i++){
printf("%d\t",a[i]);
}
printf("\n");
// å¤„理 
for(i=0;i<10;i++){
if(a[i]%12==0){
b[i]='T';
}else{
b[i]='F';
}
}
// ç»“果输出 
for(i=0;i<10;i++){
printf("%c\t",b[i]);
}
return 0;
}

运行:

追问

大佬你的代码是没毛病,但是我是要自己输入的数组,那个是我的举例,能不能帮我看看我的这段为什么不对

追答

不能用gets,它是用来输入字符串的

用for循环给a数组赋值
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
其他代码没问题!

运行时输入可以在同一行,用空格隔开,最后一个输完直接回车即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-21
你都不放源代码,我怎么帮你?追问

这不是吗,我放了两张图的

追答

好吧,是我的锅,我没看见。。。
恩,问题在于你是以字符串形式输入的,根据你数组设定大小,只有九个字符能保存进去,也就是说,你的字符串的内容('_'代表空格)"12_12_14_"再加上一个空字符。'1'的ascii码为49,'2'的是50,'4'的是52,空格为32,都不能被12整除。
在这里你犯了一个概念性的错误,你可能以为你是在存储10个整数进去,但这里的数组类型是字符不是整形数。