三道C语言题目。关于字符串的,谢谢了。
发布网友
发布时间:2022-04-29 22:59
我来回答
共2个回答
热心网友
时间:2022-06-25 05:56
#include <stdio.h>
int length(char *c){
if(c==NULL)
return 0;
int i;
for(i=0;c[i];i++);
return i;
}
void first(){
printf("第一题 请输入字符串 长度小于100\n");
char c[100];
scanf("%s",c);
for(int i=0;i<length(c);i++){
for(int j=0;j<length-i-1;j++){
if(c[j]>c[j+1]){
char p=c[j];
c[j]=c[j+1];
c[j+1]=p;
}
}
}
printf("%s\n",c);
}
bool iszi(char *c1,char *c2){
for(int i=0;c2[i];i++){
if(c1[i]!=c2[i]){
return false;
}
}
return true;
}
void sen(){
printf("第二题 请输入母字符串\n");
char c1[100];
char c2[100];
scanf("%s",c1);
printf("请输入子串\n");
scanf("%s",c2);
int count=0;
for(int i=0;c1[i];i++){
if(iszi(c1+i,c2))
count++;
}
printf("一共有%d个子串\n",count);
}
void disan(){
printf("第三题 请输入字符串 长度小于100\n");
char c[100];
int count =0;
int m[50];
int state=0;
for(int i=0;c[i];i++){
if(state==0&&c[i]<='9'&&c[i]>='0'){
state=1;
m[count]=c[i]-'0';
}else if(state==1){
if(c[i]<='9'&&c[i]>='0'){
m[count]*=10;
m[count]+=c[i]-'0';
}else{
state=1;
count++;
}
}
}
printf("数字有\n");
for(int i=0;i<count;i++){
printf("%d\n",m[i]);
}
}
void main(){
first();
sen();
disan();
}
热心网友
时间:2022-06-25 05:56
1.
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int comp(const void *a,const void *b)
{
return *(const char *)a-*(const char *)b;
}
int main(void)
{
char str[80];
scanf("%79s",str);
qsort(str,strlen(str),sizeof(char),comp);
puts(str);
return 0;
}
//---------------------------------------------------------------------------
2.
//---------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
int findout(const char *str,const char *sub)
{
int i,j,cnt=0;
if (strlen(sub)>strlen(str)) return -1;
for (i = 0; i<strlen(str)-strlen(sub); i++) {
for (j=0; j<strlen(sub); j++)
if (str[i+j]!=sub[j]) break;
if (j>=strlen(sub)) ++cnt;
}
return cnt;
}
int main(void)
{
char str[80],substr[80];
int i,cnt=0,j;
scanf("%s",str);
scanf("%s",substr);
printf("%d\n",findout(str,substr));
return 0;
}
//---------------------------------------------------------------------------
3.
//---------------------------------------------------------------------------
#include <stdio.h>
#include <math.h>
#include <ctype.h>
int main(void)
{
char a[80];
int b[80],i,j=0;
scanf("%s",a);
for (i = 0; a[i]; ) {
if (!isdigit(a[i])) {
++i;
}
else{
sscanf(&a[i],"%d",&b[j]);
i+=(int)floor(log10(b[j++]))+1;
}
}
for (i = 0; i<j; i++) {
printf("%d\n",b[i]);
}
return 0;
}
//---------------------------------------------------------------------------