鱼C论坛

 找回密码
 立即注册
查看: 1473|回复: 6

C编程中的一个小问题

[复制链接]
发表于 2015-7-7 23:29:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大家首先请看源码:
#include<stdio.h>
void  main()
{
        int i;
        int a[10];
        int *p;
       
        printf("Please input the number of array A:  \n");
           for ( i=0; i<10; i++)
           {
                 printf("a[%d]= ",i);
       
                a[i]=getchar ();
           }
          for (p=a ;p<(a+10); p++)
          {
                printf("a[%d]=\n",*p);
          }
}
结果,首先提示输入a[0],输入'0'之后回车,结果显示"a[1]=a[2]= “,以下的全是如此,各位大神帮忙看看,问题到底出在哪里?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-8 00:55:21 | 显示全部楼层
#include<stdio.h>
int main()
{
        int i;
        int a[10];
        int *p;

        printf("Please input the number of array A:  \n");
        for ( i=0; i<10; i++)
        {
                printf("a[%d]= ",i);

                scanf("%d",&a[i]) ;
                //假设这样输入1回车2回车....
                //a[i]=getchar (); 第一次取到的是数字1的ASCII码49,
                //第二次取到的是回车的ASCII码10,所以你的显示不让你输入a[2]
                //取数字还是用格式化SCANF取%d吧,不然取到的也不是你想要的
        }
        for (p=a,i=0 ;p<(a+10); p++,i++)
        {
                printf("a[%d]=%d\n",i,*p) ;
                //printf("a[%d]=\n",*p); 打印语句有点问题
        }

        return 0 ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-8 08:25:15 | 显示全部楼层
小白求解
int *p;   是什么意思啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-8 08:35:31 | 显示全部楼层
mse9591 发表于 2015-7-8 08:25
小白求解
int *p;   是什么意思啊?

定义一个指向整数型的指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-8 10:00:41 | 显示全部楼层
牡丹花下死做鬼 发表于 2015-7-8 08:35
定义一个指向整数型的指针

哦  谢谢了  
怪不得看不懂  
指针我还没看到呢……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-8 17:09:01 | 显示全部楼层
感谢Itt1986,指出了问题所在。但是为什么呢?我是说为什么键盘输入“1”却得到了ASICC码?还有,这个小程序我用scanf()也曾经试过,结果依然如故。另外请不吝赐教,打印函数有什么问题?输出的结果确实不对。谢了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-8 22:48:23 | 显示全部楼层
andywang1161 发表于 2015-7-8 17:09
感谢Itt1986,指出了问题所在。但是为什么呢?我是说为什么键盘输入“1”却得到了ASICC码?还有,这个小程 ...

我帮你改好了(看我改完的代码,错误的地方我注释掉了你编译下看看),用scanf的你看下运行是正确的,你说为什么输入1得到的是ASCII码啊,getchar ()这个函数是获取一个字符的,你定义的是一个整型的数组,你把一个字符存放到整型数组中会自动强制转换,就存入的是字符的ASCII码值了(字符用于赋值啊参加运算啊都是用的ASCII码啊,不然你想两个字符相加减怎么算,哪个字符大哪个小怎么说),从字符到整型转换是不丢失的,你也可以把字符看成无符号整型.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 04:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表