目录
1.问题:将九进制2022转化成十进制。(有关填空题我会进行复杂处理,比如明确给出输入数字,我会按照输入任意数据进行计算)
1.问题:大写字母A的ASCII是65,求解L的ASCII。
编辑 4.注意点+总结:注意ASCII表的规律,以及通过转化成数字再转化成字母的方法。
1.问题:小蓝用256MB内存开辟数组,数组每个元素是32位二进制整数,不考虑程序占用的空间和维护内存需要的辅助空间,请问 256MB 的空间可以存储多少个 32 位二进制整数
1.问题:对于一个整数,能整除这个数的整数成为这个数的约数,1200000有多少个约数(只计算正约数)编辑
一.第一题
1.问题:小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。计算最高分最低分和平均分(此分保留小数点后两位),(有的算及格率优秀率得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀)
2.解题过程
#include<stdio.h>
#include <math.h>
int main()
{
int arr[100] = { 0 };
int a = 0, n, max = 0,min=100;//min的赋值要小心,向大的放!!
float mid = 0;//因为题目说平均分要以保留两位输出所以用float类型
scanf("%d", &n);//输入总人数个数
printf("\n");
for (a = 0; a < n; a++)//利用循环进行输入每个人的成绩,并进行相关累加,判断操作
{
scanf("%d", &arr[a]);
mid = mid + arr[a];//累加总分
if (arr[a] > max)//判断最大数
{
max = arr[a];
}
else
;
if (arr[a] < min)
min = arr[a];
}mid=round(mid / n*100)/100;//round用于进行四舍五入“但是round会保留到个位所以有*100的操作”
printf("%d\n%d\n%0.2f\n",max,min,mid);//注意float类型不是默认转换两位小数,所以要进行0.2操作
return 0;
}
以下代码算及格率和优秀率:
#include<stdio.h>
#include <math.h>
int main()
{
int arr[100] = { 0 };
int a = 0, n,b=0,c=0;
float mid = 0,m=0;
scanf("%d", &n);
printf("\n");
for (a = 0; a < n; a++)
{
scanf("%d", &arr[a]);
if (arr[a] >= 60)//计算及格
{
b++;
mid = mid + arr[a];
}
else
;
if (arr[a] >= 85)//计算优秀
{
c++;
m = m + arr[a];
}
}mid = round(mid / b * 100) / 100;
m = round(m / b * 100) / 100;
printf("及格率%0.2f\n优秀率%0.2f\n", mid,m);
return 0;
}
3.结果
4.注意点+总结
(1).审题认真确定要使用的变量类型。
(2).善于利用循环进行同类型操作。(累加(减),找最大(小)数等)
(3).在找最大数是,要注意创建的变量max初始值一定要小,例如max=0;最小值则反之。
(4),使用round()库函数,要引用头文件#include <math.h>,并且该函数只会保留到个位,所以要提前先把要保留到的小数后几位变成个位以上,例如本题。
二.第二题
1.问题:将九进制2022转化成十进制。(有关填空题我会进行复杂处理,比如明确给出输入数字,我会按照输入任意数据进行计算)
2.解题过程
int main()
{
int a = 0, b = 0,c,mid=1,d=0,e,f,h;
char arr[10] = "0";
gets(arr);//输入任意数字,获取字符串
b=strlen(arr);//strlen用于求该字符串字符个数(不包括‘\0’)比sizeof方便
f= strlen(arr);
h= strlen(arr);
for (a = 0; a<b-1; a++)
{
e = arr[a] - '0';//用于将字符串中的数字字符转化成数字
mid = 1;
for (c = h - 1; c > 0; c--)//计算该位置乘以9的个数
{
mid = mid * 9;
}h--;
e = e * mid;//计算该位数值大小
d = d +e;//各个位置数字相加(不包括个位)
}
d = d + (arr[f - 1] - '0');//arr[f - 1] - '0'计算的是最后个位数值
printf("%d", d);
return 0;
}
3.结果
4.注意点+总结:有关进制转化问题
每个进制的转化都是以十进制为桥梁,先转化十进制,再逆向转化成另一种进制
而转换方法就是让(该数据的每一位)*(乘以)该进制的(对应位置-1)次方,再相加【注意该数据的每一位最大值是该进制-1】
例如二进制01114->1*2^3+1*2^2+1*2^1+4*2^0;