江苏省C语言二级真题备考(14/20)

2021/10/16 6:16:13

本文主要是介绍江苏省C语言二级真题备考(14/20),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

1.使用科学计数法表示实数时,字母E后面必须跟实数

2.运算符的两个注意点

3.巧妙统计数组中各个元素个数 

4.改错题: 涉及   toupper 函数

5.写个小代码:幻方阵(难点:副对角线怎么求和)


1.使用科学计数法表示实数时,字母E后面必须跟实数

2.运算符的两个注意点

%两边必须是整数,不能是浮点型定义
优先级 = 小于 <

&& 在多重出现时,从左起出现假距离,右边的&&都在执行判断

(| | 同理)

3.巧妙统计数组中各个元素个数 

#include <stdio.h>
int main()
{
	int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i,j;
	for(i = 0;i < 12; i++)
	{
		j = s[i];
		c[j]++;
	}
	for(i=1;i<5;i++)
	printf("%d: %d\n",i, c[i]);
	return 0;
 } 

4.改错题: 涉及   toupper 函数

函数 wordsearch的功能

将a指向的字符串中所有回文单词复制到b指向的二维数组中(一个回文单词存储在b数组的行中),

函数返回b数组中回文单词的个数。

回文单词是指:一个单词自左向右读与自右向左读相同 (字母不区分大小写)                                  

 

#include  <stdio.h>
#include  <conio.h>
#include  <ctype.h>
int wordsearch( char a[ ] , char b[ ][10] )
{   int i,j,k,m,n,t,c =0,d;
    for(i=0;a[i];i++)
    {   for(j =i, k =i;isalpha(a[k]);k++ ) ;
        m =j;n = k -1;
        while (toupper(a[m] )==toupper(a[n]) && m<=n)
        {m++; n--;}
        if(m=【】=n)
        {  for(d=0, t=j;t<k; t++)
             b[c][d]=a[t];【】 
           b[c][d]='\0';
           c++;        
        }
        i=k;
       }
    return c ;
}

int main( )
 {  char s1 = "Dad left home at noon." ;【】 
    char s2[10] [10] ;
    int i,j;
    puts(s1) ;
    j = wordsearch(s1 , s2) ;
    printf( "found   % d  words\n" ,j) ;
    for(i=0;i<j;i++)
       puts ( s2) ;【】 
    getch();
    return 0;
 }

5.写个小代码:幻方阵(难点:副对角线怎么求和)

判断一个 N × N 矩阵是否为幻方阵

幻方阵:指一个矩阵中每行元素之和、每列元素之和及左右主对角线上元素之和 均相等。

【编程要求】

  • 定义符号常量N代表5
  • 编写函数 int judge( int a [ N ] [ N ])。

函数功能是判断a指向的一个N行N列二维数组中存储的矩阵是否为幻方阵,如果是则函数返回1,否则返回0

  • 编写main函数

声明二维数组 x 并用测试数据初始化

用 x 数组作为实参调用judge函数进行判断,

将 x 数组中数据及 yes"或"no”表示的赶结果输出到屏幕及文件myf2.out中。

最后将考生本人准考证号字符串输出到文件myf2.out中

#include<stdio.h>
#define N 5
int judge( int a [N][N] )
{
	int i,j;
	int b[N+N+2] = {0};
	for(i = 0;i<N ;i++)
		for(j = 0;j<N;j++)
			b[i] += a[i][j];//每一行的和
	for(j = 0;j < N ;j++)
		for(i = 0;i < N;i++)
			b[N+j] += a[i][j];//每一列的和
	for(i = 0;i < N ;i++)
			b[N+N] += a[i][i];//主对角线的和
	for(i = 0;i < N ;i++)
			b[N+N+1] += a[i][N-1-i];//副对角线的和
	for(i = 0;i < N+N+1;i++)
		if(b[i] != b[i+1]) 
		return 0;
	
	return 1;
 } 
 
 int main()
 {
 	FILE *fp;
	int x[N][N]={17,24,1,8,15,23,5,7,14,16,4,6,13,20,22,10,12,19,21,3,11,18,25,2,9 };
	int i ,j;
 	
 	if( NULL != (fp = fopen("myf2.out","w")))
 	{
 	for(i = 0 ; i < N ; i++)
 	{
 		for (j = 0; j < N; j++)
 		{
 			printf("%d ",x[i][j]);
 			fprintf(fp,"%d ",x[i][j]);	
		 }
		 printf("\n");
		 fprintf(fp,"\n");
	 }
 	if(judge(x))
 	{
 		printf("yes");
		fprintf(fp,"yes");
	 }
	 else
	 {
	 	printf("no");
		fprintf(fp,"no");
	 }
	 	fprintf(fp, "\nMy number is 9999");
	
		fclose(fp);
		fp = NULL;
	 }
 	return 0;
 }



这篇关于江苏省C语言二级真题备考(14/20)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程