上见(考研复试—–C语言上机操作(三))
第一题:和(考研复试—–C语言上机操作(一))第一题相同。
第二题:和(考研复试—–C语言上机操作(二))第一题相同。
第三题:
1,问题描述
输入若干个英文,以‘,’作为结束符(英文中不包含点号)。统计其中换行符个数和“at”字符串的个数。直接输出它俩的个数,分别用a,b表示。
2,问题思路
使用getchar()函数,然后设置一个flag位,原来是0,遇到a变为1,遇到t且flag为1时,则b++,遇到‘\n’,a++
3,参考代码 :见Example3
第四题:
1,问题描述:0—7所能组成的奇数个数。
2,问题思路
这个问题其实是一个排列组合的问题,设这个数为 sun=a1a2a3a4a5a6a7a8,a1-a8 表示这个数的某位的数值,当一个数的最后一位为奇数时,那么这个数一定为奇数,不管前面几位是什么数字。如果最后一位数为偶数,则这个数一定为偶数。
a1-a8可以取 0-7 这个八个数字,首位数字不为 0。
从该数为一位数到该数为8位数开始统计奇数的个数:
- 1.当只有一位数时也就是该数的最后一位,奇数个数为4
- 2.当该数为两位数时,奇数个数为4*7=28
- 3.当该数为三位数时,奇数个数为:4*8*7=224
- …
- 8.当该数为八位数时,奇数个数为:4*8*8*8*8*8*8*7(依次为最后一位到第一位)
3,参考代码:Example4
————————-
END——————————
Example 3 字符串的处理
#include "stdio.h"
int main(){
printf("随便输入一串字母,以','结尾:\n");
char c;
int a=0,b=0,flag = 0;
while ((c=getchar())!= ','){
if(c == '\n'){
a++;
}
else if(c == 'a')
flag = 1;
else if(c=='t'&&flag==1){
b++;
flag = 0;
}
}
printf("输入的字符串中有%d个换行符,%d个at",a,b);
return 0;
}
Example 4 奇数个数
#include "stdio.h"
int main(){
int i,sum=4,s=4;
for(i = 2;i<=9;i++){
printf("%d位数字的奇数个数为:%d\n",i-1,sum);
if(i==2){
sum *= 7;
}else{
sum *=8;
}
}
return 0;
}