该系列文章内容可能来源我本人或者zhrmoe(他的主页:https://zhr.moe)的编写。文章如果有错误欢迎批评指正,谢谢!转载请注明来自本站,另外,本系列教程中的代码建议初学者自己手打一遍,不要直接复制(由于某些奇怪的原因可能会导致你复制的代码出现错误!相信自己的双手吧=-=
在这里总结一些初学者常见错误,建议在考试前看一遍。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 |
//从头写起吧,在最开始的预处理语句。 //———————————————————————– //正确形式: #include<stdio.h> #include"stdio.h" #include<math.h> #include<math.h> //错误形式: //1.拼写错误 #includ<stdio.h> include<studio.h> //2.忘记加入要使用的头文件。比如math.h或者string.h //注意:之后代码之前都没有写头文件 //———————————————————————– //正确形式: int main() { return 0; } //错误形式: //1.拼写错误 int mian() { retrun 0; } //2.缺少必要的空格或分号 intmian() { retrun 0; } //3.括号不成对出现(一个单独的括号会很伤心的~) int mian() { retrun 0; //———————————————————————- – //正确形式: int a, b, c; int a = 0, b = 0, c = 0; int a[50]; int a[50] = { 0 }; double t; double t = 0; char c = 'a'; char *s = "abcdefg"; //错误形式: //1.符号使用错误,编写过程不易察觉。。 int a; b; c; int a = 0; b = 0, c = 0; char c = "a"; char *s = 'abcdefg'; //2.定义数组使用变量 int i = 50; int a[i]; //———————————————————————- – //正确形式: int main() { int *a = NULL; int b = 0; a = &b; return 0; } //错误形式: //1.星号使用错误,切记指针的定义和调用之间的不同 int main() { int *a; int b = 0; *a = &b; return 0; } //2.野指针的初始化, NULL必须大写 int main() { int *a = null; return 0; } //———————————————————————- – //正确形式: int main() { int a = 1; double b = 2.1; char c = 'a'; char *s = "abcdefg"; int *p = NULL; p = &a; printf("%d", a); printf("%d", *p); printf("%.2f", b); printf("%c", c); printf("%c", *s); printf("%s", s); printf("%p", p); scanf("%d", &a); scanf("%lf", &b); scanf("%c", &c); scanf("%s", s); return 0; } //错误形式: //1.格式化文本中的类型与变量类型或数量对应错误 //可以通过编译,但结果可能与预期结果不一致 int main() { int a = 1; double b = 2.1; char c = 'a'; char *s = "abcdefg"; int *p = NULL; p = &a; printf("%c", a); printf("%*.*f", 3, b); scanf("%lf", &a); return 0; } //2.scanf不加或多加取址符& int main() { int a = 1; int *p = NULL; p = &a; scanf("%d", a); scanf("%d", &p); return 0; } //———————————————————————- – //正确形式: int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); if (a == b) { //do something } else if (b <= c) { //do something } else if (c >= a && c <= b) { //do something } else { //do something } return 0; } //错误形式: //1.逻辑运算符号错误, 引起程序逻辑分支出现问题,得不到正确结果 int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); if (a = b) { //do something } else if (b <= c) { //do something } else if (a <= c <= b) {//注意!这种写法是错的!! //do something } else { //do something } return 0; } //2.if else 级联写法错误,导致编译失败或者程序逻辑错误 //可能出现多余大括号,多余分号。缺少空格,或缺少分号 int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); if (a == b) { //do something }elseif(b <= c) { //do something } else if (c >= a && c <= b); { //do something } else { //do something }; return 0; } //———————————————————————- – //正确形式: int add(int x, int y); int padd(int *x, int *y); int main() { int a = 1, b = 2; int *pa, *pb; pa = &a; pb = &b; printf("%d\n", add(a, b)); printf("%d\n", padd(&a, &b)); printf("%d\n", padd(pa, pb)); return 0; } int add(int x, int y) { return x + y; } int padd(int *x, int *y) { return *x + *y; } //错误形式: //1.参数传递类型错误。 int add(int x, int y); int padd(int *x, int *y); int main() { int a = 1, b = 2; int *pa, *pb; pa = &a; pb = &b; printf("%d\n", add(&a, &b)); printf("%d\n", padd(a, b)); printf("%d\n", padd(&pa, &pb)); return 0; } int add(int x, int y) { return x + y; } int padd(int *x, int *y) { return *x + *y; } //2.声明形式和实际形式不符 void add(int *x, int y); double padd(int *x, int *y); int main() { int a = 1, b = 2; int *pa, *pb; pa = &a; pb = &b; printf("%d\n", add(a, b)); printf("%d\n", padd(&a, &b)); printf("%d\n", padd(pa, pb)); return 0; } float add(int x, int y) { return x + y; } void padd(int *x, int *y) { return *x + *y; } //———————————————————————- //通过考试不是目的,提高自己的程序编写能力才是重要的~ //如果你看到了这里,感谢你的耐心! //记的,细节决定成败。。 |
2 Comments
谢啦!!☆⌒(*^-゜)v辛苦了两位,复习,看完了
谢啦!!☆⌒(*^-゜)v辛苦了两位,复习,看完了