c问题汇总---持续跟新

(1)输入输出函数 --- getchar()与putchar()

问题:想要用getchar输入97,对应putchar输出ascll码表的[,但是结果输出的是9。

解释:getchar是从终端获取一个字符,putchar是从键盘获取一个字符,putchar可以自动把数值对应的ascll码值翻译出来,但是getchar在上述情况,是获取的97中的第一个字符9,会默认加一个‘’,将其变成‘9’,而不会翻译为ascll表对应的9的值。

对比:以下因为填写的就是97这一个整数,所有就会输出他的ascll值 ---> a。

(2)自增自减

int a = 10;
printf("%d %d %d %d %d
%d\n",a,a++,++a,a++,++a,a);
//14 13 14 11 14 14
后缀 a ++ 的结果为当时的结果, ++ a a 的结果为最终结果。

(3)关于char的字符与整数

注:char a有两种表示,一种可以表示一个字符,一种可以表示一个数字。

eg:

扩展:根据ascll表,可以实习’1‘-’9‘的字符转为1-9整数形式。

 用字符9-字符0 ---> 用‘9’的ascll值 - ‘0’的ascll值 = 39 - 30 = 9

注:字符相减,会自动转换为ascll值相减。

Eg:

总结:0-9任何一个字符减去0这个字符,就可以得到他对应的整数型。

因为:char a有两种表示,一种可以表示一个字符,一种可以表示一个数字;字符之间做运算,会转化为ascll做运算。

(4)关于数组名与指针在什么时候可以++

数组名不可以++,指针可以自己++

eg:

编一个函数 fun(int *a,int n,int *odd,int *even)
函数的功能是分别求出数组中所有奇数之和以及所有
偶数之和。
形参 n 给了数组中数据的个数:利用指针 odd 返回奇数
之和,
利用指针 even 返回偶数之和
7 #include <stdio.h>
  8 int fun(int *a,int n,int *odd,int *even);
  9 
 10 int main(int argc, char *argv[])
 11 {
 12     int arr[]={1,2,3,4,5,6,7,8};
 13     int ood = 0;
 14     int even = 0;
 15     fun(arr,8,&ood,&even);
 16     printf("ood = %d,even = %d",ood,even);
 17     return 0;
 18 }
 19 
20 int fun(int *a,int n,int *odd,int *even){
 21         int flag = 0;
 22         for(int i = 0;i<n;i++){
 23             if(*a%2 == 0){
 24                 *odd += *a;
 25             }
 26             a++;
 27             flag++;
 28         }
 29 
 30         puts("");
 31         a -= flag;//fu yuan
 32         for(int i = 0;i<n;i++){
 33             if(*a%2 !=0){
 34                 *even += *a;
 35             }
 36             a++;
 37         }
 38 
 39 }

第20行的i完整写法:int*a = arr,是把arr首地址赋值给指针变量a,因为a是指针变量所以a可以实现a++。但是arr数组名没发实现arr++。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值