给你3个函数:
strcmp 比较两个字符串的大小
strcat 将两个字符串拼接在一起
strlwr 将字符串中的大小英文字符转换成小写
详细请参考:睿腾编程网-C语言-132 C语言函数(二)
全部完成,分给我吧
1 sum=9,count=3
2 12450241245024124502412450241245024124502412450241245024
3 24
4 15
编程:
1从键盘上输入10个数,用起泡法对这10个数排从小到大的顺序排序后输出
#include"stdioh"
void ques1()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<=8;j++)
for(i=0;i<=9-j;i++)
if (a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers :\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
}
2求Fibonacci数列的前10项
#include "stdioh"
void ques2()
{
int x=1,y=0,i;
for(i=1;i<=5;i++)
{x=x+y;
y=x+y;
printf(" %d %d",x,y);
}
printf("\n");
}
3用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能
char strcat(char target,const char source)
{
char original=target;
while(target) target++; // Find the end of the string
while(target++=source++);
return(original);
}
char strcpy(char destination, const char source)
{
while(destinaton++=source++);
return (destination-1);
}
int strcmp(const char str1,const char str2)
{
while((str1==str2)&&(str1))
{
str1++;
str2++;
}
if((str1==str2)&&(!str1)) //Same strings
return o;
else if((str1)&&(!str2)) //Same but str1 longer
return -1;
else if((str2)&&(!str1)) //Same but str2 longer
else
return((str1>str2)-1:1);
}
int strlen(const char string)
{
int i=0;
while(string[i]) i++;
return i;
}
char strlwr(char s)
{
for(int i=0;s[i]!='\0';i++)
if(s[i]>'A'&&s[i]<'Z')
s[i]=s[i]-'A'+'a';
return s;
}
4求一个3×3矩阵对角线之和
float ques4(float a,int size=3)
{
float sum;
for(i=0;i<size;i++)
sum=sum+a[isize+i];
return sum;
}
5求一个6×6矩阵的最大值及其下标
float ques5(float a,int size=6)
{
int i=0,j=0;
float max=a[isize+j];
for(int m=0;m<size;m++)
for(int n=0;n<size;n++)
if(max<a[msize+n])
{max=a[msize+n];i=m;j=n;}
printf("max is a[%d][%d]: %g\n",i,j,max);
return max;
}
6用递归函数求n!
int ques6(int n)
{
if(n=0) return 1;
else return nques6(n-1);
}
7写一个函数,输入一个4位数字,要求输出这4个数字字符,每两个数字字符间空一个空格
main()
{
int n;
scanf("%d",&n);
printf(ques7);
}
char ques7(int n)
{
static char a[8];
a[0]=n/1000+'0';
a[1]=' ';
a[2]=(n%1000)/100+'0';
a[3]=' ';
a[4]=(n%100)/10+'0';
a[5]=' ';
a[6]=n%10+'0';
a[7]='\0';
return &a[0];
}
8输入两个整数,求它们相除的余数,用带参的宏来实现
#define ques8(a,b) a%b
main()
{
int a,b;
scanf("%d,%d",&a,&b);
printf("%d%%%d=%d",a,b,ques8(a,b));
}
1输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换
#include"stdioh"
#include"stdlibh"
main()
{
int a;
a=(int )malloc(10sizeof(int));
for(int i=0;i<10;i++)
scanf("%d",a+i);
int pmin=a,pmax=a;
for(i=0;i<10;i++)
{
if((a+i)<pmin){pmin=a+i;}
if((a+i)>pmax){pmax=a+i;}
}
int t;
t=pmin;pmin=a;a=t;
t=pmax;pmax=(a+9);(a+9)=t;
}
2用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能
char strcat(char target,const char source)
{
char original=target;
while(target) target++; // Find the end of the string
while(target++=source++);
return(original);
}
char strcpy(char destination, const char source)
{
while(destinaton++=source++);
return (destination-1);
}
int strcmp(const char str1,const char str2)
{
while((str1==str2)&&(str1))
{
str1++;
str2++;
}
if((str1==str2)&&(!str1)) //Same strings
return o;
else if((str1)&&(!str2)) //Same but str1 longer
return -1;
else if((str2)&&(!str1)) //Same but str2 longer
else
return((str1>str2)-1:1);
}
int strlen(const char string)
{
int i=0;
while(string[i]) i++;
return i;
}
char strlwr(char s)
{
for(int i=0;s[i]!='\0';i++)
if(s[i]>'A'&&s[i]<'Z')
s[i]=s[i]-'A'+'a';
return s;
}
全部完成,分给我吧
写好了
#pragma warning(disable:4786)
#include<fstream>
#include<string>
#include<iostream>
#include <iomanip>
#include<vector>
#include <set>
#include <cctype>
//by wangtk1982
using namespace std;
struct WORDS
{
string str;
int line;
}words;
int main()
{
vector<WORDS>data;
set<string>tsdata;
string sFilePath,sline;
cin>>sFilePath;
int lines=0;
ifstream file(sFilePathc_str());
if(!file)
{
cerr<<"Cann't open file:"<<sFilePath<<endl;
return 0;
} ;
while(getline(file,sline,'\n'))
{
for(int i=0;i <slinesize();++i)
sline[i]=isalnum(sline[i])sline[i]:' ';
lines++;
char p = strtok ((char)slinec_str()," ");
while(p!=NULL)
{
wordsstr=strlwr(p);
wordsline=lines;
datapush_back(words);
tsdatainsert(wordsstr);
p = strtok(NULL," ");
}
}
for (set<string>::iterator it = tsdatabegin();it != tsdataend(); it++)
{
cout <<setiosflags(ios::left)<<setw(16)<<(it);
for (vector<WORDS>::iterator it1 =databegin();it1 != dataend(); it1++)
if((it)==((it1)str))
cout <<setw(4)<<(it1)line;
cout<<endl;
}
return 0;
}
1自己编写程序
2利用MFC中CString类方法,!!!工程一定要设置为多线程,工程-》设置-》c/c++-》code generation下使用运行时库设置为multithreaded 不是发布版就用debug的
#include <afxh>
#include<iostream>
#include <string>
using namespace std;
void main()
{
string str2;
cin>>str2;
CString str1;
str1Format("%s",str2c_str());
str1MakeUpper();//大写
cout<<(LPCTSTR)str1<<endl;
str1MakeLower();//小写
cout<<(LPCTSTR)str1<<endl;
}
3_strlwr(char); _strupr(char);方法 stringh头文件里的函数或者
strlwr(char); strupr(char);
在 C 语言中区分字母的大小写,利用 ASCII 码中大写字母和小写字母之间的转换关系(差值为 32),可以将小写字母转换为大写字母。编写程序实现,从键盘上输入一个小写字母,按回车键,程序将该小写字母转换为大写字母,并输出其 ASCII 值。
算法思想
由于大写字母与小写字母之间的差值为 32,因此小写字母转换为大写字母的方法就是将小写字母的 ASCII 码值减去 32,便可得到与之对应的大写字母。
利用 getchar 函数从键盘上输入一个小写字母,并将其赋给一个字符变量 a;然后将 a—32 的值赋给字符变量 b;最后进行输出,输出时先输出字母,再将字母以整数形式输出。其具体步骤如下:
① 定义两个字符变量 a、b;
② a=get char();
③ b=a—32;
for(j='a';j<='z';j++) 遇到‘=’、‘+’就跳出循环啦,你认为这是否能统计整个字符串
建议 int ch[26];ch[025]=0;for(i=0; i<strlen(s);++i) if(s[i]>='a' && s[i] <= 'z') ch[s[i] - 'a']++;
原因:因为C编译器在处理函数的参数时间,实参向形式参数传值自右向左逐个赋值,所以先处理右边的strupr(a),这样就先把字符数组a全变成大写,但是此时还不能立即给相应的形参传值,还必须把strlwr(a)表达式也要计算出来,然后才能逐个自右向左给形参传值,当处理strlwr(a)时间,把字符数组a又全变成小写。此时由于字符数组a中内容全变成小写,而且strupr(a)和strlwr(a)都是返回数组a的首址,所以由于此时a中已经全变成小写,故此时自右向左给形参传值,都传的是同一个a,所以输出的内容都是小写了。
不知道这样描述你是否清楚了。如果清楚了,请加分。谢谢
所有程序在win-tc和Dev-c++下运行通过。
现在所有的题目都有答案了。
第一题:
#include <stdioh>
#define N 10
int main()
{
int a[N],i,m=0,n=0,max,min,p;
p=a;
printf("Please input %d elements of the matrix :\n",N);
for(i=0;i<N;i++)
scanf("%d",p+i);
printf("The array you input is:\n");
for(i=0;i<N;i++)
printf("%5d",(p+i));
printf("\n");
max=min=p;
for(i=1;i<N;i++)
{ if(max<(p+i))
{m=i;max=(p+i);}
if(min>(p+i))
{n=i;min=(p+i);}
}
(p+n)=p;
p=min;
(p+m)=(p+N-1);
(p+N-1)=max;
printf("The matrix you want is:\n");
for(i=0;i<N;i++)
printf("%5d",(p+i));
printf("\n");
system("pause");
return 0;
}
或者
#include <stdioh>
int main(void) / 找出队列中最小数放最左边 最大数放最右边/
{ int num[10];
/ int num[10]={9,7,3,6,2,10,1,5,8,4}; /
int max,min,i,j,k;
printf("input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
for(i=0;i<10;i++)
printf("%d ",num[i]);
printf("\n");
max=min=num[0];
for(i=1;i<10;i++)
{
if(num[i]>max)
{max=num[i];
j=i;
}
else if(num[i]<min)
{min=num[i];
k=i;
}
}
if(j!=9)
{ num[j]=num[9];num[9]=max;
}
if(k!=0)
{ num[k]=num[0];num[0]=min;
}
printf("output 10 new numbers:\n");
for(i=0;i<10;i++)
printf("%d ",num[i]);
printf("\n");
getch();
return 0;
}
第二题:
#include <stdioh>
int length(char p) / strlen()函数原型,求一个字符串的长度 /
{
int n=0;
while(p!='\0')
{ n++;
p++;
}
return(n);
}
int main(void)
{
int len;
/ int length(); /
char str[80];
printf("\nInput a string(<80 characters):");
gets(str); /如果这里用scanf()函数,那么一行中空格后的输入字符都无效/
len=length(str); /因为scanf()函数以空格或tab键或回车键结束/
printf("The string is:%s\n",str);
printf("The length of the string is %d",len);
getch();
return 0;
}
#include <stdioh> / strcmp函数原型 /
int strcmp(char p1,char p2)
{int i=0;
while ((p1+i)==(p2+i))
if ((p1+i++)=='\0') return 0; / 这里是先判断(p1+i)=='\0',然后再是i++ /
return ((p1+i)-(p2+i));
}
int main(void)
{char s1[80],s2[80];
int i,j;
char p1,p2;
printf("Input two strings:(<80 characters each)\n");
gets(s1);
gets(s2);
p1=s1;
p2=s2;
j=strcmp(p1,p2);
printf("result:%d\n",j);
getch();
return 0;
}
#include "stringh" / 计算字符串中子串出现的次数 说明:这里子串是str2,母串是str1 /
#include "stdioh"
main()
{ char str1[80],str2[80],p1,p2;
int sum=0;
printf("\nPlease input two strings\n");
gets(str1);
gets(str2);
p1=str1;p2=str2;
while(p1!='\0')
{
if(p1==p2)
{while(p1==p2&&p2!='\0')
{p1++;
p2++;}
}
else
p1++;
if(p2=='\0')
sum++;
p2=str2;
}
printf("Times of str2 appeared in str1 are:%d",sum);
getch();
}
其它类似,仿照来写。
第三题:
/从键盘上任意输入20个数,要求找出其中的素数,并将这些素数按升序排列。(必须用模块化、用指针实现)/
#include <stdioh>
#include <mathh>
#define N 20
void sort(int q,int j)
{int i,k,t;
for(i=0;i<j-1;i++) / 选择排序 /
for(k=i+1;k<j;k++)
if((q+i)>(q+k))
{t=(q+i);
(q+i)=(q+k);
(q+k)=t;
}
}
int main()
{ int i,j=0,k,flag,a[N],b[N],p,q;
p=a;
q=b;
printf("Please input %d numbers:\n",N);
for(i=0;i<N;i++)
{ flag=0;
scanf("%d",p+i);
for(k=2;k<=sqrt((p+i));k++) / 这里把判断素数放在了这里 /
if(((p+i)%k)==0){flag=1;break;}
if(flag==0)
{ (q+j)=(p+i);j++;}
}
sort(q,j);
printf("The prime you want are:\n");
for(i=0;i<j;i++)
printf("%-5d",(q+i));
getch();
return 0;
}
第七题:
/ 输入两个整数,求它们相除的余数,用带参的宏来实现 /
#include <stdioh>
#define MOD(a,b) ((a)%(b))
int main()
{ int a,b;
printf("Please input a and b:\n");
scanf("%d%d",&a,&b);
printf("%d%%%d= %d\n",a,b,MOD(a,b));
system("pause");
return 0;
}
以上就是关于输入两个字符串,比较两个字符串大小,将大的连接到小的后面,赋值给一个新串,将该串转换成小写全部的内容,包括:输入两个字符串,比较两个字符串大小,将大的连接到小的后面,赋值给一个新串,将该串转换成小写、C语言的问题、编写程序,从键盘读入一个文本文件名字(可带路径),为该文件中的所有单词建立一等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)