大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1. void fun(int a); 这里函数声明的地方要改为 void fun(int a[3][3]);
创新互联公司专注骨干网络服务器租用十余年,服务更有保障!服务器租用,绵阳电信机房机柜租用 成都服务器租用,成都服务器托管,骨干网络带宽,享受低延迟,高速访问。灵活、实现低成本的共享或公网数据中心高速带宽的专属高性能服务器。
2. void fun(int a[3][3])函数中,最后少了两个右大括号}
3. 空的地方a[][]填a[i][j]是没错的
另外虽然声明和定义了fun函数,作用是沿对角线翻转二维数组,即转置
但是上面的代码中却没有调用fun,调用fun函数后的代码和运行结果如下:
改动的地方见注释,输出正确,望采纳~
附源码:
#includestdio.h
int main() {
void fun(int a[3][3]); // 这里函数声明处a的行列数值要填上
int a[3][3] = {{0,1,2},{3,4,5},{6,7,8}};
for (int i = 0; i 3; i++) {
for (int j = 0; j 3; j++)
printf("%d ", a[i][j]);
printf("\n");
}
fun(a); // 这里调用fun函数,沿对角线翻转二维数组a
printf("翻转后:\n");
for (int i = 0; i 3; i++) {
for (int j = 0; j 3; j++)
printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}
void fun(int a[3][3]) {
for (int i = 0; i 3; i++)
for (int j = 0; j 3; j++) {
if (i j) {
int tmp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = tmp;
}
}
}
关于c语言中函数调用问题解答如下:
首先如果是编译的这个代码那这个函数肯定被调用了,让你觉得没有调用是因为while循环没有被执行。
图中红色框内代码p1和p2经过赋值p1是肯定大于p2所以不满足while.的条件直接退出了函数。
你需要看看要实现啥在改一下。
有两种情况,第一种:在大部分情况下都是要用到多少个参数就定义多少个.请看例子:
#include stdio.h
void weekdays(int y,int m, int d)//根据日期利用基姆拉尔森公式判定是星期几
//看参数:一共三个,主程序中调用时,也必须用三个参数
{
int iWeek;
if(m==1||m==2) {
m+=12;
y--;
}
iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;//基姆拉尔森公式
switch(iWeek)//判定星期几
{
case 0: printf("星期一\n"); break;
case 1: printf("星期二\n"); break;
case 2: printf("星期三\n"); break;
case 3: printf("星期四\n"); break;
case 4: printf("星期五\n"); break;
case 5: printf("星期六\n"); break;
case 6: printf("星期日\n"); break;
}
}
int main()
{
int year=0,month=0,day=13;
printf("请输入日期:\n格式为:1900,1,1\n");
scanf("%d%d%d",year,month,day);//输入年,月,日
weekdays(year,month,day); //运算
return 0;
}
第二种:不定参数这个有点复杂,还是建议你自行度娘了.这种情况,函数头定义参数个数可以比主函数实际调用时少.
A是先取函数f返回的内存单元(参数是i即i的地址)中存储的值,并作更改(改为6)
B项 i+6 是算术表达式,不能直接取地址,必须使用变量保存才能取地址
C项 是定义一个指向整型的指针p,并赋值为函数f的返回值(该函数返回一个指针,也就是内存地址)
D项 直接以i为参数执行函数f,返回值不起任何作用
程序修正如下:
#include "stdio.h"
int isprime(int x)
{
if (x==2)
return x;
int i;
for(i=2;ix;i++)
{
if(x%i==0)
return 0;
}
return x;
}
void main()
{
int isprime(int x);
int m,n,t,sum=0;
scanf("%d %d",m,n);
for(int i=0;i=n-m+1;i++)
{
t=isprime(m+i);
sum=sum+t;
}
printf("%d",sum);
}