考研复试-----C语言上机操作(四)

上见(考研复试—–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;
}

点赞