#include <stdio.h> #define COLS 4 int sum2d(int ar[][COLS], int rows); int sum(int ar[],int n); int main(void) { int total1, total2,total3; int * pt1; int (*pt2)[COLS]; pt1 = (int [2]){10.20}; pt2 = (int [2][COLS]){{1,2,3,-9},{4,5,6,-8}}; total1 = sum(pt1,2); total2 = sum2d(pt2,2); total3 = sum((int []){4,4,4,5,5,5},6}; printf("total1 = %d\n", total1); printf("total2 = %d\n", total2); printf("total3 = %d\n", total3); return 0; } int sum(int ar[], int n) { int i; int total = 0; for(i=0;i<n;i++) total += ar[i]; return total; } int sum2d(int ar[][COLS], int rows) { int r; int c; int tot = 0; for(r=0;r<rows;r++) for(c=0;c<COLS;c++) tot += ar[r][c]; return tot; }
此段代码为C primer plus P277页[程序清单10.19]代码。
本人是用的是 VS2010软件进行的编写。
出现以下波浪线问题:
1、21行 return 出现说明:应输入声明
2、11、12、16行 int 出现说明:不允许使用类型名
3、11、12、16行 ” { ” 符号处出现说明:应输入” ; ” (注:此处符号是英文标点)
4、17、18、19行 “ , ” 符号处出现说明: 英输入 ” ) ” (注: 此处符号是英文标点)
解决方案
10
#include <stdio.h> #define COLS 4 int sum2d(int ar[][COLS], int rows); int sum(int ar[],int n); int main(void) { int total1, total2,total3; int * pt1; int (*pt2)[COLS]; int temp_1[2] = {10, 20}; int temp_2[2][4] = {{1,2,3,-9},{4,5,6,-8}}; int temp_3[6] = {4,4,4,5,5,5}; pt1 = temp_1; pt2 = temp_2; total1 = sum(pt1,2); total2 = sum2d(pt2,2); total3 = sum(temp_3,6); printf("total1 = %d\n", total1); printf("total2 = %d\n", total2); printf("total3 = %d\n", total3); return 0; } int sum(int ar[], int n) { int i; int total = 0; for(i=0;i<n;i++) total += ar[i]; return total; } int sum2d(int ar[][COLS], int rows) { int r; int c; int tot = 0; for(r=0;r<rows;r++) for(c=0;c<COLS;c++) tot += ar[r][c]; return tot; }
5
偶遇到相似问题都是用
“每次用/*…*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
“每次用/*…*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
10
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来全部人都是说一套做一套,不是吗?
不要写连本人也预测不了结果的代码!
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来全部人都是说一套做一套,不是吗?
不要写连本人也预测不了结果的代码!
5
本人印象中下面这种写法只是某些特殊版本的编译器才能识别吧,应该不属于标准C的语法吧。
pt1 = (int [2]){10.20};
研究别人的写法,本人觉得没有任何问题。但本人写代码的时候最好采用通熟易懂的写法。
pt1 = (int [2]){10.20};
研究别人的写法,本人觉得没有任何问题。但本人写代码的时候最好采用通熟易懂的写法。