-
White Mouseybz,我对这个问题有一个疑问:为什么 scanf 在这里要求 9 个条目? 不应该是8次吗?
#include
int main()
int a[8], p;
printf("输入 8 个数字:");
for (p=a; pfor (p=a; preturn 0;
在我修改后的程序中,循环次数相同,但是 printf 打印了 8 个数字,而 scanf 必须输入 9 次,这是什么原因?
我明白了原因 - 问题不在于循环次数,而是 - scanf("%d ", p);这里有一个空间! Scanf 跳过空格来读取下一个字符,因此您必须输入另一个数字。 此处的空格包括:
空格、制表符、换行符、回车符和分页符。 只需删除空格即可。
-
找到另一个原因,你的程序没有错!
有一点需要注意,你说的是输入8个数字,但是p关于输入9个数字的问题,双为什么是对的,他的意见!
-
您给出的 C 程序有错误,*p='\0';p 应为小写,并应更改为 *p='\0';
更正程序的结果是 C51
完整的程序和运行过程分析如下。
#include
void main()
int a=28,b;
char s[10],*p;
p=s;do
b=a%16;
if(b<10) *p=b+48;
else *p=b+55;
p++;a=a/5;
while(a>0);
p='\0';
puts(s);
<>进程解析。
因为 a==28,p=s,p 指向 s[0],进入 while 循环,b=28%16=12,b>10,*p=12+55=67,所以 s[0]==c'(ASCII 代码 67),p++,p 指向 s[1],a=a 5=5
a==5,a>0,继续while循环,b=5%16=5,b<10,*p=5+48=53,所以s[1]==5'(ASCII 代码 53),p++,p 指向 s[2],a=5 5=1
a==1,a>0,继续while循环,b=1%16=1,b<10,*p=1+48=49,所以s[2]==1'(ASCII 代码 49),p++,p 指向 s[3],a=1 5=0
a==0,退出 while 循环,*p='\0',所以 s[3]==0'(string terminator),输出字符数组 s,所以结果是 c51
-
**为:int main()
最初,m=9,进入for循环,确定m>0,然后执行循环语句。
如果 9%3==0 为 true,则运行 printf 语句,首先 --m 得到 8,然后将 m 的值打印为
m--进入下一个循环到7,确定m>0,执行循环语句。
如果 judgment, 7%3=1≠0, m--输入下一个循环为 6,判断 m>0,执行循环语句。
如果 6%3==0 为 true,则运行 printf 语句,首先 --m 得到 5,然后将 m 的值打印为
m--输入下一个循环为4,确定m>0,执行循环语句。
如果 judgment, 4%3=1≠0, m--进入下一个循环为 3,判断 m>0,执行循环语句。
如果 3%3==0 为 true,则运行 printf 语句,首先 --m 得到 2,然后将 m 的值打印为
m--输入下一个循环为1,确定m>0,执行循环语句。
如果判断,1%3=1≠0,m--进入下一个循环为0,判断m>0不成立,跳出循环,程序结束。
所以最终的输出是:852
请注意,首先执行 --m--,然后返回 m 的值; m--首先返回 m 的值,然后执行 --; 看
-
总结。 你好亲爱的,如果 n = 0,则返回第一个元素的数组 x,例如。
你好亲爱的,如果 n = 0,则返回第一个元素的数组 x,例如。
问题 3. 答案是
你好,是的。
为什么。 为什么错了。
你好,因为 c 没有 ()。
-
ASCII 代码按顺序列出。
例如,小写字母顺序:a、b、c、d、e、f、g,..x、y、z,相邻字母之差为1,从a递增至z
例如,大写的顺序回答:a、b、c、d,..x、y、z,相邻字母之间的差值为 1,从 a 到 z 递增
你不需要记住他们的代码是什么,你只需要知道顺序。
int x='f';
x-'a'就是这样'f' - 'a' 。按 A、B、C、D、E、F、ASCII 码差 5 的顺序,'f' - 'a'等于 5。
x-'a'+1 等于 6。
a'+ 6 到 a、b、c、d、e、f、g、h、i、j,第 6 个字母的右边是 g。
A、G
-
你好! 非常乐意为您解答。
源输出为 a, g:
#include
main()
-
运行 m=a>b,如果条件为 false,则 m=0;&&& 前面是 0,n=c>d 不执行,所以 n=2
-
你的程序相当于下面的程序,我稍微改了一下,看得更清楚:
#include
#include
void fun (char*w,int m)}main()
按照你的意图,我会把我评论的两个陈述移到循环的末尾。 即:
虽然 (p1 是在你原来的基础上改变的,但这就是它被改变成这样的:
而(P1 楼层主参考。
祝你好运!
-
第一:看程序执行:
初始值为 a=1,b=2
1<8 所以 b=b+a=2+1=3
a=a+2=1+2=3
然后在 for 语句中执行 a++, a=4
4<8 所以 b=b+a=3+4=7
a=a+2=4+2=6
然后在 for 语句中执行 a++, a=7
7<8 所以 b=b+a=7+7=14
a=a+2=7+2=9
然后在 for 语句中执行 a++,a=10
如果 10 不小于 8,则执行 for 语句。 结果 10,14Second:在 for 语句中将 a++ 更改为 ++a,与上面的输出相同。 因为 A++ 和 ++A 是在
是一样的,不影响后续的判断和结果输出。
第三:以我的拙见,你认为输出结果是9,14是因为你不理解clear for语句的执行吗? 而不是误会。
A++ 与 ++A。
-
我认为改为 ++a 后,b 的值发生了变化,a 仍然保持不变。
-
稍微了解一下:先用a++,再加; +a 使用前添加。