【C语言基础】C语言试题复习

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 = 5n /= 10n = 32
第二次循环:n % 10 得到 2,因此 k *= 2,即 k = 5 * 2 = 10n /= 10n = 3
第三次循环:n % 10 得到 3,因此 k *= 3,即 k = 10 * 3 = 30n /= 10n = 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);
}

🚀 获取更多详细资料可点击链接进群领取,谢谢支持👇

点击免费领取更多资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值