A:A除以B
考察在字符串中的遍历,数据的迭代。
...
int i,j=0,m,n=0,b;//i用于数组a的迭代,j用于s的迭代.m,n分别对应每一次计算的商和余数,b记录除数。
char a[1005],s[1001];//因为大数运算 ,所以用字符保存。
...
for(i=0;a[i]!='\n';i++)
{
m=(a[i]-'0')+n*10;//从最高位开始依次计算
if(m>=b)
{
s[j++]='0'+m/b;
n=m%b;
}
else
{
s[j++]='0';
n=m;
}
if(s[0]=='0') j--;//清除首位的‘0’
}
...
B:统计1到N之间数字1的个数
主要考察数据分解和统计(以后单片机中使用最频繁的)
这题的难点在思路上,只有想到把每次的每个数分解再统计,还是不难解的
int n,i,count;
int a,b,c,d;
...
for(i=1;i<=n;i++)
{
a=i%10;
b=i/10%10;
c=i/100%10;
d=i/1000;
if(a==1)
count++;
if(b==1)
count++;
if(c==1)
count++;
if(d==1)
count++;
}
...
C:C语言实验题――求平均值
太简单不写了
D:求绝对值最大值
简单 有人没对贴一下核心代码
for(i=1;i<=n;i++)
{
scanf("%d",&a);
if(fabs(a)>fabs(b))b=a;
}
E:并列排名
考察判断语句(对并列排名的理解)
即大于其数量的人数为排名
for(j=0;j<n;j++)
{
if(a[j]>m)//m为当前分数,a为全部
rank++;
}
F:(A+B) mod 3
考察数据统计,数组遍历
计算所有数的和 ,再除以3
char a[1000],b[1000];
int sum=0,x,y,i;//x,y分别为字符串大小。
...
for(i=0;i<x;i++)
{
sum+=a[i]-'0';
}
for(i=0;i<y;i++)
{
sum+=b[i]-'0';
}
...