答案是22
创新互联-专业网站定制、快速模板网站建设、高性价比淮安区网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式淮安区网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖淮安区地区。费用合理售后完善,十载实体公司更值得信赖。
调用函数fun时,先计算fun(--x,--y); 再计算fun(x++,y++)
前缀 -- (或++):是先减(加)1后再将其结果代入运算
后缀 ++ (或--):是先代入数据后在对其进行加(减)1运算
故而
第一步:计算fun(--x,--y)时实际上代入的值为 fun(5,6) == 11; 即先将x和y减1后再代入
此时 x == 5, y == 6
第二步:计算fun(x++,y++)时,代入的值为fun(5,6) == 11; 即先将x和y代入运算然后再加1
此次调用后x == 6,y==7
第三步:计算fun(fun(x++,y++),fun(--x,--y)) ,此时实际上代入的值为 fun(11,11) == 22;
因此函数运行后 z 的值为 22; x 的值为6,y 的值为7
另外就是楼主最后一条打印语句出错了,应该是笔误吧:改为 printf("%d\n",z);
C main是入口
D printf 是标准库函数的函数名
A ''单引号中的必须是字符型
A char a='A',b='B'
B 0为假,其他为真
求5个字符串的回文个数
#include stdio.h
#include string.h
int main()
{
char a[5][20];
int i,j,k=0,huiwen=0,n=0;
printf("请输入你要判断的字符串!\n");
for(i=0;i5;++i)
scanf("%s",a[i]);
for(j=0;j5;++j)
{
k=0;
for(i=0,n=strlen(a[j]);in/2;++i)
{
if(a[j][i]!=a[j][n-1-i])
{
k++;
break;
}
}
if(k==0)
huiwen++;
}
printf("有%d回文\n",huiwen);
return 0;
}
求数组的最大和次最大 和最大公约数
#include stdio.h
#define N 10
int main()
{
void max(int *a);
void gongyueshu(void);
int a[N];
int i,n;
printf("\t\t1 [求数组最大值和次最大值]\t2 [求公约数]\n");
scanf("%d",n);
switch(n)
{
case 1:{
printf("请输入10个数字sn");
for(i=0;iN;++i)
scanf("%d",a+i);
max(a);//该函数是求最大值和次最大值
}
case 2:{
printf("请输入两个数求最大公约数 ");
gongyueshu();//该函数是求最大公约数
}
return 0;
}
}
void max(int *a)
{
int t,i,j,k;
for(i=1;iN;++i)
{
for(j=0;jN-i;++j)
if(a[j]a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
printf("最大值是 %d 次最大值是 %d\n",a[0],a[1]);
}
void gongyueshu(void)
{
int i,j,k,r,t;
scanf("%d",i);
scanf("%d",j);
if(ij)
{
t=i;
i=j;
j=t;
}
while(j!=0)
{
r=i%j;
i=j;
j=r;
}
printf("公约数是%d\n",i);
}
1、原因很简单,max2不输出的原因是,你的函数最后只是返回了i或者j的值,但没有其它操作了。
如果你想要max2输出,那么要将30行换成:
printf("%d",max2(a,b));
max2(a,b)最终得到只是个值,你完全可以把它看成是一个变量。如果这段代码还要详细点:
int s;
s=max2(a,b);
printf("%d",s);
这下看明白了吧
2、有返回值和没返回值其实很好区分,只要有你最终是否会用到return去得到一个值就是区分的方法。
3、你的max1,其实是有返回值的。补全的话在第7行后面是有一句return 0的,但是这个返回值不是你实际会用到的,它的意思只是说你的这段程序是正确的。是可执行的。
4、max3没有返回值,它虽然有输出,但是这个输出的i或者j不是这个函数的返回值,只是函数执行的一个步骤而已。max1中的printf输出也是同理
第二行执行的是printf("%d\n", f2());,算上前面的for循环,一共执行了4次f2,printf语句是先执行f2然后再输出的。
看到f2里面,其实就是两个静态变量。s初始为0,k=1;然后每次进来k都会自增,进来四次,就相当于是1+2+3+4,所有最后输出出来就是10.
你不知道第二行输出是10,是不知道静态变量是啥意思吧?静态变量你可以理解为全局变量,他只会初始化一次,也就是说,static int k = 1, s;这一句,只会在第一次进入f2的时候执行,后面再进去,是不会执行k=1的。
1、 函数调用:strcat(strcpy(str1,str2),str3)的功能是________。
C) 将串str2复制到串str1中后再将串str3连接到串str1之后
2、 若有以下调用语句,则正确的fun函数首部是
main()
{ ∶
∶
int a;float x;
∶
∶
fun(x,a);
∶
∶
}
B) void fun(float a,int x)
3、 有如下程序
int func(int a,int b)
{ return(a+b); }
main()
{ int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r); }
该程序的输出结果是__________。
D) 15
4、 函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+……+1/(n*n)
请你在下面程序中的划线部分填入________,完成求π的功能。
#include "math.h"
double pi(long n)
{ double s=0.0; long i;
for(i=1;i=n;i++) s=s+________;
return (sqrt(6*s)); }
A) 1.0/i/i
5、 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递
方式是________。
B) 单向值传递
6、 对于C语言的函数,下列叙述中正确的是________。
A) 函数的定义不能嵌套,但函数调用可以嵌套 (这答案有待斟酌)
7、 函数f的功能是:测定字符串的长度,空白处应填入________。
int f(char s[ ])
{ int i=0;
while(s[i]!='\0') i++;
return (________); }
main( )
{ printf("%d\n",f("goodbye!")); }
B) i
8、 若主调用函数类型为double,被调用函数定义中没有进行函数类型
说明,而return语句中的表达式类型为float型,则被调函数返回
值的类型是________。
C) double 型
9、 以下叙述中,错误的是________。
D) 形参可以是常量、变量或表达式
10、 以下叙述中,不正确的是________。
B) 在main函数体内定义的变量是全局变量