第一个题目:
#include <stdio.h>
void change2(int n[])
{
*n= 100;
}
int main()
{
int time[5]={78,5,3};
change2(time);
printf("%d\n",time[0]);
return 0;
}
请问“void change2(int n[]){ *n= 100; }”这一部分是什么意思?为什么会替换掉 time[0]的元素?
第二个题目
#include <stdio.h>
int main()
{
int a = 20;
int score = a + 100;
printf("%d\n", score);
{
int score = 50;
{
score =10;
printf("%d\n", score);
}
a = 10;
}
{
score = a +250;
int score = 30;
printf("%d\n", score);
}
printf("%d\n", score);
return0;
}
输出结果是:(注意:有个%d后面是没有的\n的)
120
10
30
260
//为什么最后一个输出地是260呢?不是应该是最外括号的 score=120吗?
第三个问题是:
//请输入一个97~122之间的数字并打印 ASCAII值相应地英文字母!
#include <stdio.h>
char upper(char c)
{
return c;
}
int main(){
while (1) {
int n=0;
printf("请输入一个97~122之间的数字!\n");
scanf("%d",&n);
if (n>=65&&n<=122) {
char cc=upper(n);
printf("%c\n",cc);
}else{printf("请输入一个97~122之间的数字!\n");}
}
return 0;
}
为什么我在键盘上输入除了数字之外的符号,输入英文字母会出现无限的“请输入一个97~122之间的数字!”?好像是进入一个死循环。代码应该怎么编写才能解决这个问题?
第一个问题:*n指向的是数组的第一个元素吗?
第二个问题:score = a +250;后面又有一个 int score = 30;,那这样score不会被重新赋值为30吗?
第三个问题:while 死循环是故意的,不是这个问题。问题是只要输入英文字母系统就会报错,输入数字就正常运行
前面那哥们说的是对的。
*n确实是指向传入数组的第一个元素,数组名n单独时代表的是数组的首地址。
不会,因为新定义的score是第二个尖括号内的,也就是这一块的局部变量,与最外层的score无关。
输入错误是肯定的,我也试了,这里是以%d格式读取的,输入字符会出错误。
3. 请问怎么解决输入字符会出错误的局面,这个错误是由于 while 循环引起的吗?
追答死循环错误与while循环有关,为何会这样我也不清楚,根本原因还是在于以%d格式读入字符。你想读入字母做什么,不是只实现输入数字转变为字母吗,你还想实现输入字母又输出字母吗,那读取方式可能就不能简单地%d了,%c或者%s读入,然后再写个函数来判断吧
本回答被提问者和网友采纳第一个问题:*n指向的是数组的第一个元素吗?
第二个问题:score = a +250;后面又有一个 int score = 30;,那这样score不会被重新赋值为30吗?
第三个问题:while 死循环是故意的,不是这个问题。问题是只要输入英文字母系统就会报错,输入数字就正常运行