扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
#include stdio.h
创新互联成立与2013年,先为龙湾等服务建站,龙湾等地企业,进行企业商务咨询服务。为龙湾企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
#include string.h
#define MAXS 10
void Shift(char s[]);
void GetString(char s[]); /* 实现细节在此不表 */
int main()
{
char s[MAXS];
GetString(s);
Shift(s);
printf("%s\n", s);
return 0;
}
//下面是修改过的答案及原因
void GetString(char s[])
{
scanf("%s", s);
return;//void也写上return比较好
}
void Shift(char s[])
{
int i, t, d = 0, e;
char a[100], b[100], c[100];
memset(a, 0, sizeof(a));//abc数组都没有初始化,里面的数据不能保证是正常的
memset(b, 0, sizeof(b));//可能在你的电脑上数据正常,放在评测机上就错了
memset(c, 0, sizeof(c));
e = strlen(s);
for (i = 0; ie; i++) {
if (i = 2) {
a[i] = s[i];
}
if (i2) {
b[d] = s[i];
d++;
}
}
d = 0;
t = strlen(b);
for (i = 0; ie; i++) {
if (it) {
s[i] = b[i];
//c[i] = b[i];
}
if (i = t) {
s[i] = a[d];
//c[i] = a[d];
d++;
}
}
// puts(c);
return;//void也写上return比较好
}
你这是定义的毛结构体,x根本不是什么类型,而是一个指针变量,指向结构体node的
你现在纠结的是地址变量前边加上之后,就搞不清了。
是取地址,也就是存放符号之后的数据的地址。所有数据在内存中都有一个地址(包括指针)。这下你应该明白了在x前面加上符号后,也就是取了x这个地址数据存放的位置,可能有点绕,这个自己好看看就行了。
还有一点就是我第一眼看你的题目还以为是函数之间进行值传递和地址传值的区别呢,
例:int a;
p=a
如果你把a这个参数传到另一个函数中的话,在原来的函数中是不能改变其值的。不信你自己测试。
你把p这个值传进去了之后,也不能改变p的值,但是能改变*p的值,也就是a的值。这样我们想在其它函数里改变a的值的话,就在a前边加个这样就能改变a的值,但是在用的时候要加*
先看下我的运行结果吧,会自动判断输入的m、n是否合法哦!
上代码,注释只写了部分有助理解的。
#include stdio.h
int Found(int m, int n, int a[])
{
int i = 0;
int Count = 0;
int offset = 0; //数组a的下标
int qian, bai, shi, ge; //千位、百位、十位、个位的值
for(i=m; i=n; i++)
{
//取出千位、百位、十位、个位的值
qian = i/1000;
bai = (i%1000)/100;
shi = (i%100)/10;
ge = i%10;
if((qian= bai bai=shi shi=ge) (qian+ge == bai+shi)) //找到一个符合条件的数
{
Count++;
a[offset++] = i;
}
}
return Count;
}
int main()
{
int m = 0;
int n = 0;
int nResult[100] = {0};
int Count = 0;
int i = 0;
FILE* pFile = NULL;
char szInfo[100] = {0};
while(1)
{
printf("Please enter m and n:");
scanf("%d %d", m, n);
printf("\n");
if(m=1000 n=1200 mn)
break;
else
printf("输入数据不合法,请重新输入\n");
}
Count = Found(m, n, nResult);
pFile = fopen("104.out", "w");
if(NULL == pFile)
printf("打开文件失败\n");
sprintf(szInfo, "found %d numbers in %d ~ %d:\n", Count, m, n);
printf("%s", szInfo);
if(NULL != pFile)
{
fwrite("No. 104\n", 1, strlen("No. 104\n"), pFile); // 写入学号
fwrite(szInfo, 1, strlen(szInfo), pFile); //写入部分信息
}
for(i=0; iCount; i++)
{
printf("%d ", nResult[i]);
sprintf(szInfo, "%d ", nResult[i]);
if(NULL != pFile) //输出到屏幕的同时,顺便把该值写进文件
fwrite(szInfo, 1, strlen(szInfo), pFile);
}
printf("\n");
if(NULL != pFile)
fclose(pFile);
return 0;
}
自从工作以来,两年没上过百度知道了,当初上大学的时候天天在百度知道问问题,今偶尔闲娱,帮忙解答,想不到这里还是这么热闹,不禁想起了当年为一个链表、一个函数挑灯夜战的场景。只能叹时间太快,想不到都过去好几年了。做程序最需要毅力,小师弟,好好努力吧,嘿嘿,下班回家咯!
结果是1.
func(x)是将外部变量x作为参数(实参)传递给函数func(int x)中的x(形参)
func(int x)函数中的x与外部变量x是不同的,这是两个不同的变量,所占的内存地址也是不同的,因此形参(即func(int x)中的x)的变化并不会影响实参(即func(x)中的外部变量)的变化。
所以在函数func(int x)中令x=3,只是将func函数中的局部变量即形参x置为了3,而外部变量x认为1,所以主函数最后输出的是1.
另外,你应该在main函数前加一个func函数的声明
C/C++语言中,默认情况下,函数时可以从文件外部调用的。因此,函数存储类型 extern 可以省略,表示是外部函数。static 用来表示函数存储类型时,表示内部函数,不能从外部文件调用。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流