#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};
研究别人的写法,本人觉得没有任何问题。但本人写代码的时候最好采用通熟易懂的写法。