C语言二级第8套

1.

#include <stdio.h>
void main()
{
	char c1, c2, c3, c4, c5, c6;
	scanf("%c%c%c%c", &c1, &c2, &c3, &c4);
	c5 = getchar();
	c6 = getchar();
	putchar(c1);
	putchar(c2);
	printf("%c%c\n", c5, c6);

}

结果程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是(D)。

A.1267
B.1256
C.1278
D.1245

因为:[解析] 本题考查的是输入输出函数。scanf()是格式化输入函数;getchar()函数从键盘缓冲区读入下一个字符;putchar(J输出一个字符;printf()函数是格式化输出函数。在题目中,程序执行到scanf()函数时,会暂停等待用户输入4个字符,按题意输入123<回车>后,字符1~3被分别输入到c1-c3中,而c4会得到一个换行符’\n’。然后执行第1个getchar()函数,由于前面的scanf()函数读完了缓冲区中的所有字符,所以此时程序会又暂停等待用户输入,按题意输入45678<回车>后,缓冲区第一个字符4输入到C5,第二个字符5输入到C6,所以本题应该选择D) 。

2.

题目

代码:

#include  <stdio.h>
#define   N   7
/**********found**********/
void fun(int (*a)[N])//由下面可知a是一个数组
{ int  i,j,k,m;
  if(N%2==0) m=N/2 ;
  else       m=N/2+1;//m=4,最中间的为4,也表示是有m层
  for(i=0; i<m; i++) {
/**********found**********/
     for(j=i; j<N-i; j++)
		 a[i][j]=a[N-i-1][j]=i+1;
     for(k=i+1; k<N-i; k++)
/**********found**********/
		 a[k][i]=a[k][N-i-1]=i+1;
  }
}
void main()
{ int  x[N][N]={0},i,j;
  fun(x);
  printf("\nThe result is:\n");
  for(i=0; i<N; i++)
  {  for(j=0; j<N; j++)  printf("%3d",x[i][j]);
     printf("\n");
  }
}

结果:

2.

题目:

代码

#include <stdio.h>
#include <conio.h>
/*************found**************/
void fun(int m,int k)
{ int aa[20], i;//aa是用来存放余数
  for(i=0;m;i++)
  {
	/*************found**************/
	aa[i]=m%k;//求余操作
	m/=k;
  }
  for(;i;i--)//逆序遍历出来
	/*************found**************/
	printf("%d",aa[i-1]);
}
void main()
{
  int b,n;
  printf("\nPlease enter a number and a base:\n");
  scanf("%d%d",&n,&b);
  fun(n,b);
  printf("\n ");
}

结果:

3.题目

代码

#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

char *fun(char (*a)[81], int num, char *max)//三个参数:字符串数组,字符串个数,最长字符串
{
  int i;//定义遍历的循环下标
  max=a[0];//定义max的初始化值为数组a的第一个字符串,得到一维数组首地址a[0]
  for(i=0;i<num;i++){
	  if(strlen(max)<strlen(a[i])){
		  max=a[i];
	  }  
  }
  return max;
}
void main()
{
  FILE *wf;
  char ss[10][81],*ps=NULL;//定义了二维数组SS
  char s[3][81]={"abcd","deg","diegns"},*p=NULL;//定义了二维数组s
  int  i=0,n;
  system("CLS");
  printf("输入若干个字符串:");
  gets(ss[i]);
  puts(ss[i]);
  while(!strcmp(ss[i], "****")==0)  /*用4个星号作为结束输入的标志*/
     {
      i++;
      gets(ss[i]);
      puts(ss[i]);
     }
  n=i;
  ps=fun(ss,n,ps);//里面的ps是一个空指针
  printf("\nmax=%s\n",ps);//找打到最长的字符串
/******************************/
  wf=fopen("out.dat","w");
  p=fun(s,3,p);
  fprintf(wf,"%s",p);
  fclose(wf);
/*****************************/
}

结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值