24课后题
#include<stdio.h>#include<stdlib.h>
#define max 100
int main()
{
int str={1};
int i,j;
int *t=str;
do
{
*t++=atoi(getchar());
}while(*t=='\0');
int (*p)=(int (*))&str;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",p);
}
printf("\n");
}
return 0;
}
我想通过这样的一维数组输出
1 2 3
4 5 6
7 8 9
应该怎么弄?? 将题中代码循环输出,可以用两个for (i = 0;i < 3;i ++)再加个条件当列为2时打印 \n,最好用下标法操作 Snopy 发表于 2020-4-16 08:39
将题中代码循环输出,可以用两个for (i = 0;i < 3;i ++)再加个条件当列为2时打印 \n,最好用下标法操作
我的代码是这样的哇但是出错了 先定义两个局部变量i,j,然后在后面用for循环嵌套for循环输出,大体就是这样的{:10_257:} 冰激凌太烫 发表于 2020-4-16 15:55
先定义两个局部变量i,j,然后在后面用for循环嵌套for循环输出,大体就是这样的
你看我的代码,我嵌套了,但是出错了 孤世星辰 发表于 2020-4-16 12:08
我的代码是这样的哇但是出错了
我大概在网上查了有关atoi函数的用法
1:C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。
2:举个例子:(atoi的用法)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int val;
char str;
strcpy(str, "5201314");
val = atoi(str);
printf("字符串值 = %s, 整型值 = %d\n", str, val);
}
return0;
3:也就是说atoi是需要把括号内的参数转化成一个整数(类型可为int或者其他),再赋值给一个整数型变量。而你的代码中atoi(getchar())是赋值给了一个指针。问题应该出在这里了,不知道我想的对不对hhh{:10_248:} 冰激凌太烫 发表于 2020-4-16 18:37
我大概在网上查了有关atoi函数的用法
1:C 库函数 int atoi(const char *str) 把参数 str 所指向的字符 ...
那我定义了一个整型变量a让atoi赋值给a,然后再把a赋给*t,还是编译出错 孤世星辰 发表于 2020-4-16 18:51
那我定义了一个整型变量a让atoi赋值给a,然后再把a赋给*t,还是编译出错
当然不对,你在主函数里面已经声明t是指向str这个数组的地址的,你再把变量a赋值给t,那就不对了 #include<stdio.h>
#include<stdlib.h>
#define max 100
int main()
{
int str={1};
int i,j;
char s;
int *t=str;
do
{
*t++=atoi(fgets(s,max,stdin));
}while(*(t-1) != 0);
int (*p)=(int (*))&str;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",p);
}
printf("\n");
}
return 0;
} Cool_Breeze 发表于 2020-4-16 18:59
大佬能否帮忙点拨一下:
do
{
*t++=atoi(fgets(s,max,stdin));
}while(*(t-1) != 0);
这块代码的解释 Cool_Breeze 发表于 2020-4-16 18:59
这样只可以赋值给第一个元素 孤世星辰 发表于 2020-4-16 19:12
这样只可以赋值给第一个元素
是这样输入的 冰激凌太烫 发表于 2020-4-16 19:10
大佬能否帮忙点拨一下:
do
{
fgets获取一个字符串,转换为整数,赋值给*t,因为t++,所以到了while这里t=t+1,t要减去1才是当前的输入字符串转换后的整数,如果等于0就结束输入! Cool_Breeze 发表于 2020-4-16 18:59
*t++=atoi(fgets(s,max,stdin));我也想问一下为啥这样改就可以了,大佬可以解释一下咩 Cool_Breeze 发表于 2020-4-16 19:30
fgets获取一个字符串,转换为整数,赋值给*t,因为t++,所以到了while这里t=t+1,t要减去1才是当前的输入 ...
多谢大佬的点拨
页:
[1]