1. 执行下面的程序段后,k 的值是_______。
int k=1,n=325;
do { k*=n%10;n/=10;}while(n);
解析:
给定 n = 325
和初始 k = 1
,代码中的循环将会进行如下操作:
第一次循环:n % 10
得到 5
,因此 k *= 5
,即 k = 1 * 5 = 5
, n /= 10
即 n = 32
第二次循环:n % 10
得到 2
,因此 k *= 2
,即 k = 5 * 2 = 10
, n /= 10
即 n = 3
第三次循环:n % 10
得到 3
,因此 k *= 3
,即 k = 10 * 3 = 30
, n /= 10
即 n = 0
此时 n
变为 0
,条件 n
不再为真,因此循环结束。
所以,当循环结束后 k
的值是 30
。
2. 以下对二维数组 a 的正确说明是_________。.
A. int a[3][];
B. float a[][4];
C. double a[3][4];
D. float a(3)(4);
解析:
在C语言中,二维数组的声明需要指定所有维度的大小(除了第一个维度可以省略,但这通常用于动态分配内存,在这里不适用)。
A. int a[3][];
这种声明方式是不正确的,因为第二个维度的大小必须被明确指定。
B. float a[][4];
这种声明方式也是不正确的,除非它是在函数参数列表中使用,并且意在接收一个未知行数但列数固定的二维数组。但在通常情况下,第一个维度的大小也必须被指定。
C. double a[3][4];
这种声明方式是正确的,因为它指定了两个维度的大小,并且数据类型也清晰明了。
D. float a(3)(4);
这种声明方式不符合C语言的语法。在C语言中,数组的维度需要用方括号[]
而不是圆括号()
来表示。
正确的选项是 C. double a[3][4];
。
3. 设 int a=2;,则执行 a+=a*=15;后,变量 a 的值是_______。
解析:
根据C语言的规则,*= 的优先级高于 +=,所以我们先处理 *= 再处理 +=。
计算 a *= 15:
当前 a 的值是 2。a *= 15 等价于 a = a * 15。所以 a = 2 * 15 = 30。
计算 a += a:
现在 a 的值是 30。a += a 等价于 a = a + a。所以 a = 30 + 30 = 60。
4. 使用C语言,求两个数a和b的最小公倍数,并打印结果。
解析:
#include<stdio.h>
int gy(int x,int y)
{
int r;
if(x<y)
{r=x;x=y;y=r;}
r=x%y;
while(r!=0)
{x=y;y=r;r=x%y;}
return (y);
}
int gb(int m,int n)
{
int p;
p=m*n/gy(m,n);
return (p);
}
void main()
{
int a,b,c;
printf("please enter the data you want to handle:");
scanf("%d,%d",&a,&b);
c=gb(a,b);
printf("%d",c);
}
🚀 获取更多详细资料可点击链接进群领取,谢谢支持👇