输入里面的逗号去除即可,因为scanf读取数据时默认分隔符为空白字符(空格,回车,制表符),所以如果输入中使用了逗号,需要在scanf中也使用逗号来匹配数据,例如,scanf("%f,")这种形式,所以在输入时去除逗号即可。
测试如下:
参考链接:
#include <stdio.h>
int main(void){
float score[10],sum=0,x,ever;
int i;
for(i=0;i<10;i++){
// https://baike.baidu.com/item/scanf/10773316?fr=aladdin+
// https://zhidao.baidu.com/question/1437138832219003419.html
// https://blog.csdn.net/weixin_39920629/article/details/116988025
// https://www.cnblogs.com/ydqblogs/p/13823910.html
scanf("%f",&x); // 输入的数据之间以回车间隔或空格,制表符间隔都可以
score[i]=x;
}
for(i=0;i<10;i++){
sum=sum+score[i];
//printf("score[%d]=%f,sum=%f\n",i,score[i],sum);
}
ever=sum/10.0;
printf("平均分为%.1f",ever);
return 0;
}
将x定义为int型,scanf里输入修改为%d作为输入试一下!
计算原理:二进制计算,再根据输出要求输出数据
#include<stdio.h>
#include<string.h>
int main()
{
char c[1000];
unsigned char ch[1000];
int i;
for (i = 0; i < 1000; i++)
{
c[i] = -1 - i;
ch[i] = -1 - i;
}
//ch[0] == -1;
//10000000000000000000000000000001 -1原码
//11111111111111111111111111111110 -1反码
//11111111111111111111111111111111 -1补码
//截断:11111111
//整型提升:00000000000000000000000011111111 ch[0]补码
//ch[1] == -2
//10000000000000000000000000000010 -2原码
//11111111111111111111111111111101 -2反码
//11111111111111111111111111111110 -2补码
//截断:11111110
//整型提升:00000000000000000000000011111110 ch[1]补码
//ch[255] == -256
//10000000000000000000000100000000 -256原码
//11111111111111111111111011111111 -256反码
//11111111111111111111111100000000 -256补码
//截断:00000000
//整型提升:00000000000000000000000000000000 ch[255]补码为 0 ,对应'\0',字符串结束
printf("%d\n", strlen(c)); //判断'\0'之前的字符串长度,输出结果: 255
printf("%d\n", strlen(ch)); //判断'\0'之前的字符串长度,输出结果: 255
//char 和 unsigned char 的判断方法都是根据二进制计算结果来判断
return 0;
}