c语言-C语言小问题,求大神。

问题描述

C语言小问题,求大神。

题目:有三串字符,A,B,C。如果A中字符跟B中相同,则把C中字符赋给A。

#include"stdio.h"
#define N 100
void replace(char *a,char *b,char *c)
{
char *p;
p=a;
while(*a!='') //尤其注意判断等于是 == 号
{
if(*a==*b)

{*a=*c;printf("%c",*a);}

a++;
b++;
c++;
}
a=p;
printf("n");
puts(a);
printf("n");
}
int main()
{
char k[N];
char *a,*b,*c; //不能直接定义一个字符指针然后直接输入一串字符
a=b=c=k;

printf("输入第一串字符:");
gets(a);
printf("输入第二串字符:");
gets(b);
printf("输入第三串字符:");
gets(c);
replace(a,b,c);
return 0;
}

解决方案

a = new char[100];
b = new char[100];
c = new char[100];

解决方案二:

a,b,c都指向同一个数组k
你需要定义三个数组j,k,l分别给a,b,c

解决方案三:

逻辑好像有问题, 首先 应该比较两个字符的长度 如果长度不一样 就直接return ; 其次 在做比较的时候 发现其中有一个 字符不一样 也要return 最好把 函数改成有返回值的 return -1 说明失败。 成功则返回 长度。

解决方案四:

还有 你main 函数中 a,b,c 是地址; 都指向K? 不是3个指针 同一个指向么?-。-

解决方案五:

就像大家说的这样,你主函数调用有问题。a,b,c都用的一个字符串数组,这样当然看不到任何效果咯!!

解决方案六:

a,b,c需要单独申请空间。

解决方案七:

感觉贴主对内存空间的分配理解的有点凌乱,如楼上所言~

时间: 2024-09-12 16:00:43

c语言-C语言小问题,求大神。的相关文章

c语言-C语言的一个程序,求大神

问题描述 C语言的一个程序,求大神 三.实验内容 1.实验题目:手动输入10个0~100之内的整数,按从小到大排列输出.: (1)要求 排序算法: 使数组从小到大排序的规则如下: ⑴ 设数组为a[0],a[1],-,a[n-1],构造i循环从0,1,-,n-2变化,构造j循环从i+1,i+2,-,n-1变化,即j>i. ⑵ 对于任何一个a[i],如果a[i]>a[j],表面前面有一个元素a[i]比它后面的元素a[j]大,a[i]应该在后面,a[j]应该在前面,交换a[i]与a[j]. ⑶ 对于

基础-请问一个C语言奇怪的问题,求大神

问题描述 请问一个C语言奇怪的问题,求大神 //加了所有需要的头文件intmain(int argc char **argv){ struct event timeout; struct timeval tv; struct event_base *base; int flags; //printf(""pathvar=%s""getenv(""PATH"")); 注释1#ifdef WIN32 WORD wVersionRe

fanbao-c语言里面的问题,求大神解决

问题描述 c语言里面的问题,求大神解决 请问一下,如果用c编写了一个闹钟,那么怎么在电脑上运行这个程序时出现的是一个时钟的样子? 解决方案 用MFC或者WIN32来做 解决方案二: 可以去学习下VC的界面编程

strcpy-c语言比较细致的问题.求大神帮我解答.

问题描述 c语言比较细致的问题.求大神帮我解答. #include#includeint main(){ int sum=0; char array[20][200]={""""}; int m=0n; float k=0; int k1=0i; scanf(""%d""&n); for(i=0;i { scanf(""%d""&sum); scanf("&qu

不懂c语言基础的问题,求大神解答。

问题描述 不懂c语言基础的问题,求大神解答. for(j=0;j<=9;j++){ scanf(""%d""&i); a[j]=i;} 这样写为什么不行? 原代码:#includeint main(){ int a[10]ijz; printf(""请输入十个数值:""); for(j=0;j<=9;j++) scanf(""%d""&i); a[j]=i;

条件语句-c语言,打孔问题,求大神指导。

问题描述 c语言,打孔问题,求大神指导. 题目,s得到一个数,他想知道这个数每一位上的数字的孔数之和,其中,1,2,3,5,7这几个数字是没有孔的,0,4,6,9都只有一个孔,而8有两个孔. 解决方案 不知道是不是这个意思 #include <stdio.h> #include <stdlib.h> #include <string.h> int holeNum[10] = { 1, 0, 0, 0, 1, 0, 1, 7, 2, 1 } ; int getHoleNu

c-C语言小数点舍入问题,求大神!!

问题描述 C语言小数点舍入问题,求大神!! 若有定义:float n:int m:则以下能实现将 n 中的数值保留小数点后两位,第三位进行四舍五入的表达式 是( B ). A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0 C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0 怎么理解怎么选的?? 解决方案 你首先要知道:float/int==float. float n要保留两位小数,就意味着要先把浮点向前移两位,即 int

c语言-C语言怎么会这样呢求大神

问题描述 C语言怎么会这样呢求大神 #include"stdio.h" int main() { float a[3][5],aver[3],zong=0; //aver存放各科目总分,zong存放总科目分数 int i,j; for(i=0;i<5;i++) { printf("请输入第%d个同学成绩(语文,数学,英语)",i+1); for(j=0;j<3;j++) scanf("%f",&a[i][j]); } for(

程序设计-这个C语言程序怎么写,求大神帮忙

问题描述 这个C语言程序怎么写,求大神帮忙 题目二十四:职工工资管理系统 功能设计要求(1-2人) 1. 输入记录:将每一个职工的姓名.ID号以及基本工资.职务工资.岗位津贴.医疗保险.公积金的数据作为一个记录.?该软件能建立一个新的数据文件或给已建立好的数据文件增加记录. 2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资. 3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示. 4.查找记录:可以对数据文件的任意记录的数据

求解决-求用c语言编写此程序,求大神们指教

问题描述 求用c语言编写此程序,求大神们指教 本题要求编写程序,打印一个高度为n的.由"*"组成的正菱形图案. 输入格式: 输入在一行中给出一个正的奇数n. 输出格式: 输出由n行星号"*"组成的菱形,如样例所示.每个星号后跟一个空格. 输入样例: 7 输出样例: * * * * * * * * 解决方案 void printDiamond(int rows) { for (int i = 1; i <= rows; i++) { int flag = (ro