随记
编程复习一直没有开始自己没有怎么做题,零零散散做了一些别人问的题,也顺便回顾了一些知识点,记录一些。
题目1
朋友问的问题是这片输入是哪里错了。
试了一下她的输入部分,框起来的部分应该是可以的,但是要在循环开始之前getchar()一下。
知识点: getchar()能吞掉回车,没加的话回车会作为第一个数,那么最后一个数就没进来了。
但这题转化成字符串做有点麻烦易出错。我改用直接当成数字做,这样可能会更方便一点。
#include<stdio.h>
int main()
{
int i,n,num,a,max=0;
int sum[10]={0};
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&num);
for(;num!=0;)
{
a=num%10;
sum[a]++;
num=num/10;
}
} //每个数字出现计数
for(i=0;i<10;i++)
{
if(sum[i]>max) max=sum[i];
}
printf("%d:",max); //出现最多次数
for(i=0;i<10;i++)
{
if(sum[i]==max) printf(" %d",i);
} //出现最多的数字
return 0;
}
题目2
这题朋友问的是这行输出执行过程。
几个知识点自己总结了一下:
1.printf执行过程是从右往左。先执行输出(p++)->a再执行输出(++p)->a。
2.p++是先用再加,++p是先加再用。
执行过程就很明显了。