江苏省C语言二级真题备考(14/20)
作者:互联网
目录
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;
}
标签:toupper,20,函数,真题,int,++,数组,include,14 来源: https://blog.csdn.net/qq_59789606/article/details/120787427