12345 c++

1、以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度,请填空。请自己补充相应主程序,验证是否正确。
int mystrcat(char a[], char b[])
{
int num=0,n=0;
while(*(a+num)!= (1) ) num++;
while( (2) )
{*(a+num)=b[n];
num++;
(3) ;}
(4)
return(num);
}
2、从文本文件file1.txt中读入一个字符串,然后将其中小写字母转换成大写字母,再输出到file2.txt中。

第1个回答  2008-05-23
//1、以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度,
//请填空。请自己补充相应主程序,验证是否正确。
#include <iostream.h>
int mystrcat(char a[], char b[])
{
int num=0,n=0;
while(*(a+num)!= '\0') //判断是否到了字符串a的结尾。
num++; //这儿是为了计算字符串a的长度。
while( *(b+n)!= '\0') //判断是否到了字符串b的结尾。
{
*(a+num)=b[n];
num++;
n++ ; //将字符数组b中的元素的值放到a的后面。
}
a[num] = '\0'; //给字符组数b的末尾赋0值,以示结束。
return(num); //这儿返回的即是a中新字符串的长度。
}
int main( )
{
char a[] = "hello ";
char b[] = "the world!";
int lenth = mystrcat(a,b);
cout<<"the length of a&b is: "<<lenth<<endl;
cout<<a<<endl;
return 0;
}

//2、从文本文件file1.txt中读入一个字符串,然后将其中小写字母转换成大写
//字母,再输出到file2.txt中。
#include <iostream>
#include <fstream>
using namespace std;

int main( )
{
fstream f("in.txt");//定义读文件
ofstream fo("out.txt");//定义输出文件
f.unsetf(ios::skipws);//不忽略空格

if(!f)//如果文件不存在,则输出提示信息。
{
cout<<"open file error!"<<endl;
exit(1);
}

while(!f.eof())//一直读到文件末尾。
{
char ch = f.get();
if(islower(ch))
fo<<char(ch-32);
else
fo<<ch;
}

f.close();
fo.close();
return 0;
}
//在工程文件夹中建立in.txt文件,并在其中输入内容。则会在out.txt文件可以看到处理后的结果。
第2个回答  2008-05-23
很多人回答了.我就贴个字符串的连接程序把
要计算长度,设置个计数器即可

楼主参考下了

#include <stdio.h>
#include <stdlib.h>
#define N1 1000
#define N2 1000
int mystrcat(char a[], char b[])
{
int num=0,n=0;
while(*(a+num)!='\0')
num++;
while(*(b+n)!='\0')
{
*(a+num)=b[n];
num++;
n++;
}
*(a+num)='\0';
return(num);
}
int main()
{
char s1[N1],s2[N2];
int i,j,k;
int t1,t2;
printf("请输入第一个字符串,按回车键结束:\n");
for(i=0;i<N1;i++)
{
s1[i]=getchar();
if(s1[i]=='\n')
break;
}
t1=i;
s1[i]='\0';
printf("请输入第二个字符串,按回车键结束:\n");
for(j=0;j<N2;j++)
{
s2[j]=getchar();
if(s2[j]=='\n')
break;
}
t2=j;
s2[j]='\0';
system("cls"); //清屏函数
//输出字符串s1
printf("字符串s1为:\n");
for(i=0;i<t1;i++)
{
putchar(s1[i]);
}
putchar('\n');
//输出字符串s2
printf("字符串s2为:\n");
for(j=0;j<t2;j++)
{
putchar(s2[j]);
}
putchar('\n');
k=mystrcat(s1,s2);
//输出连接后的字符串
printf("连接后的字符串为:\n");
for(i=0;i<k;i++)
{
putchar(s1[i]);
}
printf("\n");
return 0;
}
第3个回答  2008-05-23
关于题目1 :
#include<stdio.h>
#include<string.h>
int mystrcat(char a[],char b[]);
void main()
{
char a[20] = "abc";
char b[10] = "xyz";
mystrcat(a,b);
}

int mystrcat(char a[], char b[])
{
int num=0,n=0;
while(*(a+num)!= '\0' )
num++;
while( *(b+n)!= '\0' )
{
*(a+num)=b[n];
num++;
n++ ;
}
return *a;
return(num);
}
这个用指针的我不太会,我自己写了一个 你看看:

#include<stdio.h>
#include<string.h>
void connect(char a[],char b[],char c[]);
void main()
{
char a[100];
char b[200];
char c[300];
printf("input string no1:");
gets(a);
printf("input string no2:");
gets(b);
connect(a,b,c);
printf("%s\n",c);//输出连接好的字符串;
}
void connect(char a[],char b[],char c[])
{
int i,j;
for(i=0;a[i]!='\0';i++)
{
c[i]=a[i]; //最后i++ 到下一个位置;
}
for(j=0;b[j]!='\0';j++)
{
c[i+j] = b[j];
}
if (c[i+j] = '\0')
return;
}
第二个有时间在帮你写本回答被提问者采纳
第4个回答  2008-05-23
1、
1.'\0'
2.b[n]
3.n++
4.b[n]='\0';

2、回答者: ivaniren 回答的很好,我再给个c语言的:
#include <stdio.h>

int main()
{
FILE *inf,*outf;
int tmp;

inf=fopen("file1.txt","r");
outf=fopen("file2.txt","w");

while((tmp=fgetc(inf))!=EOF)
{
if(tmp<='z'&&tmp>='a')
tmp=tmp+'A'-'a';
fputc(tmp, outf);
}
fclose(inf);
fclose(outf);
return 0;
}
第5个回答  2008-05-23
1.'\0'
2.b[n]
3.n++
4.b[n]='\0';

逐字符转换:
#include <fstream>
#include<iostream>

using namespace std;

int main()
{
ifstream inf("file1.txt");
char tmp;
ofstream outf("file2.txt");
while (inf.get(tmp))
{
outf<<(char)toupper(tmp);
}
return 0;
}
或者按字符串转换:
#include <string>
#include <fstream>
#include<iostream>

using namespace std;

int main()
{
ifstream inf("file1.txt");
string tmp;
inf>>tmp;
int i=0;
ofstream outf("file2.txt");
while (tmp[i])
{
outf<<(char)toupper(tmp[i++]);
}
return 0;
}
相似回答