如何批量替换把C语音中的%lu替换为%u?

C语言中,只定义a,b两个int变量,已经赋值,如何把它们所赋的值交换?_百度知道
C语言中,只定义a,b两个int变量,已经赋值,如何把它们所赋的值交换?
int a=1,b=2;何让输候ab值别21
我有更好的答案
按默认排序
a+=b;b=a-b;a=a-b;
用个变量,转换下t=a;a=b;b=t;//就可以了啊
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言,编写一个程序,把它的输入复制到输出,并将输入中连续的空格用一个空格代替。_百度知道
C语言,编写一个程序,把它的输入复制到输出,并将输入中连续的空格用一个空格代替。
不求其他答案,只求大家看下下面这个程序问题出在哪里?#include &stdio.h&main(){
char a[256];
for(i=0;(a[i]=getchar())!='\n';) {
if(a[i]!=' ')
{printf(&%c&,a[i]);
printf(&%c&,a[i]);
while(a[i]==' ') i++;
不明白为什么你不把i++写到for()里面,搞那么多i++不嫌麻烦么?#include &stdio.h&int main(){
char a[256];
for(i=0;(a[i]=getchar())!='\n';)
if(a[i]!=' ')
printf(&%c&,a[i]);
printf(&%c&,a[i]);
while(a[i]==' ')
//这个循环弄得我丈二和尚摸不着头脑,这个循环应该是将输入中连续的空格用一个空格代替的吧。可是它完全不起作用,因为不管你怎么输入,如果不是空格就if(a[i]!=' ') {printf(&%c&,a[i]); i++; } 输出了对吧,如果是空格呢,也直接就输出了呀i++;
}}举例输入qwe**asd,空格我用*代替了,前面的qwe输出没问题,然后第一个*也输出,再i++,这个时候i==4,然后运行到while(a[i]==' ') i++;条件满足循环一次,i==5,而a[5]!=‘ ’,因为a[5]还没有输入字符呢,然后a[i]=getchar();这句代码就成了a[6]=getchar(),a[5]从开始到结束都没有得到任何字符输入。其实你的方法没大问题,错就是出在a[i]=getchar()上了。#include &stdio.h&int main(){
char a[256];
for(i=0;a[i]!='\0';)
if(a[i]!=' ')
printf(&%c&,a[i]);
printf(&%c&,a[i]);
while(a[i]==' ')
其他类似问题
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言:输入十个数,并将最小值与第一个数交换,最大值与最后一个数交换,我的怎么错了?求大神_百度知道
C语言:输入十个数,并将最小值与第一个数交换,最大值与最后一个数交换,我的怎么错了?求大神
#include&stdio.h&int main(){ int i,j,temp,a[10],b[10]; printf(&请输入10个数&); for(i=0;i&10;i++)
scanf(&%d&,a[i]); b[10]=a[10]; for(i=0;i&10;i++)
for(j=0;j&10;j++)
if(a[j-1]&a[j])
temp=a[j-1];a[j-1]=a[j];a[j]=
} for(i=0;i&10;i++)
if(a[0]==b[i])
temp=b[i];b[i]=b[0];b[0]=
if(a[9]==b[i])
temp=b[i];b[i]=b[9];b[9]=
} for(i=0;i&10;i++)
printf(&%d&,b[i]); return 0;}
#include&stdio.h&int main(){ int i,j,temp,a[10],max,min,k,l; printf(&请输入10个数&); for(i=0;i&10;i++)
scanf(&%d&,a[i]); max=a[0]; min=a[0]; for(i=1;i&10;i++)
if(a[i]&min)
min=a[i],l=i;
else if(a[i]&max)
max=a[i],k=i; a[l]=a[l]=a[0];a[0]= a[k]=a[k]=a[9];a[9]= for(i=0;i&10;i++)
printf(&%d&,a[i]); return 0;}本人新手,显示无法运行
提问者采纳
你的有两个明显的错误
scanf(&%d&,a[i]);
输入数据应该取地址&a[i]
for(j=0;j&10;j++) if(a[j-1]&a[j])j=0 时
a[j-1]的下表就是a[-1]
这绝对是个大错。
#include&stdio.h&int main(){ int i,j,temp,a[10],max,min,k,l; printf(&输入&); for(i=0;i&10;i++)
scanf(&%d&,&a[i]); max=a[9]; min=a[0]; k=9; l=0; for(i=0;i&10;i++)
if(a[i]&min)
min=a[i],l=i; for(i=0;i&10;i++)
if(a[i]&max)
max=a[i],k=i; a[k]=a[k]=a[9];a[9]= a[l]=a[l]=a[0];a[0]= for(i=0;i&10;i++)
printf(&%d&,a[i]); return 0;}哪错
min=a[i],l=i;还有max=a[i],k=i;
这两句之间语句用分号隔开
max=a[i] ;
提问者评价
真的诶,但是还是不知道为什么~~呵呵,以后能用分号绝对不用逗号了,谢谢啦
其他类似问题
c语言的相关知识
其他6条回答
for(i=0;i&10;i++)
for(j=0;j&10;j++)改为for(i=0;i&10;i++)
for(j=i;j&10;j++)
依然无法运行啊
你代码跑不起来是吧,我以为你的结果不对呢
恩,跑不起来,为什么啊,我刚学C,不太会弄
for(i=0;i&10;i++)
for(j=i;j&10;j++){if(a[i]&a[j]){temp=a[i];a[i]=a[j];a[j]=}}这样就可以了排序了,其他的代码都删了吧
单看语法就好多错误
你是刚开始学C语言吧
再说逻辑也不对
这么简单的问题搞的这么复杂
#include&stdio.h&int main(){ int i,j,temp,a[10],max,min,k,l; printf(&请输入10个数&); for(i=0;i&10;i++)
scanf(&%d&,a[i]); max=a[0]; min=a[0]; for(i=1;i&10;i++)
if(a[i]&min)
min=a[i],l=i;
else if(a[i]&max)
max=a[i],k=i; a[l]=a[l]=a[0];a[0]= a[k]=a[k]=a[9];a[9]= for(i=0;i&10;i++)
printf(&%d&,a[i]); return 0;}
#include&stdio.h&int main(){ int i,a[10],max,min,k,l; printf(&请输入10个数&); for(i=0;i&10;i++)
scanf(&%d&,a[i]); max=a[0]; min=a[0]; for(i=1;i&10;i++)
if(a[i]&min)
else if(a[i]&max)
} a[l]=a[0];a[0]= a[k]=a[9];a[9]= for(i=0;i&10;i++)
printf(&%d&,a[i]); return 0;}
我没有vc编译器,所以不能运行,我只能大概给你写下#include&stdio.h&int main(){
int max,min,num[10],i,maxi,mini,
for(i=0;i&10;i++)
scanf(&%d&, &num[i]);
max=num[0];
min=num[0];
for(i=1;i&10;i++)
if(max&num[i])
max=num[i];
if(min & num[i])
min=num[i];
temp=num[0];
num[0]=num[mini];
num[mini]=
temp=num[9];
num[9]=num[maxi];
num[maxi]=
for(i=0;i&10;i++)
printf(&%d &, num[i]);
return 0;}你运行一下,看有问题不,有问题你再说。我没法运行
#include&stdio.h&int main(){ int i,j,temp,a[10],max,min,k,l; printf(&输入&); for(i=0;i&10;i++)
scanf(&%d&,&a[i]); max=a[9]; min=a[0]; k=9; l=0; for(i=0;i&10;i++)
if(a[i]&min)
min=a[i],l=i; for(i=0;i&10;i++)
if(a[i]&max)
max=a[i],k=i; a[k]=a[k]=a[9];a[9]= a[l]=a[l]=a[0];a[0]= for(i=0;i&10;i++)
printf(&%d&,a[i]); return 0;}哪错
貌似没错,你运行出来是怎样的
错了,min=a[i],l=i;max=a[i],k=i;之前用分号,虽然不知道为什么,但是高手还是指出来了
/*请输入10个数:89 87 69 59 43 12 90 66 57 45交换前:89 87 69 59 43 12 90 66 57 45交换后:12 87 69 59 43 12 90 66 57 90Press any key to continue*/#include&stdio.h&int main() { int i,temp,a[10],max, printf(&请输入10个数:&); for(i = 0;i & 10;i++) scanf(&%d&,&a[i]); printf(&交换前: \n%d &,a[0]); max = min = a[0]; for(i = 1;i & 10;i++) {
printf(&%d &,a[i]);
if(a[i] & max) max = a[i];
if(a[i] & min) min = a[i]; } temp = a[0]; a[0] = min = temp = a[9]; a[9] = max = printf(&\n交换后:\n&); for(i = 0;i & 10;i++) printf(&%d &,a[i]); printf(&\n&); return 0;}
#include&stdio.h&int main(){ int i,j,temp,a[10]; printf(&请输入10个数:
&); for(i=0;i&10;i++)
scanf(&%d&,&a[i]); temp=a[0]; j=0; for(i=1;i&10;i++)
if(a[i]&temp)
temp=a[i]; //确保temp是最小值
} temp=a[0]; a[0]=a[j]; a[j]= temp=a[9]; j=9; for(i=0;i&9;i++)
if(a[i]&temp)
temp=a[i]; //确保temp是最大值
} temp=a[9]; a[9]=a[j]; a[j]= printf(&交换后的序列为:&); for(i=0;i&10;i++)
printf(&%d &,a[i]); printf(&\n&); return 0;} 输入时候要传地址:scanf(&%d&,&a[i]);
真的可以诶,但是我的哪错了呢,我觉得我问题补充那个和你的差不多啊
输入函数scanf的参数应该是一个地址,a[i]是一个数值,要传递它的地址,即为&a[i]。
依然告诉我停止工作啊~~
原来那个数组b没有必要,在赋值b[10]=a[10]的时候,a[10]并没有值,可以写为b[10]=a[10]='\0';表示数组结尾。
#include&stdio.h&int main(){ int i,j,temp,a[10],max,min,k,l; printf(&输入&); for(i=0;i&10;i++)
scanf(&%d&,&a[i]); max=a[9]; min=a[0]; k=9; l=0; for(i=0;i&10;i++)
if(a[i]&min)
min=a[i],l=i; for(i=0;i&10;i++)
if(a[i]&max)
max=a[i],k=i; a[k]=a[k]=a[9];a[9]= a[l]=a[l]=a[0];a[0]= for(i=0;i&10;i++)
printf(&%d&,a[i]); return 0;}哪错
//测试过是正确的,请参考下。#include&stdio.h&void main(){int i,j,k,f[10],max,min,a,b;for(i=0;i&10;i++) scanf(&%d&,&f[i]);a=b=0; max=min=f[0];for(j=1;j&10;j++){if(f[j]&max) {max=f[j];
a=j;}if(f[j]&min) {min=f[j];
b=j;}} k=f[0]; f[0]=f[b]; f[b]=k; if(f[9]!=max)
{k=f[9]; f[9]=f[a]; f[a]=k;}for(k=0;k&10;k++) printf(&%d &,f[k]);}
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁页面导航:
→ 正文内容 C++实现将一个字符串中的字符替换成另一个字符串
C++实现将一个字符串中的字符替换成另一个字符串的方法
这篇文章主要介绍了C++实现将一个字符串中的字符替换成另一个字符串的方法,需要考虑的情况比较全面,有不错的借鉴价值,需要的朋友可以参考下
本文实例讲述了C++实现将一个字符串中的字符替换成另一个字符串的方法,分享给大家供大家参考。具体方法如下:
题目要求:
原地实现字符串中的每个空格替换成"%20",例如输入"We are happy", 输出"We%20are%20happy"
被替换的字符串当然不仅仅是空格,上面只是个例子
这是道很好的题目,也是百度面试中的一道题,题目不难,但是问题得考虑全面。这里给出如下实现代码:
#include &iostream&
#include &vector&
#include &cassert&
int findNumberFirst(const char *str, const char *dest, vector&int&& pvec)
if (str == NULL || dest == NULL)
int pos = 0;
int lenStr = strlen(str);
int lenDest = strlen(dest);
if (lenStr & lenDest)
int count = 0;
while (pos &= lenStr - lenDest)
if (strncmp(str + pos, dest, strlen(dest)) == 0)
pvec.push_back(pos);
pos += lenD
int findNumberLast(const char *str, const char *dest, vector&int& &pvec)
if (str == NULL || dest == NULL)
int strLen = strlen(str);
int destLen = strlen(dest);
if (strLen & destLen)
int pos = 0;
while (pos &= strLen - destLen)
if (strncmp(str + pos, dest, strlen(dest)) == 0)
pos += destL
pvec.push_back(pos - 1);
return pvec.size();
void replaceArray(char *str, const char *src, const char *dest)
if (str == NULL || src == NULL || dest == NULL)
vector&int&
int strLen = strlen(str);
int srcLen = strlen(src);
int destLen = strlen(dest);
if (strLen & srcLen)
int posBefore = 0;
int posAfter = 0;
if (srcLen & destLen)
int count = findNumberLast(str, src, pvec);
if (count &= 0)
posAfter = strLen + count * (destLen - srcLen) - 1;
posBefore = strLen - 1;
while (count & 0 && posBefore &= 0)
if (pvec[count - 1] == posBefore)
posAfter -= destL
strncpy(str + posAfter + 1, dest, strlen(dest));
posBefore--;
str[posAfter--] = str[posBefore--];
else if (strLen & destLen)
int count = findNumberFirst(str, src, pvec);
if (count &= 0)
posAfter = 0;
posBefore = 0;
int i = 0;
while (count &= 0 && posBefore & strLen)
if (count & 0 && pvec[i] == posBefore)
strncpy(str + posAfter, dest, strlen(dest));
posAfter += destL
posBefore += srcL
str[posAfter++] = str[posBefore++];
str[posAfter] = '\0';
void main()
char *str = new char[100];
if (str == NULL)
memset(str, '\0', 100);
const char *src = " ";
const char *dest = "%20";
//case1: 只有1个空格
strcpy(str, " ");
replaceArray(str, src, dest);
cout && "str: " && str &&
replaceArray(str, dest, src);
cout && "str: " && str &&
//case2: 两个空格
strcpy(str, " ");
replaceArray(str, src, dest);
cout && "str: " && str &&
replaceArray(str, dest, src);
cout && "str: " && str &&
//case3: 正常情况
strcpy(str, "we are happy");
replaceArray(str, src, dest);
cout && "str: " && str &&
replaceArray(str, dest, src);
cout && "str: " && str &&
//case3: 空格在前
strcpy(str, " we are happy");
replaceArray(str, src, dest);
cout && "str: " && str &&
replaceArray(str, dest, src);
cout && "str: " && str &&
//case4: 空格在后
strcpy(str, "we are happy ");
replaceArray(str, src, dest);
cout && "str: " && str &&
replaceArray(str, dest, src);
cout && "str: " && str &&
//case4: 没空格
strcpy(str, "wearehappy");
replaceArray(str, src, dest);
cout && "str: " && str &&
replaceArray(str, dest, src);
cout && "str: " && str &&
//case5: 两边一样
strcpy(str, "we are happy");
replaceArray(str, src, dest);
cout && "str: " && str &&
src = "%20";
assert(dest == "%20");
replaceArray(str, dest, src);
cout && "str: " && str &&
分析上述代码,很有意思的一个情况是srcLen和destLen或大或小的情形,其边界条件的判定不一样。比如we are happy为例子,从后往前拷贝时,count=2。
在count=0时,恰好将最前面的空格替换完成,we则不用重复拷贝。但是对于从前往后拷贝,当count=0时,最后面的happy将不会被拷贝。
希望本文所述实例对大家C++程序算法设计的学习有所帮助。
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行C语言数据类型及表示范围_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
C语言数据类型及表示范围|C​语​言​数​据​类​型​和​表​示
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢

我要回帖

更多关于 超级批量文本替换 的文章

 

随机推荐