目录
1.使用科学计数法表示实数时,字母E后面必须跟实数
2.运算符的两个注意点
3.巧妙统计数组中各个元素个数
4.改错题: 涉及 toupper 函数
5.写个小代码:幻方阵(难点:副对角线怎么求和)
% | 两边必须是整数,不能是浮点型定义 |
优先级 | = 小于 < |
&& 在多重出现时,从左起出现假距离,右边的&&都在执行判断 (| | 同理) |
#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; }
函数 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; }
判断一个 N × N 矩阵是否为幻方阵
幻方阵:指一个矩阵中每行元素之和、每列元素之和及左右主对角线上元素之和 均相等。
【编程要求】
函数功能是判断a指向的一个N行N列二维数组中存储的矩阵是否为幻方阵,如果是则函数返回1,否则返回0
声明二维数组 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; }